diff options
Diffstat (limited to 'drivers/net/wireless')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/debug.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/link.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c | 26 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/channel.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/trans.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 12 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 6 | 
13 files changed, 47 insertions, 24 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c index 2588848f4a8..d066f2516e4 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c @@ -2982,6 +2982,10 @@ static u32 ath9k_hw_ar9300_get_eeprom(struct ath_hw *ah,  	case EEP_RX_MASK:  		return pBase->txrxMask & 0xf;  	case EEP_PAPRD: +		if (AR_SREV_9462(ah)) +			return false; +		if (!ah->config.enable_paprd); +			return false;  		return !!(pBase->featureEnable & BIT(5));  	case EEP_CHAIN_MASK_REDUCE:  		return (pBase->miscConfiguration >> 0x3) & 0x1; diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index 68b643c8943..c8ef30127ad 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c @@ -1577,6 +1577,8 @@ int ath9k_init_debug(struct ath_hw *ah)  			    sc->debug.debugfs_phy, sc, &fops_tx_chainmask);  	debugfs_create_file("disable_ani", S_IRUSR | S_IWUSR,  			    sc->debug.debugfs_phy, sc, &fops_disable_ani); +	debugfs_create_bool("paprd", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, +			    &sc->sc_ah->config.enable_paprd);  	debugfs_create_file("regidx", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,  			    sc, &fops_regidx);  	debugfs_create_file("regval", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 48af40151d2..4faf0a39587 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -2497,10 +2497,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)  		pCap->rx_status_len = sizeof(struct ar9003_rxs);  		pCap->tx_desc_len = sizeof(struct ar9003_txc);  		pCap->txs_len = sizeof(struct ar9003_txs); -		if (!ah->config.paprd_disable && -		    ah->eep_ops->get_eeprom(ah, EEP_PAPRD) && -		    !AR_SREV_9462(ah)) -			pCap->hw_caps |= ATH9K_HW_CAP_PAPRD;  	} else {  		pCap->tx_desc_len = sizeof(struct ath_desc);  		if (AR_SREV_9280_20(ah)) diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 6599a75f01f..de6968fc64f 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h @@ -236,7 +236,6 @@ enum ath9k_hw_caps {  	ATH9K_HW_CAP_LDPC			= BIT(6),  	ATH9K_HW_CAP_FASTCLOCK			= BIT(7),  	ATH9K_HW_CAP_SGI_20			= BIT(8), -	ATH9K_HW_CAP_PAPRD			= BIT(9),  	ATH9K_HW_CAP_ANT_DIV_COMB		= BIT(10),  	ATH9K_HW_CAP_2GHZ			= BIT(11),  	ATH9K_HW_CAP_5GHZ			= BIT(12), @@ -287,12 +286,12 @@ struct ath9k_ops_config {  	u8 pcie_clock_req;  	u32 pcie_waen;  	u8 analog_shiftreg; -	u8 paprd_disable;  	u32 ofdm_trig_low;  	u32 ofdm_trig_high;  	u32 cck_trig_high;  	u32 cck_trig_low;  	u32 enable_ani; +	u32 enable_paprd;  	int serialize_regmode;  	bool rx_intr_mitigation;  	bool tx_intr_mitigation; diff --git a/drivers/net/wireless/ath/ath9k/link.c b/drivers/net/wireless/ath/ath9k/link.c index 825a29cc931..7b88b9c39cc 100644 --- a/drivers/net/wireless/ath/ath9k/link.c +++ b/drivers/net/wireless/ath/ath9k/link.c @@ -423,7 +423,7 @@ set_timer:  		cal_interval = min(cal_interval, (u32)short_cal_interval);  	mod_timer(&common->ani.timer, jiffies + msecs_to_jiffies(cal_interval)); -	if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_PAPRD) && ah->caldata) { +	if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD) && ah->caldata) {  		if (!ah->caldata->paprd_done)  			ieee80211_queue_work(sc->hw, &sc->paprd_work);  		else if (!ah->paprd_table_write_done) diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c index 49765d34b4e..7c4ee72f9d5 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c @@ -638,6 +638,8 @@ static int brcmf_sdio_pd_probe(struct platform_device *pdev)  		oobirq_entry = kzalloc(sizeof(struct brcmf_sdio_oobirq),  				       GFP_KERNEL); +		if (!oobirq_entry) +			return -ENOMEM;  		oobirq_entry->irq = res->start;  		oobirq_entry->flags = res->flags & IRQF_TRIGGER_MASK;  		list_add_tail(&oobirq_entry->list, &oobirq_lh); diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c index 2621dd3d7dc..6f70953f0ba 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c @@ -764,8 +764,11 @@ static void brcmf_c_arp_offload_set(struct brcmf_pub *drvr, int arp_mode)  {  	char iovbuf[32];  	int retcode; +	__le32 arp_mode_le; -	brcmf_c_mkiovar("arp_ol", (char *)&arp_mode, 4, iovbuf, sizeof(iovbuf)); +	arp_mode_le = cpu_to_le32(arp_mode); +	brcmf_c_mkiovar("arp_ol", (char *)&arp_mode_le, 4, iovbuf, +			sizeof(iovbuf));  	retcode = brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR,  				   iovbuf, sizeof(iovbuf));  	retcode = retcode >= 0 ? 0 : retcode; @@ -781,8 +784,11 @@ static void brcmf_c_arp_offload_enable(struct brcmf_pub *drvr, int arp_enable)  {  	char iovbuf[32];  	int retcode; +	__le32 arp_enable_le; -	brcmf_c_mkiovar("arpoe", (char *)&arp_enable, 4, +	arp_enable_le = cpu_to_le32(arp_enable); + +	brcmf_c_mkiovar("arpoe", (char *)&arp_enable_le, 4,  			iovbuf, sizeof(iovbuf));  	retcode = brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR,  				   iovbuf, sizeof(iovbuf)); @@ -800,10 +806,10 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)  	char iovbuf[BRCMF_EVENTING_MASK_LEN + 12];	/*  Room for  				 "event_msgs" + '\0' + bitvec  */  	char buf[128], *ptr; -	u32 roaming = 1; -	uint bcn_timeout = 3; -	int scan_assoc_time = 40; -	int scan_unassoc_time = 40; +	__le32 roaming_le = cpu_to_le32(1); +	__le32 bcn_timeout_le = cpu_to_le32(3); +	__le32 scan_assoc_time_le = cpu_to_le32(40); +	__le32 scan_unassoc_time_le = cpu_to_le32(40);  	int i;  	struct brcmf_bus_dcmd *cmdlst;  	struct list_head *cur, *q; @@ -829,14 +835,14 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)  	/* Setup timeout if Beacons are lost and roam is off to report  		 link down */ -	brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout, 4, iovbuf, +	brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout_le, 4, iovbuf,  		    sizeof(iovbuf));  	brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf,  				  sizeof(iovbuf));  	/* Enable/Disable build-in roaming to allowed ext supplicant to take  		 of romaing */ -	brcmf_c_mkiovar("roam_off", (char *)&roaming, 4, +	brcmf_c_mkiovar("roam_off", (char *)&roaming_le, 4,  		      iovbuf, sizeof(iovbuf));  	brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf,  				  sizeof(iovbuf)); @@ -848,9 +854,9 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)  				  sizeof(iovbuf));  	brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_SCAN_CHANNEL_TIME, -			 (char *)&scan_assoc_time, sizeof(scan_assoc_time)); +		 (char *)&scan_assoc_time_le, sizeof(scan_assoc_time_le));  	brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_SCAN_UNASSOC_TIME, -			 (char *)&scan_unassoc_time, sizeof(scan_unassoc_time)); +		 (char *)&scan_unassoc_time_le, sizeof(scan_unassoc_time_le));  	/* Set and enable ARP offload feature */  	brcmf_c_arp_offload_set(drvr, BRCMF_ARPOL_MODE); diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index c36e9231244..50b5553b696 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c @@ -500,8 +500,10 @@ static void wl_iscan_prep(struct brcmf_scan_params_le *params_le,  	params_le->active_time = cpu_to_le32(-1);  	params_le->passive_time = cpu_to_le32(-1);  	params_le->home_time = cpu_to_le32(-1); -	if (ssid && ssid->SSID_len) -		memcpy(¶ms_le->ssid_le, ssid, sizeof(struct brcmf_ssid)); +	if (ssid && ssid->SSID_len) { +		params_le->ssid_le.SSID_len = cpu_to_le32(ssid->SSID_len); +		memcpy(¶ms_le->ssid_le.SSID, ssid->SSID, ssid->SSID_len); +	}  }  static s32 diff --git a/drivers/net/wireless/brcm80211/brcmsmac/channel.c b/drivers/net/wireless/brcm80211/brcmsmac/channel.c index 7ed7d757702..64a48f06d68 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/channel.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/channel.c @@ -77,7 +77,7 @@  					 NL80211_RRF_NO_IBSS)  static const struct ieee80211_regdomain brcms_regdom_x2 = { -	.n_reg_rules = 7, +	.n_reg_rules = 6,  	.alpha2 = "X2",  	.reg_rules = {  		BRCM_2GHZ_2412_2462, diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c index 1e86ea2266d..dbeebef562d 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -1442,6 +1442,7 @@ static int iwl_trans_pcie_start_hw(struct iwl_trans *trans)  	return err;  err_free_irq: +	trans_pcie->irq_requested = false;  	free_irq(trans_pcie->irq, trans);  error:  	iwl_free_isr_ict(trans); diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h index 04c3aef8a4f..2925094b2d9 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h @@ -117,6 +117,7 @@  #define CHIP_VER_B			BIT(4)  #define CHIP_92C_BITMASK		BIT(0) +#define CHIP_UNKNOWN			BIT(7)  #define CHIP_92C_1T2R			0x03  #define CHIP_92C			0x01  #define CHIP_88C			0x00 diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c index bd0da7ef290..dd4bb0950a5 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c @@ -994,8 +994,16 @@ static enum version_8192c _rtl92ce_read_chip_version(struct ieee80211_hw *hw)  		version = (value32 & TYPE_ID) ? VERSION_A_CHIP_92C :  			   VERSION_A_CHIP_88C;  	} else { -		version = (value32 & TYPE_ID) ? VERSION_B_CHIP_92C : -			   VERSION_B_CHIP_88C; +		version = (enum version_8192c) (CHIP_VER_B | +				((value32 & TYPE_ID) ? CHIP_92C_BITMASK : 0) | +				((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0)); +		if ((!IS_CHIP_VENDOR_UMC(version)) && (value32 & +		     CHIP_VER_RTL_MASK)) { +			version = (enum version_8192c)(version | +				   ((((value32 & CHIP_VER_RTL_MASK) == BIT(12)) +				   ? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) | +				   CHIP_VENDOR_UMC)); +		}  	}  	switch (version) { diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c index 3aa927f8b9b..7d8f96405f4 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c @@ -162,10 +162,12 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)  	/* request fw */  	if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && -	    !IS_92C_SERIAL(rtlhal->version)) +	    !IS_92C_SERIAL(rtlhal->version)) {  		rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin"; -	else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) +	} else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {  		rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin"; +		pr_info("****** This B_CUT device may not work with kernels 3.6 and earlier\n"); +	}  	rtlpriv->max_fw_size = 0x4000;  	pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name);  |