]> xenbits.xensource.com Git - xenclient/build.git/commitdiff
[xenclient/wifi_backports] Fix issues with certain access points
authorThomas Horsten <thomas.horsten@citrix.com>
Tue, 29 Sep 2009 13:12:28 +0000 (14:12 +0100)
committerThomas Horsten <thomas.horsten@citrix.com>
Tue, 29 Sep 2009 13:12:28 +0000 (14:12 +0100)
Updated to latest compat-wifi tarball and cherry-picked patches from
upstream dev trunk to fix the recent issues with Intel wifi drivers.

XC-413

package/xenclient/wifi_backports/01-wext-dont-display-bssid-unless-associated.patch [new file with mode: 0644]
package/xenclient/wifi_backports/02-cfg80211-dont-set-privacy-wo-key.patch [new file with mode: 0644]
package/xenclient/wifi_backports/03-iwlwifi-fix-memory-leak-in-cmd-queue-handling.patch [new file with mode: 0644]
package/xenclient/wifi_backports/10-cfg80211-always-get-bss.patch [new file with mode: 0644]
package/xenclient/wifi_backports/wifi_backports.mk

diff --git a/package/xenclient/wifi_backports/01-wext-dont-display-bssid-unless-associated.patch b/package/xenclient/wifi_backports/01-wext-dont-display-bssid-unless-associated.patch
new file mode 100644 (file)
index 0000000..eb72c76
--- /dev/null
@@ -0,0 +1,44 @@
+From: Johannes Berg <johannes@sipsolutions.net>
+Date: Thu, 17 Sep 2009 15:35:54 +0000 (-0700)
+Subject: cfg80211: wext: don't display BSSID unless associated
+X-Git-Tag: master-2009-09-28~10
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Flinville%2Fwireless-2.6.git;a=commitdiff_plain;h=33de4f9d787e01646f715ac10c2699fb98fd479e;hp=d1f8297a96b0d70f17704296a6666468f2087ce6
+
+cfg80211: wext: don't display BSSID unless associated
+
+Currently, cfg80211's SIOCGIWAP implementation returns
+the BSSID that the user set, even if the connection has
+since been dropped due to other changes. It only should
+return the current BSSID when actually connected.
+
+Also do a small code cleanup.
+
+Reported-by: Thomas H. Guenther <thomas.h.guenther@intel.com>
+Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+Tested-by: Thomas H. Guenther <thomas.h.guenther@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+
+diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c
+index bf72527..53c6ba9 100644
+--- a/net/wireless/wext-sme.c
++++ b/net/wireless/wext-sme.c
+@@ -229,8 +229,7 @@ int cfg80211_mgd_wext_giwessid(struct net_device *dev,
+               data->flags = 1;
+               data->length = wdev->wext.connect.ssid_len;
+               memcpy(ssid, wdev->wext.connect.ssid, data->length);
+-      } else
+-              data->flags = 0;
++      }
+       wdev_unlock(wdev);
+       return 0;
+@@ -306,8 +305,6 @@ int cfg80211_mgd_wext_giwap(struct net_device *dev,
+       wdev_lock(wdev);
+       if (wdev->current_bss)
+               memcpy(ap_addr->sa_data, wdev->current_bss->pub.bssid, ETH_ALEN);
+-      else if (wdev->wext.connect.bssid)
+-              memcpy(ap_addr->sa_data, wdev->wext.connect.bssid, ETH_ALEN);
+       else
+               memset(ap_addr->sa_data, 0, ETH_ALEN);
+       wdev_unlock(wdev);
diff --git a/package/xenclient/wifi_backports/02-cfg80211-dont-set-privacy-wo-key.patch b/package/xenclient/wifi_backports/02-cfg80211-dont-set-privacy-wo-key.patch
new file mode 100644 (file)
index 0000000..dbe0d0b
--- /dev/null
@@ -0,0 +1,33 @@
+From: Johannes Berg <johannes@sipsolutions.net>
+Date: Thu, 24 Sep 2009 07:00:57 +0000 (+0200)
+Subject: cfg80211: don't set privacy w/o key
+X-Git-Tag: master-2009-09-28~9
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Flinville%2Fwireless-2.6.git;a=commitdiff_plain;h=4be3bd8ccc195297870b9ffca4ef18bcbc2f1822;hp=33de4f9d787e01646f715ac10c2699fb98fd479e
+
+cfg80211: don't set privacy w/o key
+
+When wpa_supplicant is used to connect to open networks,
+it causes the wdev->wext.keys to point to key memory, but
+that key memory is all empty. Only use privacy when there
+is a default key to be used.
+
+Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+Tested-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+Tested-by: Kalle Valo <kalle.valo@iki.fi>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+
+diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c
+index 53c6ba9..5615a88 100644
+--- a/net/wireless/wext-sme.c
++++ b/net/wireless/wext-sme.c
+@@ -30,7 +30,8 @@ int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev,
+       if (wdev->wext.keys) {
+               wdev->wext.keys->def = wdev->wext.default_key;
+               wdev->wext.keys->defmgmt = wdev->wext.default_mgmt_key;
+-              wdev->wext.connect.privacy = true;
++              if (wdev->wext.default_key != -1)
++                      wdev->wext.connect.privacy = true;
+       }
+       if (!wdev->wext.connect.ssid_len)
diff --git a/package/xenclient/wifi_backports/03-iwlwifi-fix-memory-leak-in-cmd-queue-handling.patch b/package/xenclient/wifi_backports/03-iwlwifi-fix-memory-leak-in-cmd-queue-handling.patch
new file mode 100644 (file)
index 0000000..6ee12e1
--- /dev/null
@@ -0,0 +1,32 @@
+From: Reinette Chatre <reinette.chatre@intel.com>
+Date: Fri, 25 Sep 2009 21:24:22 +0000 (-0700)
+Subject: iwlwifi: fix memory leak in command queue handling
+X-Git-Tag: master-2009-09-28~7
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Flinville%2Fwireless-2.6.git;a=commitdiff_plain;h=2814298639619b0aa994fe1aee55438f1e26a2a8
+
+iwlwifi: fix memory leak in command queue handling
+
+Also free the array of command pointers and meta data of each
+command buffer when command queue is freed.
+
+Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
+index a7422e5..c189075 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
++++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
+@@ -197,6 +197,12 @@ void iwl_cmd_queue_free(struct iwl_priv *priv)
+               pci_free_consistent(dev, priv->hw_params.tfd_size *
+                                   txq->q.n_bd, txq->tfds, txq->q.dma_addr);
++      /* deallocate arrays */
++      kfree(txq->cmd);
++      kfree(txq->meta);
++      txq->cmd = NULL;
++      txq->meta = NULL;
++
+       /* 0-fill queue descriptor structure */
+       memset(txq, 0, sizeof(*txq));
+ }
diff --git a/package/xenclient/wifi_backports/10-cfg80211-always-get-bss.patch b/package/xenclient/wifi_backports/10-cfg80211-always-get-bss.patch
new file mode 100644 (file)
index 0000000..4275699
--- /dev/null
@@ -0,0 +1,38 @@
+rom: Johannes Berg <johannes@sipsolutions.net>
+Date: Sat, 26 Sep 2009 12:42:53 +0000 (+0200)
+Subject: cfg80211: always get BSS
+X-Git-Tag: master-2009-09-28~5
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Flinville%2Fwireless-2.6.git;a=commitdiff_plain;h=8bb894859e9495a94f94af3ee4711c89cdf24a95
+
+cfg80211: always get BSS
+
+Multiple problems were reported due to interaction
+between wpa_supplicant and the wext compat code in
+cfg80211, which appear to be due to it not getting
+any bss pointer here when wpa_supplicant sets all
+parameters -- do that now. We should still get the
+bss after doing an extra scan, but that appears to
+increase the time we need for connecting enough to
+sometimes cause timeouts.
+
+Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+Tested-by: Hin-Tak Leung <hintak.leung@gmail.com>,
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+
+diff --git a/net/wireless/sme.c b/net/wireless/sme.c
+index 7fae7ee..93c3ed3 100644
+--- a/net/wireless/sme.c
++++ b/net/wireless/sme.c
+@@ -762,9 +762,8 @@ int __cfg80211_connect(struct cfg80211_registered_device *rdev,
+               wdev->conn->params.ssid = wdev->ssid;
+               wdev->conn->params.ssid_len = connect->ssid_len;
+-              /* don't care about result -- but fill bssid & channel */
+-              if (!wdev->conn->params.bssid || !wdev->conn->params.channel)
+-                      bss = cfg80211_get_conn_bss(wdev);
++              /* see if we have the bss already */
++              bss = cfg80211_get_conn_bss(wdev);
+               wdev->sme_state = CFG80211_SME_CONNECTING;
+               wdev->connect_keys = connkeys;
index c805cec3802d9ee1d660f90c852702e026194f71..a31e2813fe4333af3f9c2dbfdd39445a9c71e78d 100644 (file)
@@ -8,7 +8,7 @@
 ifeq ($(BR2_XENCLIENT_KERNEL_VERSION_2_6_27),y)
 ifeq ($(BR2_XENCLIENT_KERNEL_CONF_DOM0),y)
 
-WIFI_BACKPORTS_VERSION:=2009-09-24
+WIFI_BACKPORTS_VERSION:=2009-09-28
 WIFI_BACKPORTS_SITE:=http://www.orbit-lab.org/kernel/compat-wireless-2.6/2009/09
 WIFI_BACKPORTS_SOURCE:=compat-wireless-$(WIFI_BACKPORTS_VERSION).tar.bz2
 WIFI_BACKPORTS_DIR=$(BUILD_DIR)/compat-wireless-$(WIFI_BACKPORTS_VERSION)