diff options
| author | John W. Linville <linville@tuxdriver.com> | 2012-08-10 14:05:38 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2012-08-10 14:05:38 -0400 |
| commit | 039aafba1b57ed39acb3abc290c11be37402feb2 (patch) | |
| tree | b8c07e7204d07f47921e5c64b068a88eb8457747 | |
| parent | 63d02d157ec4124990258d66517b6c11fd6df0cf (diff) | |
| parent | 50e2a30cf6fcaeb2d27360ba614dd169a10041c5 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
| -rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/rs.c | 13 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 3 | ||||
| -rw-r--r-- | net/wireless/core.c | 5 | ||||
| -rw-r--r-- | net/wireless/core.h | 1 | ||||
| -rw-r--r-- | 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 6fddd2785e6e..a82f46c10f5e 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, | |||
| 707 | */ | 707 | */ |
| 708 | static bool rs_use_green(struct ieee80211_sta *sta) | 708 | static bool rs_use_green(struct ieee80211_sta *sta) |
| 709 | { | 709 | { |
| 710 | struct iwl_station_priv *sta_priv = (void *)sta->drv_priv; | 710 | /* |
| 711 | struct iwl_rxon_context *ctx = sta_priv->ctx; | 711 | * There's a bug somewhere in this code that causes the |
| 712 | 712 | * scaling to get stuck because GF+SGI can't be combined | |
| 713 | return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && | 713 | * in SISO rates. Until we find that bug, disable GF, it |
| 714 | !(ctx->ht.non_gf_sta_present); | 714 | * has only limited benefit and we still interoperate with |
| 715 | * GF APs since we can always receive GF transmissions. | ||
| 716 | */ | ||
| 717 | return false; | ||
| 715 | } | 718 | } |
| 716 | 719 | ||
| 717 | /** | 720 | /** |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index f32259686b45..3f7bc5cadf9a 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) | |||
| 2243 | 2243 | ||
| 2244 | static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) | 2244 | static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) |
| 2245 | { | 2245 | { |
| 2246 | struct ieee80211_conf conf = { .flags = 0 }; | 2246 | struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf }; |
| 2247 | struct rt2x00lib_conf libconf = { .conf = &conf }; | ||
| 2248 | 2247 | ||
| 2249 | rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); | 2248 | rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); |
| 2250 | } | 2249 | } |
diff --git a/net/wireless/core.c b/net/wireless/core.c index 31b40cc4a9c3..dcd64d5b07aa 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, | |||
| 952 | */ | 952 | */ |
| 953 | synchronize_rcu(); | 953 | synchronize_rcu(); |
| 954 | INIT_LIST_HEAD(&wdev->list); | 954 | INIT_LIST_HEAD(&wdev->list); |
| 955 | /* | ||
| 956 | * Ensure that all events have been processed and | ||
| 957 | * freed. | ||
| 958 | */ | ||
| 959 | cfg80211_process_wdev_events(wdev); | ||
| 955 | break; | 960 | break; |
| 956 | case NETDEV_PRE_UP: | 961 | case NETDEV_PRE_UP: |
| 957 | if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) | 962 | if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) |
diff --git a/net/wireless/core.h b/net/wireless/core.h index 5206c6844fd7..bc7430b54771 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h | |||
| @@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, | |||
| 426 | struct net_device *dev, enum nl80211_iftype ntype, | 426 | struct net_device *dev, enum nl80211_iftype ntype, |
| 427 | u32 *flags, struct vif_params *params); | 427 | u32 *flags, struct vif_params *params); |
| 428 | void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); | 428 | void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); |
| 429 | void cfg80211_process_wdev_events(struct wireless_dev *wdev); | ||
| 429 | 430 | ||
| 430 | int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev, | 431 | int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev, |
| 431 | struct wireless_dev *wdev, | 432 | struct wireless_dev *wdev, |
diff --git a/net/wireless/util.c b/net/wireless/util.c index 26f8cd30f712..994e2f0cc7a8 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c | |||
| @@ -735,7 +735,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) | |||
| 735 | wdev->connect_keys = NULL; | 735 | wdev->connect_keys = NULL; |
| 736 | } | 736 | } |
| 737 | 737 | ||
| 738 | static void cfg80211_process_wdev_events(struct wireless_dev *wdev) | 738 | void cfg80211_process_wdev_events(struct wireless_dev *wdev) |
| 739 | { | 739 | { |
| 740 | struct cfg80211_event *ev; | 740 | struct cfg80211_event *ev; |
| 741 | unsigned long flags; | 741 | unsigned long flags; |
