commit 01e991b8eb2cc28f41ed3f96ec33ae3dd6b860a3 Author: Wey-Yi Guy Date: Tue Jan 26 12:00:43 2010 -0800 iwlwifi: Fix throughput stall issue in HT mode for 5000 commit 1152dcc28c66a74b5b3f1a3ede0aa6729bfd48e4 upstream Similar to 6000 and 1000 series, RTS/CTS is the recommended protection mechanism for 5000 series in HT mode based on the HW design. Using RTS/CTS will better protect the inner exchange from interference, especially in highly-congested environment, it also prevent uCode encounter TX FIFO underrun and other HT mode related performance issues. Signed-off-by: Wey-Yi Guy Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman commit eb6002526b1c5cb3e7f9e42004ba395f5d57beaf Author: Abhijeet Kolekar Date: Wed Jan 13 13:23:14 2010 -0800 cfg80211: fix channel setting for wext commit 5f6120335c701ba07d5151206071f4d6ccaa684f upstream. Patch fixes the bug at http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2139 Currently we cannot set the channel using wext extension if we have already associated and disconnected. As cfg80211_mgd_wext_siwfreq will not switch the channel if ssid is set. This fixes it by clearing the ssid. Following is the sequence which it tries to fix. modprobe iwlagn iwconfig wlan0 essid "" ifconfig wlan0 down iwconfig wlan0 chan X wext is marked as deprecate.If we use nl80211 we can easily play with setting the channel. Signed-off-by: Abhijeet Kolekar Acked-by: Samuel Ortiz Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman commit 304cd19e41f6c77c3d307869f15a8bfe2a7408cd Author: Benoit Papillault Date: Fri Jan 15 12:21:37 2010 +0100 mac80211: check that ieee80211_set_power_mgmt only handles STA interfaces. commit e5de30c9bf4a39db9f54c4a373470ce65881ade0 upstream. ieee80211_set_power_mgmt is meant for STA interfaces only. Moreover, since sdata->u.mgd.mtx is only initialized for STA interfaces, using this code for any other type of interface (like creating a monitor interface) will result in a oops. Signed-off-by: Benoit Papillault Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman diff -urNp linux-2.6.18.noarch.orig/drivers/net/wireless/iwlwifi/iwl-5000.c linux-2.6.18.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c --- linux-2.6.18.noarch.orig/drivers/net/wireless/iwlwifi/iwl-5000.c 2010-01-28 11:06:43.000000000 -0500 +++ linux-2.6.18.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c 2010-01-28 11:15:25.000000000 -0500 @@ -1672,6 +1672,7 @@ struct iwl_cfg iwl5300_agn_cfg = { .valid_rx_ant = ANT_ABC, .need_pll_cfg = true, .ht_greenfield_support = true, + .use_rts_for_ht = true, /* use rts/cts protection */ }; struct iwl_cfg iwl5100_bg_cfg = { @@ -1723,6 +1724,7 @@ struct iwl_cfg iwl5100_agn_cfg = { .valid_rx_ant = ANT_AB, .need_pll_cfg = true, .ht_greenfield_support = true, + .use_rts_for_ht = true, /* use rts/cts protection */ }; struct iwl_cfg iwl5350_agn_cfg = { @@ -1740,6 +1742,7 @@ struct iwl_cfg iwl5350_agn_cfg = { .valid_rx_ant = ANT_ABC, .need_pll_cfg = true, .ht_greenfield_support = true, + .use_rts_for_ht = true, /* use rts/cts protection */ }; struct iwl_cfg iwl5150_agn_cfg = { @@ -1757,6 +1760,7 @@ struct iwl_cfg iwl5150_agn_cfg = { .valid_rx_ant = ANT_AB, .need_pll_cfg = true, .ht_greenfield_support = true, + .use_rts_for_ht = true, /* use rts/cts protection */ }; MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX)); diff -urNp linux-2.6.18.noarch.orig/net/mac80211/cfg.c linux-2.6.18.noarch/net/mac80211/cfg.c --- linux-2.6.18.noarch.orig/net/mac80211/cfg.c 2010-01-28 11:06:40.000000000 -0500 +++ linux-2.6.18.noarch/net/mac80211/cfg.c 2010-01-28 11:15:25.000000000 -0500 @@ -1312,6 +1312,9 @@ static int ieee80211_set_power_mgmt(stru struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); struct ieee80211_conf *conf = &local->hw.conf; + if (sdata->vif.type != NL80211_IFTYPE_STATION) + return -EOPNOTSUPP; + if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_PS)) return -EOPNOTSUPP; diff -urNp linux-2.6.18.noarch.orig/net/wireless/sme.c linux-2.6.18.noarch/net/wireless/sme.c --- linux-2.6.18.noarch.orig/net/wireless/sme.c 2010-01-28 11:06:40.000000000 -0500 +++ linux-2.6.18.noarch/net/wireless/sme.c 2010-01-28 11:15:25.000000000 -0500 @@ -680,6 +680,7 @@ void __cfg80211_disconnected(struct net_ memset(&wrqu, 0, sizeof(wrqu)); wrqu.ap_addr.sa_family = ARPHRD_ETHER; wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); + wdev->wext.connect.ssid_len = 0; #endif } -- John W. Linville Linux should be at the core linville@redhat.com of your literate lifestyle.