mac80211: use offchannel queue only when supported
authorEliad Peller <eliad@wizery.com>
Sun, 13 May 2012 13:47:05 +0000 (16:47 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 5 Jun 2012 19:21:46 +0000 (15:21 -0400)
Commit 3a25a8c ("mac80211: add improved HW queue control")
added support for offchannel queue mapping. However, this
mapping is only valid when the driver supports
IEEE80211_HW_QUEUE_CONTROL.

Check whether the driver supports IEEE80211_HW_QUEUE_CONTROL
before setting the hw_queue to the mapped offchannel queue.

(This patch doesn't have any actual effect, because
hw_queue is overridden in ieee80211_tx() anyway,
so this is merely some cleanup)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/cfg.c

index 495831ee48f1b007abe235852968e9fd3bd188b5..7ad542363f0befbdbe8e72c2130333a348337513 100644 (file)
@@ -2304,7 +2304,8 @@ static int ieee80211_mgmt_tx(struct wiphy *wiphy, struct net_device *dev,
 
        IEEE80211_SKB_CB(skb)->flags = flags;
 
-       if (flags & IEEE80211_TX_CTL_TX_OFFCHAN)
+       if (local->hw.flags & IEEE80211_HW_QUEUE_CONTROL &&
+           flags & IEEE80211_TX_CTL_TX_OFFCHAN)
                IEEE80211_SKB_CB(skb)->hw_queue =
                        local->hw.offchannel_tx_hw_queue;
 
@@ -2349,8 +2350,9 @@ static int ieee80211_mgmt_tx(struct wiphy *wiphy, struct net_device *dev,
                /* modify cookie to prevent API mismatches */
                *cookie ^= 2;
                IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_CTL_TX_OFFCHAN;
-               IEEE80211_SKB_CB(skb)->hw_queue =
-                       local->hw.offchannel_tx_hw_queue;
+               if (local->hw.flags & IEEE80211_HW_QUEUE_CONTROL)
+                       IEEE80211_SKB_CB(skb)->hw_queue =
+                               local->hw.offchannel_tx_hw_queue;
                local->hw_roc_skb = skb;
                local->hw_roc_skb_for_status = skb;
                mutex_unlock(&local->mtx);