diff options
Diffstat (limited to 'drivers/net/wireless/ath')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9002_calib.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_phy.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/main.c | 4 | 
7 files changed, 27 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c index 2d4c0910295..2d394af8217 100644 --- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c @@ -41,7 +41,8 @@ static bool ar9002_hw_is_cal_supported(struct ath_hw *ah,  	case ADC_DC_CAL:  		/* Run ADC Gain Cal for non-CCK & non 2GHz-HT20 only */  		if (!IS_CHAN_B(chan) && -		    !(IS_CHAN_2GHZ(chan) && IS_CHAN_HT20(chan))) +		    !((IS_CHAN_2GHZ(chan) || IS_CHAN_A_FAST_CLOCK(ah, chan)) && +		      IS_CHAN_HT20(chan)))  			supported = true;  		break;  	} diff --git a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h index 2339728a730..3e69c631ebb 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h @@ -1514,7 +1514,7 @@ static const u32 ar9300_2p2_mac_core[][2] = {  	{0x00008258, 0x00000000},  	{0x0000825c, 0x40000000},  	{0x00008260, 0x00080922}, -	{0x00008264, 0x9bc00010}, +	{0x00008264, 0x9d400010},  	{0x00008268, 0xffffffff},  	{0x0000826c, 0x0000ffff},  	{0x00008270, 0x00000000}, diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c index c34bef1bf2b..1b9400371ea 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c @@ -69,7 +69,7 @@ static int ar9003_hw_power_interpolate(int32_t x,  static const struct ar9300_eeprom ar9300_default = {  	.eepromVersion = 2,  	.templateVersion = 2, -	.macAddr = {1, 2, 3, 4, 5, 6}, +	.macAddr = {0, 2, 3, 4, 5, 6},  	.custData = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  		     0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  	.baseEepHeader = { diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c index 1baca8e4715..fcafec0605f 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c @@ -671,7 +671,7 @@ static int ar9003_hw_process_ini(struct ath_hw *ah,  		REG_WRITE_ARRAY(&ah->iniModesAdditional,  				modesIndex, regWrites); -	if (AR_SREV_9300(ah)) +	if (AR_SREV_9330(ah))  		REG_WRITE_ARRAY(&ah->iniModesAdditional, 1, regWrites);  	if (AR_SREV_9340(ah) && !ah->is_clk_25mhz) diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 9098aaad97a..722967b86cf 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -2283,7 +2283,11 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw, u8 coverage_class)  	mutex_lock(&sc->mutex);  	ah->coverage_class = coverage_class; + +	ath9k_ps_wakeup(sc);  	ath9k_hw_init_global_settings(ah); +	ath9k_ps_restore(sc); +  	mutex_unlock(&sc->mutex);  } @@ -2299,6 +2303,12 @@ static void ath9k_flush(struct ieee80211_hw *hw, bool drop)  	mutex_lock(&sc->mutex);  	cancel_delayed_work_sync(&sc->tx_complete_work); +	if (ah->ah_flags & AH_UNPLUGGED) { +		ath_dbg(common, ATH_DBG_ANY, "Device has been unplugged!\n"); +		mutex_unlock(&sc->mutex); +		return; +	} +  	if (sc->sc_flags & SC_OP_INVALID) {  		ath_dbg(common, ATH_DBG_ANY, "Device not present\n");  		mutex_unlock(&sc->mutex); diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 9a4850154fb..4c21f8cbdeb 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -205,14 +205,22 @@ static void ath_rx_remove_buffer(struct ath_softc *sc,  static void ath_rx_edma_cleanup(struct ath_softc *sc)  { +	struct ath_hw *ah = sc->sc_ah; +	struct ath_common *common = ath9k_hw_common(ah);  	struct ath_buf *bf;  	ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_LP);  	ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_HP);  	list_for_each_entry(bf, &sc->rx.rxbuf, list) { -		if (bf->bf_mpdu) +		if (bf->bf_mpdu) { +			dma_unmap_single(sc->dev, bf->bf_buf_addr, +					common->rx_bufsize, +					DMA_BIDIRECTIONAL);  			dev_kfree_skb_any(bf->bf_mpdu); +			bf->bf_buf_addr = 0; +			bf->bf_mpdu = NULL; +		}  	}  	INIT_LIST_HEAD(&sc->rx.rxbuf); diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c index 0122930b14c..0474e6638d2 100644 --- a/drivers/net/wireless/ath/carl9170/main.c +++ b/drivers/net/wireless/ath/carl9170/main.c @@ -1066,8 +1066,10 @@ static int carl9170_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,  	 * the high througput speed in 802.11n networks.  	 */ -	if (!is_main_vif(ar, vif)) +	if (!is_main_vif(ar, vif)) { +		mutex_lock(&ar->mutex);  		goto err_softw; +	}  	/*  	 * While the hardware supports *catch-all* key, for offloading  |