mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 07:04:24 +00:00
wifi: iwlwifi: nvm: Update HE capabilities on 6GHz band for EHT device
Max A-MPDU length exponent shall be set to 2 for EHT capable device on 6GHz band in order to support 4MB aggregation. Update HE MAC capabilities accordingly for station and softap interfaces. This change requires to add another ieee80211_sband_iftype_data for uhb since high/uhb are no longer the same. Signed-off-by: Daniel Gabay <daniel.gabay@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230413102635.1eee32cfd199.I9c5ff3a6956d509137deca620814935149516fbc@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
a0c8ab93eb
commit
cb75abcebc
2 changed files with 10 additions and 5 deletions
|
@ -47,13 +47,12 @@ struct iwl_nvm_data {
|
|||
struct ieee80211_supported_band bands[NUM_NL80211_BANDS];
|
||||
|
||||
/*
|
||||
* iftype data for low (2.4 GHz) and high (5 and 6 GHz) bands,
|
||||
* we can use the same for 5 and 6 GHz bands because they have
|
||||
* the same data
|
||||
* iftype data for low (2.4 GHz) high (5 GHz) and uhb (6 GHz) bands
|
||||
*/
|
||||
struct {
|
||||
struct ieee80211_sband_iftype_data low[2];
|
||||
struct ieee80211_sband_iftype_data high[2];
|
||||
struct ieee80211_sband_iftype_data uhb[2];
|
||||
} iftd;
|
||||
|
||||
struct ieee80211_channel channels[];
|
||||
|
|
|
@ -860,7 +860,10 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans,
|
|||
/* Advertise an A-MPDU exponent extension based on
|
||||
* operating band
|
||||
*/
|
||||
if (sband->band != NL80211_BAND_2GHZ)
|
||||
if (sband->band == NL80211_BAND_6GHZ && iftype_data->eht_cap.has_eht)
|
||||
iftype_data->he_cap.he_cap_elem.mac_cap_info[3] |=
|
||||
IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_EXT_2;
|
||||
else if (sband->band != NL80211_BAND_2GHZ)
|
||||
iftype_data->he_cap.he_cap_elem.mac_cap_info[3] |=
|
||||
IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_EXT_1;
|
||||
else
|
||||
|
@ -996,15 +999,18 @@ static void iwl_init_he_hw_capab(struct iwl_trans *trans,
|
|||
|
||||
BUILD_BUG_ON(sizeof(data->iftd.low) != sizeof(iwl_he_eht_capa));
|
||||
BUILD_BUG_ON(sizeof(data->iftd.high) != sizeof(iwl_he_eht_capa));
|
||||
BUILD_BUG_ON(sizeof(data->iftd.uhb) != sizeof(iwl_he_eht_capa));
|
||||
|
||||
switch (sband->band) {
|
||||
case NL80211_BAND_2GHZ:
|
||||
iftype_data = data->iftd.low;
|
||||
break;
|
||||
case NL80211_BAND_5GHZ:
|
||||
case NL80211_BAND_6GHZ:
|
||||
iftype_data = data->iftd.high;
|
||||
break;
|
||||
case NL80211_BAND_6GHZ:
|
||||
iftype_data = data->iftd.uhb;
|
||||
break;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue