aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/virtual.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/virtual.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/virtual.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/net/wireless/ath/ath9k/virtual.c b/drivers/net/wireless/ath/ath9k/virtual.c
index ec7cf5ee56bc..2dc7095e56d1 100644
--- a/drivers/net/wireless/ath/ath9k/virtual.c
+++ b/drivers/net/wireless/ath/ath9k/virtual.c
@@ -107,6 +107,7 @@ int ath9k_wiphy_add(struct ath_softc *sc)
107 aphy->sc = sc; 107 aphy->sc = sc;
108 aphy->hw = hw; 108 aphy->hw = hw;
109 sc->sec_wiphy[i] = aphy; 109 sc->sec_wiphy[i] = aphy;
110 aphy->last_rssi = ATH_RSSI_DUMMY_MARKER;
110 spin_unlock_bh(&sc->wiphy_lock); 111 spin_unlock_bh(&sc->wiphy_lock);
111 112
112 memcpy(addr, common->macaddr, ETH_ALEN); 113 memcpy(addr, common->macaddr, ETH_ALEN);
@@ -186,7 +187,7 @@ static int ath9k_send_nullfunc(struct ath_wiphy *aphy,
186 info->control.rates[1].idx = -1; 187 info->control.rates[1].idx = -1;
187 188
188 memset(&txctl, 0, sizeof(struct ath_tx_control)); 189 memset(&txctl, 0, sizeof(struct ath_tx_control));
189 txctl.txq = &sc->tx.txq[sc->tx.hwq_map[WME_AC_VO]]; 190 txctl.txq = sc->tx.txq_map[WME_AC_VO];
190 txctl.frame_type = ps ? ATH9K_IFT_PAUSE : ATH9K_IFT_UNPAUSE; 191 txctl.frame_type = ps ? ATH9K_IFT_PAUSE : ATH9K_IFT_UNPAUSE;
191 192
192 if (ath_tx_start(aphy->hw, skb, &txctl) != 0) 193 if (ath_tx_start(aphy->hw, skb, &txctl) != 0)
@@ -287,7 +288,6 @@ void ath9k_wiphy_chan_work(struct work_struct *work)
287 /* sync hw configuration for hw code */ 288 /* sync hw configuration for hw code */
288 common->hw = aphy->hw; 289 common->hw = aphy->hw;
289 290
290 ath_update_chainmask(sc, sc->chan_is_ht);
291 if (ath_set_channel(sc, aphy->hw, 291 if (ath_set_channel(sc, aphy->hw,
292 &sc->sc_ah->channels[sc->chan_idx]) < 0) { 292 &sc->sc_ah->channels[sc->chan_idx]) < 0) {
293 printk(KERN_DEBUG "ath9k: Failed to set channel for new " 293 printk(KERN_DEBUG "ath9k: Failed to set channel for new "
@@ -304,13 +304,12 @@ void ath9k_wiphy_chan_work(struct work_struct *work)
304 * ath9k version of ieee80211_tx_status() for TX frames that are generated 304 * ath9k version of ieee80211_tx_status() for TX frames that are generated
305 * internally in the driver. 305 * internally in the driver.
306 */ 306 */
307void ath9k_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) 307void ath9k_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb, int ftype)
308{ 308{
309 struct ath_wiphy *aphy = hw->priv; 309 struct ath_wiphy *aphy = hw->priv;
310 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); 310 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
311 311
312 if ((tx_info->pad[0] & ATH_TX_INFO_FRAME_TYPE_PAUSE) && 312 if (ftype == ATH9K_IFT_PAUSE && aphy->state == ATH_WIPHY_PAUSING) {
313 aphy->state == ATH_WIPHY_PAUSING) {
314 if (!(tx_info->flags & IEEE80211_TX_STAT_ACK)) { 313 if (!(tx_info->flags & IEEE80211_TX_STAT_ACK)) {
315 printk(KERN_DEBUG "ath9k: %s: no ACK for pause " 314 printk(KERN_DEBUG "ath9k: %s: no ACK for pause "
316 "frame\n", wiphy_name(hw->wiphy)); 315 "frame\n", wiphy_name(hw->wiphy));
@@ -656,10 +655,9 @@ void ath9k_set_wiphy_idle(struct ath_wiphy *aphy, bool idle)
656 struct ath_softc *sc = aphy->sc; 655 struct ath_softc *sc = aphy->sc;
657 656
658 aphy->idle = idle; 657 aphy->idle = idle;
659 ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_CONFIG, 658 ath_dbg(ath9k_hw_common(sc->sc_ah), ATH_DBG_CONFIG,
660 "Marking %s as %s\n", 659 "Marking %s as %sidle\n",
661 wiphy_name(aphy->hw->wiphy), 660 wiphy_name(aphy->hw->wiphy), idle ? "" : "not-");
662 idle ? "idle" : "not-idle");
663} 661}
664/* Only bother starting a queue on an active virtual wiphy */ 662/* Only bother starting a queue on an active virtual wiphy */
665bool ath_mac80211_start_queue(struct ath_softc *sc, u16 skb_queue) 663bool ath_mac80211_start_queue(struct ath_softc *sc, u16 skb_queue)