diff options
author | Eliad Peller <eliad@wizery.com> | 2011-07-14 13:29:42 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-18 14:29:03 -0400 |
commit | 2683d65bb016a0533c25ead3025cbd24886cf35f (patch) | |
tree | eb6f37fae2711030aeddc31c9482b36de85d0be0 /net/mac80211/util.c | |
parent | b3c2ce131c7cd8c53b72b0cc04241cde17ce0c1d (diff) |
mac80211: reconfigure tx on device reconfiguration
Add tx_conf array to save the current tx queues
configuration, and reconfig it on resume (ieee80211_reconfig).
On resume, the driver is being reconfigured. Without
reconfiguring the tx queues as well, the driver might
configure the device to use wrong ac params (e.g. ps-poll
instead of uapsd).
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 8c2df33fd7e8..ca440bce3de8 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -799,6 +799,7 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata) | |||
799 | 799 | ||
800 | qparam.uapsd = false; | 800 | qparam.uapsd = false; |
801 | 801 | ||
802 | local->tx_conf[queue] = qparam; | ||
802 | drv_conf_tx(local, queue, &qparam); | 803 | drv_conf_tx(local, queue, &qparam); |
803 | } | 804 | } |
804 | 805 | ||
@@ -1134,7 +1135,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1134 | struct ieee80211_hw *hw = &local->hw; | 1135 | struct ieee80211_hw *hw = &local->hw; |
1135 | struct ieee80211_sub_if_data *sdata; | 1136 | struct ieee80211_sub_if_data *sdata; |
1136 | struct sta_info *sta; | 1137 | struct sta_info *sta; |
1137 | int res; | 1138 | int res, i; |
1138 | 1139 | ||
1139 | #ifdef CONFIG_PM | 1140 | #ifdef CONFIG_PM |
1140 | if (local->suspended) | 1141 | if (local->suspended) |
@@ -1211,6 +1212,10 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1211 | } | 1212 | } |
1212 | mutex_unlock(&local->sta_mtx); | 1213 | mutex_unlock(&local->sta_mtx); |
1213 | 1214 | ||
1215 | /* reconfigure tx conf */ | ||
1216 | for (i = 0; i < hw->queues; i++) | ||
1217 | drv_conf_tx(local, i, &local->tx_conf[i]); | ||
1218 | |||
1214 | /* reconfigure hardware */ | 1219 | /* reconfigure hardware */ |
1215 | ieee80211_hw_config(local, ~0); | 1220 | ieee80211_hw_config(local, ~0); |
1216 | 1221 | ||