aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2014-03-27 05:30:29 -0400
committerJohannes Berg <johannes.berg@intel.com>2014-04-09 04:55:29 -0400
commit77be2c54c5bd26279abc13807398771d80cda37a (patch)
treef816128fee39360dcb34a7af786205017a46bb52
parent78f22b6a3a9254460d23060530b48ae02a9394e3 (diff)
mac80211: add vif to flush call
This will allow the low level driver to make decision based on the vif such as queues etc... Since the vif might be NULL, we can't add it to the tracing functions. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> [fix staging rtl8821ae driver] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--drivers/net/wireless/ath/ar5523/ar5523.c3
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c3
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c3
-rw-r--r--drivers/net/wireless/ath/carl9170/main.c4
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c3
-rw-r--r--drivers/net/wireless/cw1200/sta.c3
-rw-r--r--drivers/net/wireless/cw1200/sta.h3
-rw-r--r--drivers/net/wireless/iwlegacy/common.c3
-rw-r--r--drivers/net/wireless/iwlegacy/common.h3
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/mac80211.c3
-rw-r--r--drivers/net/wireless/mac80211_hwsim.c4
-rw-r--r--drivers/net/wireless/p54/main.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c3
-rw-r--r--drivers/net/wireless/rtlwifi/core.c3
-rw-r--r--drivers/net/wireless/ti/wlcore/main.c3
-rw-r--r--drivers/staging/rtl8821ae/core.c14
-rw-r--r--include/net/mac80211.h4
-rw-r--r--net/mac80211/driver-ops.h8
-rw-r--r--net/mac80211/util.c2
20 files changed, 48 insertions, 30 deletions
diff --git a/drivers/net/wireless/ath/ar5523/ar5523.c b/drivers/net/wireless/ath/ar5523/ar5523.c
index 507d9a9ee69a..f92050617ae6 100644
--- a/drivers/net/wireless/ath/ar5523/ar5523.c
+++ b/drivers/net/wireless/ath/ar5523/ar5523.c
@@ -1090,7 +1090,8 @@ static int ar5523_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
1090 return ret; 1090 return ret;
1091} 1091}
1092 1092
1093static void ar5523_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1093static void ar5523_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1094 u32 queues, bool drop)
1094{ 1095{
1095 struct ar5523 *ar = hw->priv; 1096 struct ar5523 *ar = hw->priv;
1096 1097
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 511a2f81e7af..d1df99350147 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3544,7 +3544,8 @@ static int ath10k_set_frag_threshold(struct ieee80211_hw *hw, u32 value)
3544 return ret; 3544 return ret;
3545} 3545}
3546 3546
3547static void ath10k_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 3547static void ath10k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
3548 u32 queues, bool drop)
3548{ 3549{
3549 struct ath10k *ar = hw->priv; 3550 struct ath10k *ar = hw->priv;
3550 bool skip; 3551 bool skip;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index d69853b848ce..49265c6a1a7e 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1883,7 +1883,8 @@ static bool ath9k_has_tx_pending(struct ath_softc *sc)
1883 return !!npend; 1883 return !!npend;
1884} 1884}
1885 1885
1886static void ath9k_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1886static void ath9k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1887 u32 queues, bool drop)
1887{ 1888{
1888 struct ath_softc *sc = hw->priv; 1889 struct ath_softc *sc = hw->priv;
1889 struct ath_hw *ah = sc->sc_ah; 1890 struct ath_hw *ah = sc->sc_ah;
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
index 4c8cdb097b65..f8ded84b7be8 100644
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
@@ -1707,7 +1707,9 @@ found:
1707 return 0; 1707 return 0;
1708} 1708}
1709 1709
1710static void carl9170_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1710static void carl9170_op_flush(struct ieee80211_hw *hw,
1711 struct ieee80211_vif *vif,
1712 u32 queues, bool drop)
1711{ 1713{
1712 struct ar9170 *ar = hw->priv; 1714 struct ar9170 *ar = hw->priv;
1713 unsigned int vid; 1715 unsigned int vid;
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
index 8c5fa4e58139..43c71bfaa474 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -897,7 +897,8 @@ static bool brcms_tx_flush_completed(struct brcms_info *wl)
897 return result; 897 return result;
898} 898}
899 899
900static void brcms_ops_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 900static void brcms_ops_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
901 u32 queues, bool drop)
901{ 902{
902 struct brcms_info *wl = hw->priv; 903 struct brcms_info *wl = hw->priv;
903 int ret; 904 int ret;
diff --git a/drivers/net/wireless/cw1200/sta.c b/drivers/net/wireless/cw1200/sta.c
index 103f7bce8932..cd0cad7f7759 100644
--- a/drivers/net/wireless/cw1200/sta.c
+++ b/drivers/net/wireless/cw1200/sta.c
@@ -936,7 +936,8 @@ static int __cw1200_flush(struct cw1200_common *priv, bool drop)
936 return ret; 936 return ret;
937} 937}
938 938
939void cw1200_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 939void cw1200_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
940 u32 queues, bool drop)
940{ 941{
941 struct cw1200_common *priv = hw->priv; 942 struct cw1200_common *priv = hw->priv;
942 943
diff --git a/drivers/net/wireless/cw1200/sta.h b/drivers/net/wireless/cw1200/sta.h
index 35babb62cc6a..b7e386b7662b 100644
--- a/drivers/net/wireless/cw1200/sta.h
+++ b/drivers/net/wireless/cw1200/sta.h
@@ -40,7 +40,8 @@ int cw1200_set_key(struct ieee80211_hw *dev, enum set_key_cmd cmd,
40 40
41int cw1200_set_rts_threshold(struct ieee80211_hw *hw, u32 value); 41int cw1200_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
42 42
43void cw1200_flush(struct ieee80211_hw *hw, u32 queues, bool drop); 43void cw1200_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
44 u32 queues, bool drop);
44 45
45u64 cw1200_prepare_multicast(struct ieee80211_hw *hw, 46u64 cw1200_prepare_multicast(struct ieee80211_hw *hw,
46 struct netdev_hw_addr_list *mc_list); 47 struct netdev_hw_addr_list *mc_list);
diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c
index 4f42174d9994..ecc674627e6e 100644
--- a/drivers/net/wireless/iwlegacy/common.c
+++ b/drivers/net/wireless/iwlegacy/common.c
@@ -4755,7 +4755,8 @@ out:
4755} 4755}
4756EXPORT_SYMBOL(il_mac_change_interface); 4756EXPORT_SYMBOL(il_mac_change_interface);
4757 4757
4758void il_mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 4758void il_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
4759 u32 queues, bool drop)
4759{ 4760{
4760 struct il_priv *il = hw->priv; 4761 struct il_priv *il = hw->priv;
4761 unsigned long timeout = jiffies + msecs_to_jiffies(500); 4762 unsigned long timeout = jiffies + msecs_to_jiffies(500);
diff --git a/drivers/net/wireless/iwlegacy/common.h b/drivers/net/wireless/iwlegacy/common.h
index dfb13c70efe8..ea5c0f863c4e 100644
--- a/drivers/net/wireless/iwlegacy/common.h
+++ b/drivers/net/wireless/iwlegacy/common.h
@@ -1723,7 +1723,8 @@ void il_mac_remove_interface(struct ieee80211_hw *hw,
1723 struct ieee80211_vif *vif); 1723 struct ieee80211_vif *vif);
1724int il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1724int il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1725 enum nl80211_iftype newtype, bool newp2p); 1725 enum nl80211_iftype newtype, bool newp2p);
1726void il_mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop); 1726void il_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1727 u32 queues, bool drop);
1727int il_alloc_txq_mem(struct il_priv *il); 1728int il_alloc_txq_mem(struct il_priv *il);
1728void il_free_txq_mem(struct il_priv *il); 1729void il_free_txq_mem(struct il_priv *il);
1729 1730
diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
index dd55c9cf7ba8..d4fae9fb2ddb 100644
--- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
@@ -1091,7 +1091,8 @@ static void iwlagn_configure_filter(struct ieee80211_hw *hw,
1091 FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL; 1091 FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
1092} 1092}
1093 1093
1094static void iwlagn_mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1094static void iwlagn_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1095 u32 queues, bool drop)
1095{ 1096{
1096 struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); 1097 struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw);
1097 1098
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 9d7a52f5a410..31c7a1c9ef5f 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -1676,7 +1676,9 @@ static int mac80211_hwsim_ampdu_action(struct ieee80211_hw *hw,
1676 return 0; 1676 return 0;
1677} 1677}
1678 1678
1679static void mac80211_hwsim_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1679static void mac80211_hwsim_flush(struct ieee80211_hw *hw,
1680 struct ieee80211_vif *vif,
1681 u32 queues, bool drop)
1680{ 1682{
1681 /* Not implemented, queues only on kernel side */ 1683 /* Not implemented, queues only on kernel side */
1682} 1684}
diff --git a/drivers/net/wireless/p54/main.c b/drivers/net/wireless/p54/main.c
index eede90b63f84..7be3a4839640 100644
--- a/drivers/net/wireless/p54/main.c
+++ b/drivers/net/wireless/p54/main.c
@@ -669,7 +669,8 @@ static unsigned int p54_flush_count(struct p54_common *priv)
669 return total; 669 return total;
670} 670}
671 671
672static void p54_flush(struct ieee80211_hw *dev, u32 queues, bool drop) 672static void p54_flush(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
673 u32 queues, bool drop)
673{ 674{
674 struct p54_common *priv = dev->priv; 675 struct p54_common *priv = dev->priv;
675 unsigned int total, i; 676 unsigned int total, i;
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index e3b885d8f7db..010b76505243 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -1448,7 +1448,8 @@ int rt2x00mac_conf_tx(struct ieee80211_hw *hw,
1448 struct ieee80211_vif *vif, u16 queue, 1448 struct ieee80211_vif *vif, u16 queue,
1449 const struct ieee80211_tx_queue_params *params); 1449 const struct ieee80211_tx_queue_params *params);
1450void rt2x00mac_rfkill_poll(struct ieee80211_hw *hw); 1450void rt2x00mac_rfkill_poll(struct ieee80211_hw *hw);
1451void rt2x00mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop); 1451void rt2x00mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1452 u32 queues, bool drop);
1452int rt2x00mac_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant); 1453int rt2x00mac_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
1453int rt2x00mac_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); 1454int rt2x00mac_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
1454void rt2x00mac_get_ringparam(struct ieee80211_hw *hw, 1455void rt2x00mac_get_ringparam(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index ddeb5a709aa3..30a2367ba8d6 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -747,7 +747,8 @@ void rt2x00mac_rfkill_poll(struct ieee80211_hw *hw)
747} 747}
748EXPORT_SYMBOL_GPL(rt2x00mac_rfkill_poll); 748EXPORT_SYMBOL_GPL(rt2x00mac_rfkill_poll);
749 749
750void rt2x00mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 750void rt2x00mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
751 u32 queues, bool drop)
751{ 752{
752 struct rt2x00_dev *rt2x00dev = hw->priv; 753 struct rt2x00_dev *rt2x00dev = hw->priv;
753 struct data_queue *queue; 754 struct data_queue *queue;
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
index 4ec424f26672..b1ed6d0796f6 100644
--- a/drivers/net/wireless/rtlwifi/core.c
+++ b/drivers/net/wireless/rtlwifi/core.c
@@ -1387,7 +1387,8 @@ static void rtl_op_rfkill_poll(struct ieee80211_hw *hw)
1387 * before switch channel or power save, or tx buffer packet 1387 * before switch channel or power save, or tx buffer packet
1388 * maybe send after offchannel or rf sleep, this may cause 1388 * maybe send after offchannel or rf sleep, this may cause
1389 * dis-association by AP */ 1389 * dis-association by AP */
1390static void rtl_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1390static void rtl_op_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1391 u32 queues, bool drop)
1391{ 1392{
1392 struct rtl_priv *rtlpriv = rtl_priv(hw); 1393 struct rtl_priv *rtlpriv = rtl_priv(hw);
1393 1394
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
index ed88d3913483..077eb5b9cd74 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -5184,7 +5184,8 @@ out:
5184 mutex_unlock(&wl->mutex); 5184 mutex_unlock(&wl->mutex);
5185} 5185}
5186 5186
5187static void wlcore_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 5187static void wlcore_op_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
5188 u32 queues, bool drop)
5188{ 5189{
5189 struct wl1271 *wl = hw->priv; 5190 struct wl1271 *wl = hw->priv;
5190 5191
diff --git a/drivers/staging/rtl8821ae/core.c b/drivers/staging/rtl8821ae/core.c
index ff3139b6da65..63ae2d1997d3 100644
--- a/drivers/staging/rtl8821ae/core.c
+++ b/drivers/staging/rtl8821ae/core.c
@@ -1414,23 +1414,15 @@ static void rtl_op_rfkill_poll(struct ieee80211_hw *hw)
1414 * before switch channel or power save, or tx buffer packet 1414 * before switch channel or power save, or tx buffer packet
1415 * maybe send after offchannel or rf sleep, this may cause 1415 * maybe send after offchannel or rf sleep, this may cause
1416 * dis-association by AP */ 1416 * dis-association by AP */
1417#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) 1417static void rtl_op_flush(struct ieee80211_hw *hw,
1418static void rtl_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) 1418 struct ieee80211_vif *vif,
1419 u32 queues, bool drop)
1419{ 1420{
1420 struct rtl_priv *rtlpriv = rtl_priv(hw); 1421 struct rtl_priv *rtlpriv = rtl_priv(hw);
1421 1422
1422 if (rtlpriv->intf_ops->flush) 1423 if (rtlpriv->intf_ops->flush)
1423 rtlpriv->intf_ops->flush(hw, queues, drop); 1424 rtlpriv->intf_ops->flush(hw, queues, drop);
1424} 1425}
1425#else
1426static void rtl_op_flush(struct ieee80211_hw *hw, bool drop)
1427{
1428 struct rtl_priv *rtlpriv = rtl_priv(hw);
1429
1430 if (rtlpriv->intf_ops->flush)
1431 rtlpriv->intf_ops->flush(hw, drop);
1432}
1433#endif
1434 1426
1435const struct ieee80211_ops rtl_ops = { 1427const struct ieee80211_ops rtl_ops = {
1436 .start = rtl_op_start, 1428 .start = rtl_op_start,
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 8248e3909fdf..faa7b9cf9cc7 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2609,6 +2609,7 @@ enum ieee80211_roc_type {
2609 * of queues to flush, which is useful if different virtual interfaces 2609 * of queues to flush, which is useful if different virtual interfaces
2610 * use different hardware queues; it may also indicate all queues. 2610 * use different hardware queues; it may also indicate all queues.
2611 * If the parameter @drop is set to %true, pending frames may be dropped. 2611 * If the parameter @drop is set to %true, pending frames may be dropped.
2612 * Note that vif can be NULL.
2612 * The callback can sleep. 2613 * The callback can sleep.
2613 * 2614 *
2614 * @channel_switch: Drivers that need (or want) to offload the channel 2615 * @channel_switch: Drivers that need (or want) to offload the channel
@@ -2871,7 +2872,8 @@ struct ieee80211_ops {
2871 struct netlink_callback *cb, 2872 struct netlink_callback *cb,
2872 void *data, int len); 2873 void *data, int len);
2873#endif 2874#endif
2874 void (*flush)(struct ieee80211_hw *hw, u32 queues, bool drop); 2875 void (*flush)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2876 u32 queues, bool drop);
2875 void (*channel_switch)(struct ieee80211_hw *hw, 2877 void (*channel_switch)(struct ieee80211_hw *hw,
2876 struct ieee80211_channel_switch *ch_switch); 2878 struct ieee80211_channel_switch *ch_switch);
2877 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant); 2879 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index fc689f5d971e..5331582a2c81 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -726,13 +726,19 @@ static inline void drv_rfkill_poll(struct ieee80211_local *local)
726} 726}
727 727
728static inline void drv_flush(struct ieee80211_local *local, 728static inline void drv_flush(struct ieee80211_local *local,
729 struct ieee80211_sub_if_data *sdata,
729 u32 queues, bool drop) 730 u32 queues, bool drop)
730{ 731{
732 struct ieee80211_vif *vif = sdata ? &sdata->vif : NULL;
733
731 might_sleep(); 734 might_sleep();
732 735
736 if (sdata)
737 check_sdata_in_driver(sdata);
738
733 trace_drv_flush(local, queues, drop); 739 trace_drv_flush(local, queues, drop);
734 if (local->ops->flush) 740 if (local->ops->flush)
735 local->ops->flush(&local->hw, queues, drop); 741 local->ops->flush(&local->hw, vif, queues, drop);
736 trace_drv_return_void(local); 742 trace_drv_return_void(local);
737} 743}
738 744
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 275c94f995f7..5cf62ec74c14 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -554,7 +554,7 @@ void ieee80211_flush_queues(struct ieee80211_local *local,
554 ieee80211_stop_queues_by_reason(&local->hw, IEEE80211_MAX_QUEUE_MAP, 554 ieee80211_stop_queues_by_reason(&local->hw, IEEE80211_MAX_QUEUE_MAP,
555 IEEE80211_QUEUE_STOP_REASON_FLUSH); 555 IEEE80211_QUEUE_STOP_REASON_FLUSH);
556 556
557 drv_flush(local, queues, false); 557 drv_flush(local, sdata, queues, false);
558 558
559 ieee80211_wake_queues_by_reason(&local->hw, IEEE80211_MAX_QUEUE_MAP, 559 ieee80211_wake_queues_by_reason(&local->hw, IEEE80211_MAX_QUEUE_MAP,
560 IEEE80211_QUEUE_STOP_REASON_FLUSH); 560 IEEE80211_QUEUE_STOP_REASON_FLUSH);