Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless

+80 -29
+2 -3
drivers/net/wireless/ath/ath9k/common-beacon.c
··· 57 57 struct ath9k_beacon_state *bs) 58 58 { 59 59 struct ath_common *common = ath9k_hw_common(ah); 60 - int dtim_intval, sleepduration; 60 + int dtim_intval; 61 61 u64 tsf; 62 62 63 63 /* No need to configure beacon if we are not associated */ ··· 75 75 * last beacon we received (which may be none). 76 76 */ 77 77 dtim_intval = conf->intval * conf->dtim_period; 78 - sleepduration = ah->hw->conf.listen_interval * conf->intval; 79 78 80 79 /* 81 80 * Pull nexttbtt forward to reflect the current ··· 112 113 */ 113 114 114 115 bs->bs_sleepduration = TU_TO_USEC(roundup(IEEE80211_MS_TO_TU(100), 115 - sleepduration)); 116 + conf->intval)); 116 117 if (bs->bs_sleepduration > bs->bs_dtimperiod) 117 118 bs->bs_sleepduration = bs->bs_dtimperiod; 118 119
+1 -1
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
··· 978 978 struct ath_hw *ah = common->ah; 979 979 struct ath_htc_rx_status *rxstatus; 980 980 struct ath_rx_status rx_stats; 981 - bool decrypt_error; 981 + bool decrypt_error = false; 982 982 983 983 if (skb->len < HTC_RX_FRAME_HEADER_SIZE) { 984 984 ath_err(common, "Corrupted RX frame, dropping (len: %d)\n",
+1 -1
drivers/net/wireless/ath/ath9k/main.c
··· 502 502 * touch anything. Note this can happen early 503 503 * on if the IRQ is shared. 504 504 */ 505 - if (test_bit(ATH_OP_INVALID, &common->op_flags)) 505 + if (!ah || test_bit(ATH_OP_INVALID, &common->op_flags)) 506 506 return IRQ_NONE; 507 507 508 508 /* shared irq, not for us */
+10
drivers/net/wireless/brcm80211/Kconfig
··· 27 27 one of the bus interface support. If you choose to build a module, 28 28 it'll be called brcmfmac.ko. 29 29 30 + config BRCMFMAC_PROTO_BCDC 31 + bool 32 + 33 + config BRCMFMAC_PROTO_MSGBUF 34 + bool 35 + 30 36 config BRCMFMAC_SDIO 31 37 bool "SDIO bus interface support for FullMAC driver" 32 38 depends on (MMC = y || MMC = BRCMFMAC) 33 39 depends on BRCMFMAC 40 + select BRCMFMAC_PROTO_BCDC 34 41 select FW_LOADER 35 42 default y 36 43 ---help--- ··· 49 42 bool "USB bus interface support for FullMAC driver" 50 43 depends on (USB = y || USB = BRCMFMAC) 51 44 depends on BRCMFMAC 45 + select BRCMFMAC_PROTO_BCDC 52 46 select FW_LOADER 53 47 ---help--- 54 48 This option enables the USB bus interface support for Broadcom ··· 60 52 bool "PCIE bus interface support for FullMAC driver" 61 53 depends on BRCMFMAC 62 54 depends on PCI 55 + depends on HAS_DMA 56 + select BRCMFMAC_PROTO_MSGBUF 63 57 select FW_LOADER 64 58 ---help--- 65 59 This option enables the PCIE bus interface support for Broadcom
+6 -4
drivers/net/wireless/brcm80211/brcmfmac/Makefile
··· 30 30 fwsignal.o \ 31 31 p2p.o \ 32 32 proto.o \ 33 - bcdc.o \ 34 - commonring.o \ 35 - flowring.o \ 36 - msgbuf.o \ 37 33 dhd_common.o \ 38 34 dhd_linux.o \ 39 35 firmware.o \ 40 36 feature.o \ 41 37 btcoex.o \ 42 38 vendor.o 39 + brcmfmac-$(CONFIG_BRCMFMAC_PROTO_BCDC) += \ 40 + bcdc.o 41 + brcmfmac-$(CONFIG_BRCMFMAC_PROTO_MSGBUF) += \ 42 + commonring.o \ 43 + flowring.o \ 44 + msgbuf.o 43 45 brcmfmac-$(CONFIG_BRCMFMAC_SDIO) += \ 44 46 dhd_sdio.o \ 45 47 bcmsdh.o
+5 -2
drivers/net/wireless/brcm80211/brcmfmac/bcdc.h
··· 16 16 #ifndef BRCMFMAC_BCDC_H 17 17 #define BRCMFMAC_BCDC_H 18 18 19 - 19 + #ifdef CONFIG_BRCMFMAC_PROTO_BCDC 20 20 int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr); 21 21 void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr); 22 - 22 + #else 23 + static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; } 24 + static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {} 25 + #endif 23 26 24 27 #endif /* BRCMFMAC_BCDC_H */
+9 -3
drivers/net/wireless/brcm80211/brcmfmac/fweh.c
··· 185 185 ifevent->action, ifevent->ifidx, ifevent->bssidx, 186 186 ifevent->flags, ifevent->role); 187 187 188 - if (ifevent->flags & BRCMF_E_IF_FLAG_NOIF) { 188 + /* The P2P Device interface event must not be ignored 189 + * contrary to what firmware tells us. The only way to 190 + * distinguish the P2P Device is by looking at the ifidx 191 + * and bssidx received. 192 + */ 193 + if (!(ifevent->ifidx == 0 && ifevent->bssidx == 1) && 194 + (ifevent->flags & BRCMF_E_IF_FLAG_NOIF)) { 189 195 brcmf_dbg(EVENT, "event can be ignored\n"); 190 196 return; 191 197 } ··· 216 210 return; 217 211 } 218 212 219 - if (ifevent->action == BRCMF_E_IF_CHANGE) 213 + if (ifp && ifevent->action == BRCMF_E_IF_CHANGE) 220 214 brcmf_fws_reset_interface(ifp); 221 215 222 216 err = brcmf_fweh_call_event_handler(ifp, emsg->event_code, emsg, data); 223 217 224 - if (ifevent->action == BRCMF_E_IF_DEL) { 218 + if (ifp && ifevent->action == BRCMF_E_IF_DEL) { 225 219 brcmf_fws_del_interface(ifp); 226 220 brcmf_del_if(drvr, ifevent->bssidx); 227 221 }
+2
drivers/net/wireless/brcm80211/brcmfmac/fweh.h
··· 172 172 #define BRCMF_E_IF_ROLE_STA 0 173 173 #define BRCMF_E_IF_ROLE_AP 1 174 174 #define BRCMF_E_IF_ROLE_WDS 2 175 + #define BRCMF_E_IF_ROLE_P2P_GO 3 176 + #define BRCMF_E_IF_ROLE_P2P_CLIENT 4 175 177 176 178 /** 177 179 * definitions for event packet validation.
+9 -2
drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
··· 15 15 #ifndef BRCMFMAC_MSGBUF_H 16 16 #define BRCMFMAC_MSGBUF_H 17 17 18 + #ifdef CONFIG_BRCMFMAC_PROTO_MSGBUF 18 19 19 20 #define BRCMF_H2D_MSGRING_CONTROL_SUBMIT_MAX_ITEM 20 20 21 #define BRCMF_H2D_MSGRING_RXPOST_SUBMIT_MAX_ITEM 256 ··· 33 32 34 33 35 34 int brcmf_proto_msgbuf_rx_trigger(struct device *dev); 35 + void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid); 36 36 int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr); 37 37 void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr); 38 - void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid); 39 - 38 + #else 39 + static inline int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr) 40 + { 41 + return 0; 42 + } 43 + static inline void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr) {} 44 + #endif 40 45 41 46 #endif /* BRCMFMAC_MSGBUF_H */
+8 -3
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
··· 498 498 static void 499 499 brcmf_cfg80211_update_proto_addr_mode(struct wireless_dev *wdev) 500 500 { 501 - struct net_device *ndev = wdev->netdev; 502 - struct brcmf_if *ifp = netdev_priv(ndev); 501 + struct brcmf_cfg80211_vif *vif; 502 + struct brcmf_if *ifp; 503 + 504 + vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev); 505 + ifp = vif->ifp; 503 506 504 507 if ((wdev->iftype == NL80211_IFTYPE_ADHOC) || 505 508 (wdev->iftype == NL80211_IFTYPE_AP) || ··· 4967 4964 struct brcmu_chan ch; 4968 4965 int i; 4969 4966 4970 - for (i = 0; i <= total; i++) { 4967 + for (i = 0; i < total; i++) { 4971 4968 ch.chspec = (u16)le32_to_cpu(chlist->element[i]); 4972 4969 cfg->d11inf.decchspec(&ch); 4973 4970 ··· 5192 5189 5193 5190 ch.band = BRCMU_CHAN_BAND_2G; 5194 5191 ch.bw = BRCMU_CHAN_BW_40; 5192 + ch.sb = BRCMU_CHAN_SB_NONE; 5195 5193 ch.chnum = 0; 5196 5194 cfg->d11inf.encchspec(&ch); 5197 5195 ··· 5226 5222 5227 5223 brcmf_update_bw40_channel_flag(&band->channels[j], &ch); 5228 5224 } 5225 + kfree(pbuf); 5229 5226 } 5230 5227 return err; 5231 5228 }
+12 -4
drivers/nfc/microread/microread.c
··· 501 501 targets->sens_res = 502 502 be16_to_cpu(*(u16 *)&skb->data[MICROREAD_EMCF_A_ATQA]); 503 503 targets->sel_res = skb->data[MICROREAD_EMCF_A_SAK]; 504 - memcpy(targets->nfcid1, &skb->data[MICROREAD_EMCF_A_UID], 505 - skb->data[MICROREAD_EMCF_A_LEN]); 506 504 targets->nfcid1_len = skb->data[MICROREAD_EMCF_A_LEN]; 505 + if (targets->nfcid1_len > sizeof(targets->nfcid1)) { 506 + r = -EINVAL; 507 + goto exit_free; 508 + } 509 + memcpy(targets->nfcid1, &skb->data[MICROREAD_EMCF_A_UID], 510 + targets->nfcid1_len); 507 511 break; 508 512 case MICROREAD_GATE_ID_MREAD_ISO_A_3: 509 513 targets->supported_protocols = ··· 515 511 targets->sens_res = 516 512 be16_to_cpu(*(u16 *)&skb->data[MICROREAD_EMCF_A3_ATQA]); 517 513 targets->sel_res = skb->data[MICROREAD_EMCF_A3_SAK]; 518 - memcpy(targets->nfcid1, &skb->data[MICROREAD_EMCF_A3_UID], 519 - skb->data[MICROREAD_EMCF_A3_LEN]); 520 514 targets->nfcid1_len = skb->data[MICROREAD_EMCF_A3_LEN]; 515 + if (targets->nfcid1_len > sizeof(targets->nfcid1)) { 516 + r = -EINVAL; 517 + goto exit_free; 518 + } 519 + memcpy(targets->nfcid1, &skb->data[MICROREAD_EMCF_A3_UID], 520 + targets->nfcid1_len); 521 521 break; 522 522 case MICROREAD_GATE_ID_MREAD_ISO_B: 523 523 targets->supported_protocols = NFC_PROTO_ISO14443_B_MASK;
+3 -2
drivers/nfc/st21nfca/Makefile
··· 2 2 # Makefile for ST21NFCA HCI based NFC driver 3 3 # 4 4 5 - st21nfca_i2c-objs = i2c.o 5 + st21nfca_hci-objs = st21nfca.o st21nfca_dep.o 6 + obj-$(CONFIG_NFC_ST21NFCA) += st21nfca_hci.o 6 7 7 - obj-$(CONFIG_NFC_ST21NFCA) += st21nfca.o st21nfca_dep.o 8 + st21nfca_i2c-objs = i2c.o 8 9 obj-$(CONFIG_NFC_ST21NFCA_I2C) += st21nfca_i2c.o
+3 -2
drivers/nfc/st21nfcb/Makefile
··· 2 2 # Makefile for ST21NFCB NCI based NFC driver 3 3 # 4 4 5 - st21nfcb_i2c-objs = i2c.o 5 + st21nfcb_nci-objs = ndlc.o st21nfcb.o 6 + obj-$(CONFIG_NFC_ST21NFCB) += st21nfcb_nci.o 6 7 7 - obj-$(CONFIG_NFC_ST21NFCB) += st21nfcb.o ndlc.o 8 + st21nfcb_i2c-objs = i2c.o 8 9 obj-$(CONFIG_NFC_ST21NFCB_I2C) += st21nfcb_i2c.o
+1 -1
net/mac80211/sta_info.c
··· 1823 1823 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE; 1824 1824 if (sdata->vif.bss_conf.use_short_slot) 1825 1825 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME; 1826 - sinfo->bss_param.dtim_period = sdata->local->hw.conf.ps_dtim_period; 1826 + sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period; 1827 1827 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int; 1828 1828 1829 1829 sinfo->sta_flags.set = 0;
+2 -1
net/rfkill/rfkill-gpio.c
··· 54 54 if (blocked && !IS_ERR(rfkill->clk) && rfkill->clk_enabled) 55 55 clk_disable(rfkill->clk); 56 56 57 - rfkill->clk_enabled = blocked; 57 + rfkill->clk_enabled = !blocked; 58 58 59 59 return 0; 60 60 } ··· 163 163 { "LNV4752", RFKILL_TYPE_GPS }, 164 164 { }, 165 165 }; 166 + MODULE_DEVICE_TABLE(acpi, rfkill_acpi_match); 166 167 #endif 167 168 168 169 static struct platform_driver rfkill_gpio_driver = {
+6
net/wireless/nl80211.c
··· 7028 7028 struct nlattr *data = ((void **)skb->cb)[2]; 7029 7029 enum nl80211_multicast_groups mcgrp = NL80211_MCGRP_TESTMODE; 7030 7030 7031 + /* clear CB data for netlink core to own from now on */ 7032 + memset(skb->cb, 0, sizeof(skb->cb)); 7033 + 7031 7034 nla_nest_end(skb, data); 7032 7035 genlmsg_end(skb, hdr); 7033 7036 ··· 9359 9356 struct cfg80211_registered_device *rdev = ((void **)skb->cb)[0]; 9360 9357 void *hdr = ((void **)skb->cb)[1]; 9361 9358 struct nlattr *data = ((void **)skb->cb)[2]; 9359 + 9360 + /* clear CB data for netlink core to own from now on */ 9361 + memset(skb->cb, 0, sizeof(skb->cb)); 9362 9362 9363 9363 if (WARN_ON(!rdev->cur_cmd_info)) { 9364 9364 kfree_skb(skb);