diff options
Diffstat (limited to 'net/mac80211/ht.c')
| -rw-r--r-- | net/mac80211/ht.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c index b84147ac5b4c..0db25d4bb223 100644 --- a/net/mac80211/ht.c +++ b/net/mac80211/ht.c | |||
| @@ -102,6 +102,7 @@ bool ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_sub_if_data *sdata, | |||
| 102 | int i, max_tx_streams; | 102 | int i, max_tx_streams; |
| 103 | bool changed; | 103 | bool changed; |
| 104 | enum ieee80211_sta_rx_bandwidth bw; | 104 | enum ieee80211_sta_rx_bandwidth bw; |
| 105 | enum ieee80211_smps_mode smps_mode; | ||
| 105 | 106 | ||
| 106 | memset(&ht_cap, 0, sizeof(ht_cap)); | 107 | memset(&ht_cap, 0, sizeof(ht_cap)); |
| 107 | 108 | ||
| @@ -216,6 +217,24 @@ bool ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_sub_if_data *sdata, | |||
| 216 | ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? | 217 | ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? |
| 217 | IEEE80211_STA_RX_BW_40 : IEEE80211_STA_RX_BW_20; | 218 | IEEE80211_STA_RX_BW_40 : IEEE80211_STA_RX_BW_20; |
| 218 | 219 | ||
| 220 | switch ((ht_cap.cap & IEEE80211_HT_CAP_SM_PS) | ||
| 221 | >> IEEE80211_HT_CAP_SM_PS_SHIFT) { | ||
| 222 | case WLAN_HT_CAP_SM_PS_INVALID: | ||
| 223 | case WLAN_HT_CAP_SM_PS_STATIC: | ||
| 224 | smps_mode = IEEE80211_SMPS_STATIC; | ||
| 225 | break; | ||
| 226 | case WLAN_HT_CAP_SM_PS_DYNAMIC: | ||
| 227 | smps_mode = IEEE80211_SMPS_DYNAMIC; | ||
| 228 | break; | ||
| 229 | case WLAN_HT_CAP_SM_PS_DISABLED: | ||
| 230 | smps_mode = IEEE80211_SMPS_OFF; | ||
| 231 | break; | ||
| 232 | } | ||
| 233 | |||
| 234 | if (smps_mode != sta->sta.smps_mode) | ||
| 235 | changed = true; | ||
| 236 | sta->sta.smps_mode = smps_mode; | ||
| 237 | |||
| 219 | return changed; | 238 | return changed; |
| 220 | } | 239 | } |
| 221 | 240 | ||
