Loading drivers/net/wireless/iwlwifi/dvm/rs.c +8 −5 Original line number Original line Diff line number Diff line Loading @@ -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) 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; * There's a bug somewhere in this code that causes the * scaling to get stuck because GF+SGI can't be combined return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && * in SISO rates. Until we find that bug, disable GF, it !(ctx->ht.non_gf_sta_present); * has only limited benefit and we still interoperate with * GF APs since we can always receive GF transmissions. */ return false; } } /** /** Loading drivers/net/wireless/rt2x00/rt61pci.c +1 −2 Original line number Original line Diff line number Diff line Loading @@ -2243,8 +2243,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) { { struct ieee80211_conf conf = { .flags = 0 }; struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf }; struct rt2x00lib_conf libconf = { .conf = &conf }; rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); } } Loading net/wireless/core.c +5 −0 Original line number Original line Diff line number Diff line Loading @@ -952,6 +952,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, */ */ synchronize_rcu(); synchronize_rcu(); INIT_LIST_HEAD(&wdev->list); INIT_LIST_HEAD(&wdev->list); /* * Ensure that all events have been processed and * freed. */ cfg80211_process_wdev_events(wdev); break; break; case NETDEV_PRE_UP: case NETDEV_PRE_UP: if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) Loading net/wireless/core.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, struct net_device *dev, enum nl80211_iftype ntype, struct net_device *dev, enum nl80211_iftype ntype, u32 *flags, struct vif_params *params); u32 *flags, struct vif_params *params); void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); 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, int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, struct wireless_dev *wdev, Loading net/wireless/util.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -735,7 +735,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) wdev->connect_keys = NULL; wdev->connect_keys = NULL; } } static void cfg80211_process_wdev_events(struct wireless_dev *wdev) void cfg80211_process_wdev_events(struct wireless_dev *wdev) { { struct cfg80211_event *ev; struct cfg80211_event *ev; unsigned long flags; unsigned long flags; Loading Loading
drivers/net/wireless/iwlwifi/dvm/rs.c +8 −5 Original line number Original line Diff line number Diff line Loading @@ -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) 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; * There's a bug somewhere in this code that causes the * scaling to get stuck because GF+SGI can't be combined return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && * in SISO rates. Until we find that bug, disable GF, it !(ctx->ht.non_gf_sta_present); * has only limited benefit and we still interoperate with * GF APs since we can always receive GF transmissions. */ return false; } } /** /** Loading
drivers/net/wireless/rt2x00/rt61pci.c +1 −2 Original line number Original line Diff line number Diff line Loading @@ -2243,8 +2243,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) { { struct ieee80211_conf conf = { .flags = 0 }; struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf }; struct rt2x00lib_conf libconf = { .conf = &conf }; rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); } } Loading
net/wireless/core.c +5 −0 Original line number Original line Diff line number Diff line Loading @@ -952,6 +952,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, */ */ synchronize_rcu(); synchronize_rcu(); INIT_LIST_HEAD(&wdev->list); INIT_LIST_HEAD(&wdev->list); /* * Ensure that all events have been processed and * freed. */ cfg80211_process_wdev_events(wdev); break; break; case NETDEV_PRE_UP: case NETDEV_PRE_UP: if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) Loading
net/wireless/core.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, struct net_device *dev, enum nl80211_iftype ntype, struct net_device *dev, enum nl80211_iftype ntype, u32 *flags, struct vif_params *params); u32 *flags, struct vif_params *params); void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); 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, int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, struct wireless_dev *wdev, Loading
net/wireless/util.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -735,7 +735,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) wdev->connect_keys = NULL; wdev->connect_keys = NULL; } } static void cfg80211_process_wdev_events(struct wireless_dev *wdev) void cfg80211_process_wdev_events(struct wireless_dev *wdev) { { struct cfg80211_event *ev; struct cfg80211_event *ev; unsigned long flags; unsigned long flags; Loading