diff options
author | Shaul Triebitz <shaul.triebitz@intel.com> | 2018-12-15 04:03:15 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2018-12-18 08:19:10 -0500 |
commit | 2e249fc320862e3f75fd255a21554d6de90fb55a (patch) | |
tree | 17f3887ac4bf50a182e4550e7baf5508dc3545e2 /net/mac80211/mlme.c | |
parent | daa5b83513a7a85491ffa03e7aabd9d7348e97d5 (diff) |
mac80211: update driver when MU EDCA params change
Similar to WMM IE, if MU_EDCA IE parameters changed (or ceased to exist)
tell the Driver about it.
Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 3d1334a4a264..975315b5689a 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1869,7 +1869,7 @@ ieee80211_sta_wmm_params(struct ieee80211_local *local, | |||
1869 | struct ieee80211_tx_queue_params params[IEEE80211_NUM_ACS]; | 1869 | struct ieee80211_tx_queue_params params[IEEE80211_NUM_ACS]; |
1870 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | 1870 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; |
1871 | size_t left; | 1871 | size_t left; |
1872 | int count, ac; | 1872 | int count, mu_edca_count, ac; |
1873 | const u8 *pos; | 1873 | const u8 *pos; |
1874 | u8 uapsd_queues = 0; | 1874 | u8 uapsd_queues = 0; |
1875 | 1875 | ||
@@ -1889,9 +1889,16 @@ ieee80211_sta_wmm_params(struct ieee80211_local *local, | |||
1889 | uapsd_queues = ifmgd->uapsd_queues; | 1889 | uapsd_queues = ifmgd->uapsd_queues; |
1890 | 1890 | ||
1891 | count = wmm_param[6] & 0x0f; | 1891 | count = wmm_param[6] & 0x0f; |
1892 | if (count == ifmgd->wmm_last_param_set) | 1892 | /* -1 is the initial value of ifmgd->mu_edca_last_param_set. |
1893 | * if mu_edca was preset before and now it disappeared tell | ||
1894 | * the driver about it. | ||
1895 | */ | ||
1896 | mu_edca_count = mu_edca ? mu_edca->mu_qos_info & 0x0f : -1; | ||
1897 | if (count == ifmgd->wmm_last_param_set && | ||
1898 | mu_edca_count == ifmgd->mu_edca_last_param_set) | ||
1893 | return false; | 1899 | return false; |
1894 | ifmgd->wmm_last_param_set = count; | 1900 | ifmgd->wmm_last_param_set = count; |
1901 | ifmgd->mu_edca_last_param_set = mu_edca_count; | ||
1895 | 1902 | ||
1896 | pos = wmm_param + 8; | 1903 | pos = wmm_param + 8; |
1897 | left = wmm_param_len - 8; | 1904 | left = wmm_param_len - 8; |
@@ -3349,6 +3356,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata, | |||
3349 | * 4-bit value. | 3356 | * 4-bit value. |
3350 | */ | 3357 | */ |
3351 | ifmgd->wmm_last_param_set = -1; | 3358 | ifmgd->wmm_last_param_set = -1; |
3359 | ifmgd->mu_edca_last_param_set = -1; | ||
3352 | 3360 | ||
3353 | if (ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { | 3361 | if (ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { |
3354 | ieee80211_set_wmm_default(sdata, false, false); | 3362 | ieee80211_set_wmm_default(sdata, false, false); |