aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-11-10 09:55:13 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-11-11 12:32:54 -0500
commita69cd040d03711215c32f89683a025d28594d2b5 (patch)
tree321661c9af75ed2ebea1783412854cc4da3b1d9f /drivers/net/wireless
parentdf912e5119759dad2d2f4b989a5fe83fbdfdeec0 (diff)
iwlagn: explicitly program P2P QoS parameters
In P2P device mode, the device needs to have valid QoS parameters. We currently have those because we program parameters from any virtual interface into all contexts, but not only do we want to get rid of this -- it is also unpredictable since on the BSS context we might have any parameters, and there it might even be programmed for HT. Explicitly program default QoS parameters into the PAN context for P2P (the defaults are 11g but with QoS disabled) to make device behaviour predictable. This also helps when in a follow-up patch we will use TX QoS parameters from mac80211 only for the context they were meant for -- without this first that would completely break P2P device discovery. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-mac80211.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-mac80211.c b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
index 43d795d472e0..c06bfe40cf38 100644
--- a/drivers/net/wireless/iwlwifi/iwl-mac80211.c
+++ b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
@@ -1305,7 +1305,35 @@ static int iwlagn_mac_remain_on_channel(struct ieee80211_hw *hw,
1305 cancel_delayed_work(&priv->hw_roc_disable_work); 1305 cancel_delayed_work(&priv->hw_roc_disable_work);
1306 1306
1307 if (!ctx->is_active) { 1307 if (!ctx->is_active) {
1308 static const struct iwl_qos_info default_qos_data = {
1309 .def_qos_parm = {
1310 .ac[0] = {
1311 .cw_min = cpu_to_le16(3),
1312 .cw_max = cpu_to_le16(7),
1313 .aifsn = 2,
1314 .edca_txop = cpu_to_le16(1504),
1315 },
1316 .ac[1] = {
1317 .cw_min = cpu_to_le16(7),
1318 .cw_max = cpu_to_le16(15),
1319 .aifsn = 2,
1320 .edca_txop = cpu_to_le16(3008),
1321 },
1322 .ac[2] = {
1323 .cw_min = cpu_to_le16(15),
1324 .cw_max = cpu_to_le16(1023),
1325 .aifsn = 3,
1326 },
1327 .ac[3] = {
1328 .cw_min = cpu_to_le16(15),
1329 .cw_max = cpu_to_le16(1023),
1330 .aifsn = 7,
1331 },
1332 },
1333 };
1334
1308 ctx->is_active = true; 1335 ctx->is_active = true;
1336 ctx->qos_data = default_qos_data;
1309 ctx->staging.dev_type = RXON_DEV_TYPE_P2P; 1337 ctx->staging.dev_type = RXON_DEV_TYPE_P2P;
1310 memcpy(ctx->staging.node_addr, 1338 memcpy(ctx->staging.node_addr,
1311 priv->contexts[IWL_RXON_CTX_BSS].staging.node_addr, 1339 priv->contexts[IWL_RXON_CTX_BSS].staging.node_addr,