Re: pull request: wireless 2012-08-10
From: "John W. Linville" Date: Fri, 10 Aug 2012 14:33:51 -0400 > Here is a handful of fixes intended for 3.6. > > Daniel Drake offers a cfg80211 fix to consume pending events before > taking a wireless device down. This prevents a resource leak. > > Stanislaw Gruszka gives us a fix for a NULL pointer dereference in > rt61pci. > > Johannes Berg provides an iwlwifi patch to disable "greenfield" mode. > Use of that mode was causing a rate scaling problem in for iwlwifi. > > Please let me know if there are problems! Pulled, thanks John. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
pull request: wireless 2012-08-10
commit 039aafba1b57ed39acb3abc290c11be37402feb2 Dave, Here is a handful of fixes intended for 3.6. Daniel Drake offers a cfg80211 fix to consume pending events before taking a wireless device down. This prevents a resource leak. Stanislaw Gruszka gives us a fix for a NULL pointer dereference in rt61pci. Johannes Berg provides an iwlwifi patch to disable "greenfield" mode. Use of that mode was causing a rate scaling problem in for iwlwifi. Please let me know if there are problems! Thanks, John --- The following changes since commit 63d02d157ec4124990258d66517b6c11fd6df0cf: net: tcp: ipv6_mapped needs sk_rx_dst_set method (2012-08-09 20:56:09 -0700) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem for you to fetch changes up to 039aafba1b57ed39acb3abc290c11be37402feb2: Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem (2012-08-10 14:05:38 -0400) Daniel Drake (1): cfg80211: process pending events when unregistering net device Johannes Berg (1): iwlwifi: disable greenfield transmissions as a workaround John W. Linville (1): Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem Stanislaw Gruszka (1): rt61pci: fix NULL pointer dereference in config_lna_gain drivers/net/wireless/iwlwifi/dvm/rs.c | 13 - drivers/net/wireless/rt2x00/rt61pci.c |3 +-- net/wireless/core.c |5 + net/wireless/core.h |1 + net/wireless/util.c |2 +- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/dvm/rs.c b/drivers/net/wireless/iwlwifi/dvm/rs.c index 6fddd27..a82f46c 100644 --- a/drivers/net/wireless/iwlwifi/dvm/rs.c +++ b/drivers/net/wireless/iwlwifi/dvm/rs.c @@ -707,11 +707,14 @@ static int rs_toggle_antenna(u32 valid_ant, u32 *rate_n_flags, */ static bool rs_use_green(struct ieee80211_sta *sta) { - struct iwl_station_priv *sta_priv = (void *)sta->drv_priv; - struct iwl_rxon_context *ctx = sta_priv->ctx; - - return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && - !(ctx->ht.non_gf_sta_present); + /* +* There's a bug somewhere in this code that causes the +* scaling to get stuck because GF+SGI can't be combined +* in SISO rates. Until we find that bug, disable GF, it +* has only limited benefit and we still interoperate with +* GF APs since we can always receive GF transmissions. +*/ + return false; } /** diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index f322596..3f7bc5c 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c @@ -2243,8 +2243,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) { - struct ieee80211_conf conf = { .flags = 0 }; - struct rt2x00lib_conf libconf = { .conf = }; + struct rt2x00lib_conf libconf = { .conf = >hw->conf }; rt61pci_config(rt2x00dev, , IEEE80211_CONF_CHANGE_PS); } diff --git a/net/wireless/core.c b/net/wireless/core.c index 31b40cc..dcd64d5 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -952,6 +952,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, */ synchronize_rcu(); INIT_LIST_HEAD(>list); + /* +* Ensure that all events have been processed and +* freed. +*/ + cfg80211_process_wdev_events(wdev); break; case NETDEV_PRE_UP: if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) diff --git a/net/wireless/core.h b/net/wireless/core.h index 5206c68..bc7430b 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h @@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, struct net_device *dev, enum nl80211_iftype ntype, u32 *flags, struct vif_params *params); void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); +void cfg80211_process_wdev_events(struct wireless_dev *wdev); int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, diff --git a/net/wireless/util.c b/net/wireless/util.c index 26f8cd3..994e2f0 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c @@ -735,7 +735,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) wdev->connect_keys = NULL; } -static void cfg80211_process_wdev_events(struct wireless_dev *wdev) +void cfg80211_process_wdev_events(struct wireless_dev *wdev) { struct
pull request: wireless 2012-08-10
commit 039aafba1b57ed39acb3abc290c11be37402feb2 Dave, Here is a handful of fixes intended for 3.6. Daniel Drake offers a cfg80211 fix to consume pending events before taking a wireless device down. This prevents a resource leak. Stanislaw Gruszka gives us a fix for a NULL pointer dereference in rt61pci. Johannes Berg provides an iwlwifi patch to disable greenfield mode. Use of that mode was causing a rate scaling problem in for iwlwifi. Please let me know if there are problems! Thanks, John --- The following changes since commit 63d02d157ec4124990258d66517b6c11fd6df0cf: net: tcp: ipv6_mapped needs sk_rx_dst_set method (2012-08-09 20:56:09 -0700) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem for you to fetch changes up to 039aafba1b57ed39acb3abc290c11be37402feb2: Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem (2012-08-10 14:05:38 -0400) Daniel Drake (1): cfg80211: process pending events when unregistering net device Johannes Berg (1): iwlwifi: disable greenfield transmissions as a workaround John W. Linville (1): Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem Stanislaw Gruszka (1): rt61pci: fix NULL pointer dereference in config_lna_gain drivers/net/wireless/iwlwifi/dvm/rs.c | 13 - drivers/net/wireless/rt2x00/rt61pci.c |3 +-- net/wireless/core.c |5 + net/wireless/core.h |1 + net/wireless/util.c |2 +- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/dvm/rs.c b/drivers/net/wireless/iwlwifi/dvm/rs.c index 6fddd27..a82f46c 100644 --- a/drivers/net/wireless/iwlwifi/dvm/rs.c +++ b/drivers/net/wireless/iwlwifi/dvm/rs.c @@ -707,11 +707,14 @@ static int rs_toggle_antenna(u32 valid_ant, u32 *rate_n_flags, */ static bool rs_use_green(struct ieee80211_sta *sta) { - struct iwl_station_priv *sta_priv = (void *)sta-drv_priv; - struct iwl_rxon_context *ctx = sta_priv-ctx; - - return (sta-ht_cap.cap IEEE80211_HT_CAP_GRN_FLD) - !(ctx-ht.non_gf_sta_present); + /* +* There's a bug somewhere in this code that causes the +* scaling to get stuck because GF+SGI can't be combined +* in SISO rates. Until we find that bug, disable GF, it +* has only limited benefit and we still interoperate with +* GF APs since we can always receive GF transmissions. +*/ + return false; } /** diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index f322596..3f7bc5c 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c @@ -2243,8 +2243,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) { - struct ieee80211_conf conf = { .flags = 0 }; - struct rt2x00lib_conf libconf = { .conf = conf }; + struct rt2x00lib_conf libconf = { .conf = rt2x00dev-hw-conf }; rt61pci_config(rt2x00dev, libconf, IEEE80211_CONF_CHANGE_PS); } diff --git a/net/wireless/core.c b/net/wireless/core.c index 31b40cc..dcd64d5 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -952,6 +952,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, */ synchronize_rcu(); INIT_LIST_HEAD(wdev-list); + /* +* Ensure that all events have been processed and +* freed. +*/ + cfg80211_process_wdev_events(wdev); break; case NETDEV_PRE_UP: if (!(wdev-wiphy-interface_modes BIT(wdev-iftype))) diff --git a/net/wireless/core.h b/net/wireless/core.h index 5206c68..bc7430b 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h @@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, struct net_device *dev, enum nl80211_iftype ntype, u32 *flags, struct vif_params *params); void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); +void cfg80211_process_wdev_events(struct wireless_dev *wdev); int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, diff --git a/net/wireless/util.c b/net/wireless/util.c index 26f8cd3..994e2f0 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c @@ -735,7 +735,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) wdev-connect_keys = NULL; } -static void cfg80211_process_wdev_events(struct wireless_dev *wdev) +void cfg80211_process_wdev_events(struct wireless_dev *wdev) {
Re: pull request: wireless 2012-08-10
From: John W. Linville linvi...@tuxdriver.com Date: Fri, 10 Aug 2012 14:33:51 -0400 Here is a handful of fixes intended for 3.6. Daniel Drake offers a cfg80211 fix to consume pending events before taking a wireless device down. This prevents a resource leak. Stanislaw Gruszka gives us a fix for a NULL pointer dereference in rt61pci. Johannes Berg provides an iwlwifi patch to disable greenfield mode. Use of that mode was causing a rate scaling problem in for iwlwifi. Please let me know if there are problems! Pulled, thanks John. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/