From: John W. Linville Date: Mon, 28 Jan 2013 18:54:03 +0000 (-0500) Subject: Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=9ebea3829fac7505e0cd2642fbd13cfa9c038831;p=openwrt%2Fstaging%2Fblogic.git Merge branch 'master' of git://git./linux/kernel/git/linville/wireless Conflicts: drivers/net/wireless/ath/ath9k/main.c drivers/net/wireless/iwlwifi/dvm/tx.c --- 9ebea3829fac7505e0cd2642fbd13cfa9c038831 diff --cc drivers/net/wireless/ath/ath9k/ar9003_calib.c index 9221f32a322e,56317b0fb6b6..4cc13940c895 --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c @@@ -1022,7 -971,13 +1022,9 @@@ static bool ar9003_hw_init_cal(struct a u32 agc_ctrl = 0, agc_supp_cals = AR_PHY_AGC_CONTROL_OFFSET_CAL | AR_PHY_AGC_CONTROL_FLTR_CAL | AR_PHY_AGC_CONTROL_PKDET_CAL; - int i, j; - u32 cl_idx[AR9300_MAX_CHAINS] = { AR_PHY_CL_TAB_0, - AR_PHY_CL_TAB_1, - AR_PHY_CL_TAB_2 }; + ar9003_hw_set_chain_masks(ah, ah->caps.rx_chainmask, ah->caps.tx_chainmask); + if (rtt) { if (!ar9003_hw_rtt_restore(ah, chan)) run_rtt_cal = true; diff --cc drivers/net/wireless/ath/ath9k/ath9k.h index 885affd28f6e,42794c546a40..b2d6c18d1678 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h @@@ -314,9 -317,9 +314,8 @@@ struct ath_rx u32 *rxlink; u32 num_pkts; unsigned int rxfilter; - spinlock_t rxbuflock; struct list_head rxbuf; struct ath_descdma rxdma; - struct ath_buf *rx_bufptr; struct ath_rx_edma rx_edma[ATH9K_RX_QUEUE_MAX]; struct sk_buff *frag; diff --cc drivers/net/wireless/ath/ath9k/hw.h index 0a3a1af007f7,9d26fc56ca56..784e81ccb903 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h @@@ -1096,9 -1066,10 +1096,10 @@@ void ar9003_paprd_setup_gain_table(stru int ar9003_paprd_init_table(struct ath_hw *ah); bool ar9003_paprd_is_done(struct ath_hw *ah); bool ar9003_is_paprd_enabled(struct ath_hw *ah); + void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); /* Hardware family op attach helpers */ -void ar5008_hw_attach_phy_ops(struct ath_hw *ah); +int ar5008_hw_attach_phy_ops(struct ath_hw *ah); void ar9002_hw_attach_phy_ops(struct ath_hw *ah); void ar9003_hw_attach_phy_ops(struct ath_hw *ah); diff --cc drivers/net/wireless/ath/ath9k/main.c index 3e5082c5f5f0,dd91f8fdc01c..4b72b660f180 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@@ -182,7 -182,7 +182,7 @@@ static void ath_restart_work(struct ath ath_start_ani(sc); } - static bool ath_prepare_reset(struct ath_softc *sc, bool flush) -static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx) ++static bool ath_prepare_reset(struct ath_softc *sc) { struct ath_hw *ah = sc->sc_ah; bool ret = true; @@@ -196,20 -196,12 +196,12 @@@ ath9k_debug_samp_bb_mac(sc); ath9k_hw_disable_interrupts(ah); - if (!ath_stoprecv(sc)) + if (!ath_drain_all_txq(sc)) ret = false; - if (!ath_drain_all_txq(sc, retry_tx)) + if (!ath_stoprecv(sc)) ret = false; - if (!flush) { - if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - ath_rx_tasklet(sc, 1, true); - ath_rx_tasklet(sc, 1, false); - } else { - ath_flushrecv(sc); - } - return ret; } @@@ -278,8 -271,7 +270,7 @@@ static int ath_reset_internal(struct at hchan = ah->curchan; } - if (!ath_prepare_reset(sc, flush)) - if (!ath_prepare_reset(sc, retry_tx)) ++ if (!ath_prepare_reset(sc)) fastcc = false; ath_dbg(common, CONFIG, "Reset to %u MHz, HT40: %d fastcc: %d\n", @@@ -801,7 -797,7 +794,7 @@@ static void ath9k_stop(struct ieee80211 ath9k_hw_cfg_gpio_input(ah, ah->led_pin); } - ath_prepare_reset(sc, true); - ath_prepare_reset(sc, false); ++ ath_prepare_reset(sc); if (sc->rx.frag) { dev_kfree_skb_any(sc->rx.frag); diff --cc drivers/net/wireless/iwlwifi/dvm/tx.c index b0aad71c12a0,31534f7c0548..6b01fc195940 --- a/drivers/net/wireless/iwlwifi/dvm/tx.c +++ b/drivers/net/wireless/iwlwifi/dvm/tx.c @@@ -1205,8 -1218,14 +1210,15 @@@ int iwlagn_rx_reply_tx(struct iwl_priv freed++; } + if (tid != IWL_TID_NON_QOS) { + priv->tid_data[sta_id][tid].next_reclaimed = + next_reclaimed; + IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n", + next_reclaimed); + } + - WARN_ON(!is_agg && freed != 1); + if (!is_agg && freed != 1) + IWL_ERR(priv, "Q: %d, freed %d\n", txq_id, freed); /* * An offchannel frame can be send only on the AUX queue, where