From: Thomas Horsten Date: Tue, 29 Sep 2009 13:12:28 +0000 (+0100) Subject: [xenclient/wifi_backports] Fix issues with certain access points X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=01da7fafe690b4efaa41c2a3ab90b432d687ceca;p=xenclient%2Fbuild.git [xenclient/wifi_backports] Fix issues with certain access points 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 --- 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 index 0000000..eb72c76 --- /dev/null +++ b/package/xenclient/wifi_backports/01-wext-dont-display-bssid-unless-associated.patch @@ -0,0 +1,44 @@ +From: Johannes Berg +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 +Signed-off-by: Johannes Berg +Tested-by: Thomas H. Guenther +Signed-off-by: John W. Linville +--- + +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 index 0000000..dbe0d0b --- /dev/null +++ b/package/xenclient/wifi_backports/02-cfg80211-dont-set-privacy-wo-key.patch @@ -0,0 +1,33 @@ +From: Johannes Berg +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 +Tested-by: Luis R. Rodriguez +Tested-by: Kalle Valo +Signed-off-by: John W. Linville +--- + +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 index 0000000..6ee12e1 --- /dev/null +++ b/package/xenclient/wifi_backports/03-iwlwifi-fix-memory-leak-in-cmd-queue-handling.patch @@ -0,0 +1,32 @@ +From: Reinette Chatre +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 +Signed-off-by: John W. Linville +--- + +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 index 0000000..4275699 --- /dev/null +++ b/package/xenclient/wifi_backports/10-cfg80211-always-get-bss.patch @@ -0,0 +1,38 @@ +rom: Johannes Berg +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 +Tested-by: Hin-Tak Leung , +Signed-off-by: John W. Linville +--- + +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; diff --git a/package/xenclient/wifi_backports/wifi_backports.mk b/package/xenclient/wifi_backports/wifi_backports.mk index c805cec..a31e281 100644 --- a/package/xenclient/wifi_backports/wifi_backports.mk +++ b/package/xenclient/wifi_backports/wifi_backports.mk @@ -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)