331-mac80211-do-not-allow-bigger-VHT-MPDUs-than-the-hard.patch 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. From: Felix Fietkau <[email protected]>
  2. Date: Thu, 17 Sep 2020 12:07:19 +0200
  3. Subject: [PATCH] mac80211: do not allow bigger VHT MPDUs than the hardware
  4. supports
  5. Limit maximum VHT MPDU size by local capability
  6. Signed-off-by: Felix Fietkau <[email protected]>
  7. ---
  8. --- a/net/mac80211/vht.c
  9. +++ b/net/mac80211/vht.c
  10. @@ -168,10 +168,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
  11. /* take some capabilities as-is */
  12. cap_info = le32_to_cpu(vht_cap_ie->vht_cap_info);
  13. vht_cap->cap = cap_info;
  14. - vht_cap->cap &= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 |
  15. - IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 |
  16. - IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 |
  17. - IEEE80211_VHT_CAP_RXLDPC |
  18. + vht_cap->cap &= IEEE80211_VHT_CAP_RXLDPC |
  19. IEEE80211_VHT_CAP_VHT_TXOP_PS |
  20. IEEE80211_VHT_CAP_HTC_VHT |
  21. IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
  22. @@ -180,6 +177,9 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
  23. IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |
  24. IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN;
  25. + vht_cap->cap |= min_t(u32, cap_info & IEEE80211_VHT_CAP_MAX_MPDU_MASK,
  26. + own_cap.cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK);
  27. +
  28. /* and some based on our own capabilities */
  29. switch (own_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) {
  30. case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ: