diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-03-02 09:56:59 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-05 15:53:46 -0500 |
commit | 3abead59fcdeb56df8b83288a2f5edbe6423b0bb (patch) | |
tree | dd9ee248d46e9a7fe6e583507bebc93015b8e4d6 /net/mac80211/util.c | |
parent | 293702a3fb75832613e2af097bdc3ac8ef775b33 (diff) |
mac80211: combine QoS with other BSS changes
When associating and particularly when disassociating
there's no need to notify the driver about changes
with multiple calls to bss_info_changed, we should
combine the QoS enabling/disabling into the same call
as otherwise the driver could get confused about QoS
suddenly getting disabled while connected.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index f6e4cef92021..0a5ad95ac8b0 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -737,7 +737,8 @@ void ieee802_11_parse_elems(u8 *start, size_t len, | |||
737 | ieee802_11_parse_elems_crc(start, len, elems, 0, 0); | 737 | ieee802_11_parse_elems_crc(start, len, elems, 0, 0); |
738 | } | 738 | } |
739 | 739 | ||
740 | void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata) | 740 | void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata, |
741 | bool bss_notify) | ||
741 | { | 742 | { |
742 | struct ieee80211_local *local = sdata->local; | 743 | struct ieee80211_local *local = sdata->local; |
743 | struct ieee80211_tx_queue_params qparam; | 744 | struct ieee80211_tx_queue_params qparam; |
@@ -807,7 +808,9 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata) | |||
807 | if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { | 808 | if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { |
808 | sdata->vif.bss_conf.qos = | 809 | sdata->vif.bss_conf.qos = |
809 | sdata->vif.type != NL80211_IFTYPE_STATION; | 810 | sdata->vif.type != NL80211_IFTYPE_STATION; |
810 | ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS); | 811 | if (bss_notify) |
812 | ieee80211_bss_info_change_notify(sdata, | ||
813 | BSS_CHANGED_QOS); | ||
811 | } | 814 | } |
812 | } | 815 | } |
813 | 816 | ||
@@ -829,7 +832,7 @@ void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, | |||
829 | else | 832 | else |
830 | sdata->flags &= ~IEEE80211_SDATA_OPERATING_GMODE; | 833 | sdata->flags &= ~IEEE80211_SDATA_OPERATING_GMODE; |
831 | 834 | ||
832 | ieee80211_set_wmm_default(sdata); | 835 | ieee80211_set_wmm_default(sdata, true); |
833 | } | 836 | } |
834 | 837 | ||
835 | u32 ieee80211_mandatory_rates(struct ieee80211_local *local, | 838 | u32 ieee80211_mandatory_rates(struct ieee80211_local *local, |