[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#578262: Intel 5300 wireless does not work on Acer TravelMate6293.



I would like to submit additional information on the reported problem
with the intel wireless card.

It seems the problem is similar to the Bug 558002:
"wifi Link 5100 not working on F12" found in Fedora and solved
recently by Stanislaw Gruszka.

See: https://bugzilla.redhat.com/show_bug.cgi?id=558002

The bug concerns Quality of Service (QoS) frames. It affects possibly
a functionality of newer intel wireless cards when connecting to APs that do not support QoS properly.

From what I know two patches concerning this were submitted to the kernel.org by Stanislaw Gruszka.
See: [1] patch-86913 and [2] patch-86914

[1] https://patchwork.kernel.org/patch/86913/
[2] https://patchwork.kernel.org/patch/86914/

If the patches are applied to the current Debian linux-2.6.32
kernel source (2.6.32-5) the wireless card works correctly
and the reported problem is solved.

The patches, adapted to fit current kernel-2.6 source, are attached.

I am really sorry for submitting the bug twice (also as Bug#578263).

I hope this information will help someone.
Zdenek Matej
diff -uNr a/include/net/mac80211.h b/include/net/mac80211.h
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -155,6 +155,7 @@
  *	new beacon (beaconing modes)
  * @BSS_CHANGED_BEACON_ENABLED: Beaconing should be
  *	enabled/disabled (beaconing modes)
+ * @BSS_CHANGED_QOS_DISABLED: QoS should be disabled
  */
 enum ieee80211_bss_change {
 	BSS_CHANGED_ASSOC		= 1<<0,
@@ -167,6 +168,7 @@
 	BSS_CHANGED_BSSID		= 1<<7,
 	BSS_CHANGED_BEACON		= 1<<8,
 	BSS_CHANGED_BEACON_ENABLED	= 1<<9,
+	BSS_CHANGED_QOS_DISABLED	= 1<<10,
 };
 
 /**
diff -uNr a/net/mac80211/mlme.c b/net/mac80211/mlme.c
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1594,7 +1594,7 @@
 		ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
 					 elems.wmm_param_len);
 	else
-		ieee80211_set_wmm_default(sdata);
+		changed |= BSS_CHANGED_QOS_DISABLED;
 
 	if (elems.ht_info_elem && elems.wmm_param &&
 	    (ifmgd->flags & IEEE80211_STA_WMM_ENABLED) &&
diff -uNr a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -2290,6 +2290,15 @@
 		priv->ibss_beacon = ieee80211_beacon_get(hw, vif);
 	}
 
+	if (changes & BSS_CHANGED_QOS_DISABLED) {
+		unsigned long flags;
+
+		spin_lock_irqsave(&priv->lock, flags);
+		priv->qos_data.qos_active = 0;
+		iwl_activate_qos(priv, 1);
+		spin_unlock_irqrestore(&priv->lock, flags);
+	}
+
 	if (changes & BSS_CHANGED_BEACON_INT) {
 		priv->beacon_int = bss_conf->beacon_int;
 		/* TODO: in AP mode, do something to make this take effect */

Reply to: