diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2010-08-12 07:12:22 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2010-08-12 07:12:22 +0000 |
commit | beb117eb1b4235b2f346309ae3f5976440a80ad3 (patch) | |
tree | e7abde2fd97449826cdd4d0988c22fbebacd9c45 /freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch | |
parent | 87e0ea9a5f514d79d292345ae35cb683f285de6c (diff) | |
download | linux-libre-raptor-beb117eb1b4235b2f346309ae3f5976440a80ad3.tar.gz linux-libre-raptor-beb117eb1b4235b2f346309ae3f5976440a80ad3.zip |
Renamed F-13 to f13 after transition to git.
Diffstat (limited to 'freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch')
-rw-r--r-- | freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch b/freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch new file mode 100644 index 000000000..9ac9971c2 --- /dev/null +++ b/freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch @@ -0,0 +1,100 @@ +From: Stanislaw Gruszka <sgruszka@redhat.com> +To: kernel@lists.fedoraproject.org, "John W. Linville" <linville@redhat.com> +Subject: [PATCH 1/4 2.6.32.y] mac80211: explicitly disable/enable QoS +Date: Fri, 11 Jun 2010 17:03:13 +0200 + +Add interface to disable/enable QoS (aka WMM or WME). Currently drivers +enable it explicitly when ->conf_tx method is called, and newer disable. +Disabling is needed for some APs, which do not support QoS, such +we should send QoS frames to them. + +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +--- + include/net/mac80211.h | 5 +++++ + net/mac80211/mlme.c | 9 ++++++++- + net/mac80211/util.c | 5 +++++ + 3 files changed, 18 insertions(+), 1 deletions(-) + +diff --git a/include/net/mac80211.h b/include/net/mac80211.h +index c39ed07..de904fc 100644 +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -572,11 +572,15 @@ struct ieee80211_rx_status { + * may turn the device off as much as possible. Typically, this flag will + * be set when an interface is set UP but not associated or scanning, but + * it can also be unset in that case when monitor interfaces are active. ++ * @IEEE80211_CONF_QOS: Enable 802.11e QoS also know as WMM (Wireless ++ * Multimedia). On some drivers (iwlwifi is one of know) we have ++ * to enable/disable QoS explicitly. + */ + enum ieee80211_conf_flags { + IEEE80211_CONF_RADIOTAP = (1<<0), + IEEE80211_CONF_PS = (1<<1), + IEEE80211_CONF_IDLE = (1<<2), ++ IEEE80211_CONF_QOS = (1<<3), + }; + + +@@ -599,6 +603,7 @@ enum ieee80211_conf_changed { + IEEE80211_CONF_CHANGE_CHANNEL = BIT(6), + IEEE80211_CONF_CHANGE_RETRY_LIMITS = BIT(7), + IEEE80211_CONF_CHANGE_IDLE = BIT(8), ++ IEEE80211_CONF_CHANGE_QOS = BIT(9), + }; + + /** +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c +index 4a15df1..d3950b7 100644 +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -786,6 +786,9 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, + int count; + u8 *pos; + ++ if (!local->ops->conf_tx) ++ return; ++ + if (!(ifmgd->flags & IEEE80211_STA_WMM_ENABLED)) + return; + +@@ -844,11 +847,15 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, + wiphy_name(local->hw.wiphy), queue, aci, acm, + params.aifs, params.cw_min, params.cw_max, params.txop); + #endif +- if (drv_conf_tx(local, queue, ¶ms) && local->ops->conf_tx) ++ if (drv_conf_tx(local, queue, ¶ms)) + printk(KERN_DEBUG "%s: failed to set TX queue " + "parameters for queue %d\n", + wiphy_name(local->hw.wiphy), queue); + } ++ ++ /* enable WMM or activate new settings */ ++ local->hw.conf.flags |= IEEE80211_CONF_QOS; ++ drv_config(local, IEEE80211_CONF_CHANGE_QOS); + } + + static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, +diff --git a/net/mac80211/util.c b/net/mac80211/util.c +index 31b1085..21f11cc 100644 +--- a/net/mac80211/util.c ++++ b/net/mac80211/util.c +@@ -791,6 +791,11 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata) + + drv_conf_tx(local, queue, &qparam); + } ++ ++ /* after reinitialize QoS TX queues setting to default, ++ * disable QoS at all */ ++ local->hw.conf.flags &= ~IEEE80211_CONF_QOS; ++ drv_config(local, IEEE80211_CONF_CHANGE_QOS); + } + + void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, +-- +1.6.2.5 + +_______________________________________________ +kernel mailing list +kernel@lists.fedoraproject.org +https://admin.fedoraproject.org/mailman/listinfo/kernel + |