summaryrefslogtreecommitdiffstats
path: root/freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2010-08-12 07:12:22 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2010-08-12 07:12:22 +0000
commitbeb117eb1b4235b2f346309ae3f5976440a80ad3 (patch)
treee7abde2fd97449826cdd4d0988c22fbebacd9c45 /freed-ora/current/f12/iwlwifi-manage-QoS-by-mac-stack.patch
parent87e0ea9a5f514d79d292345ae35cb683f285de6c (diff)
downloadlinux-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.patch100
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, &params) && local->ops->conf_tx)
++ if (drv_conf_tx(local, queue, &params))
+ 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
+
OpenPOWER on IntegriCloud