diff options
author | Kalle Valo <kalle.valo@nokia.com> | 2010-01-12 03:43:15 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-12 14:21:06 -0500 |
commit | 4ff6ffa107ba1c6ba9a1cc75a1f304eaa79e8bf4 (patch) | |
tree | 596831b5b9392dd43fdff1d38f8f65a1363e9103 /drivers | |
parent | 8f8ff91652fcf62b9fced5387956b4b269fde634 (diff) |
wl1251: add U-APSD support
wl1251 firmware supports U-APSD just with a simple queue configuration
change so enable it.
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1251_main.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1251_main.c b/drivers/net/wireless/wl12xx/wl1251_main.c index d469d3dcd054..595f0f94d16e 100644 --- a/drivers/net/wireless/wl12xx/wl1251_main.c +++ b/drivers/net/wireless/wl12xx/wl1251_main.c | |||
@@ -1143,6 +1143,7 @@ static struct ieee80211_channel wl1251_channels[] = { | |||
1143 | static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue, | 1143 | static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue, |
1144 | const struct ieee80211_tx_queue_params *params) | 1144 | const struct ieee80211_tx_queue_params *params) |
1145 | { | 1145 | { |
1146 | enum wl1251_acx_ps_scheme ps_scheme; | ||
1146 | struct wl1251 *wl = hw->priv; | 1147 | struct wl1251 *wl = hw->priv; |
1147 | int ret; | 1148 | int ret; |
1148 | 1149 | ||
@@ -1160,10 +1161,14 @@ static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue, | |||
1160 | if (ret < 0) | 1161 | if (ret < 0) |
1161 | goto out_sleep; | 1162 | goto out_sleep; |
1162 | 1163 | ||
1164 | if (params->uapsd) | ||
1165 | ps_scheme = WL1251_ACX_PS_SCHEME_UPSD_TRIGGER; | ||
1166 | else | ||
1167 | ps_scheme = WL1251_ACX_PS_SCHEME_LEGACY; | ||
1168 | |||
1163 | ret = wl1251_acx_tid_cfg(wl, wl1251_tx_get_queue(queue), | 1169 | ret = wl1251_acx_tid_cfg(wl, wl1251_tx_get_queue(queue), |
1164 | CHANNEL_TYPE_EDCF, | 1170 | CHANNEL_TYPE_EDCF, |
1165 | wl1251_tx_get_queue(queue), | 1171 | wl1251_tx_get_queue(queue), ps_scheme, |
1166 | WL1251_ACX_PS_SCHEME_LEGACY, | ||
1167 | WL1251_ACX_ACK_POLICY_LEGACY); | 1172 | WL1251_ACX_ACK_POLICY_LEGACY); |
1168 | if (ret < 0) | 1173 | if (ret < 0) |
1169 | goto out_sleep; | 1174 | goto out_sleep; |
@@ -1237,7 +1242,8 @@ int wl1251_init_ieee80211(struct wl1251 *wl) | |||
1237 | wl->hw->flags = IEEE80211_HW_SIGNAL_DBM | | 1242 | wl->hw->flags = IEEE80211_HW_SIGNAL_DBM | |
1238 | IEEE80211_HW_NOISE_DBM | | 1243 | IEEE80211_HW_NOISE_DBM | |
1239 | IEEE80211_HW_SUPPORTS_PS | | 1244 | IEEE80211_HW_SUPPORTS_PS | |
1240 | IEEE80211_HW_BEACON_FILTER; | 1245 | IEEE80211_HW_BEACON_FILTER | |
1246 | IEEE80211_HW_SUPPORTS_UAPSD; | ||
1241 | 1247 | ||
1242 | wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); | 1248 | wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); |
1243 | wl->hw->wiphy->max_scan_ssids = 1; | 1249 | wl->hw->wiphy->max_scan_ssids = 1; |