Re: pull request: wireless 2012-08-10

2012-08-10 Thread David Miller
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

2012-08-10 Thread John W. Linville
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

2012-08-10 Thread John W. Linville
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

2012-08-10 Thread David Miller
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/