summaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorShaul Triebitz <shaul.triebitz@intel.com>2018-12-15 04:03:15 -0500
committerJohannes Berg <johannes.berg@intel.com>2018-12-18 08:19:10 -0500
commit2e249fc320862e3f75fd255a21554d6de90fb55a (patch)
tree17f3887ac4bf50a182e4550e7baf5508dc3545e2 /net/mac80211/mlme.c
parentdaa5b83513a7a85491ffa03e7aabd9d7348e97d5 (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.c12
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);