33cd29bd458ccfab96434d6a9da488d06dd00726
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / subsys / 391-wireless-align-some-HE-capabilities-with-the-spec.patch
1 From: Johannes Berg <johannes.berg@intel.com>
2 Date: Fri, 9 Apr 2021 12:40:17 +0300
3 Subject: [PATCH] wireless: align some HE capabilities with the spec
4
5 Some names were changed, align that with the spec as of
6 802.11ax-D6.1.
7
8 Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
9 Link: https://lore.kernel.org/r/iwlwifi.20210409123755.b1e5fbab0d8c.I3eb6076cb0714ec6aec6b8f9dee613ce4a05d825@changeid
10 Signed-off-by: Johannes Berg <johannes.berg@intel.com>
11 ---
12
13 --- a/drivers/net/wireless/ath/ath11k/mac.c
14 +++ b/drivers/net/wireless/ath/ath11k/mac.c
15 @@ -3656,7 +3656,7 @@ ath11k_mac_filter_he_cap_mesh(struct iee
16 IEEE80211_HE_MAC_CAP4_BQR;
17 he_cap_elem->mac_cap_info[4] &= ~m;
18
19 - m = IEEE80211_HE_MAC_CAP5_SUBCHAN_SELECVITE_TRANSMISSION |
20 + m = IEEE80211_HE_MAC_CAP5_SUBCHAN_SELECTIVE_TRANSMISSION |
21 IEEE80211_HE_MAC_CAP5_UL_2x996_TONE_RU |
22 IEEE80211_HE_MAC_CAP5_PUNCTURED_SOUNDING |
23 IEEE80211_HE_MAC_CAP5_HT_VHT_TRIG_FRAME_RX;
24 @@ -3666,7 +3666,7 @@ ath11k_mac_filter_he_cap_mesh(struct iee
25 IEEE80211_HE_PHY_CAP2_UL_MU_PARTIAL_MU_MIMO;
26 he_cap_elem->phy_cap_info[2] &= ~m;
27
28 - m = IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA |
29 + m = IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU |
30 IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_MASK |
31 IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK;
32 he_cap_elem->phy_cap_info[3] &= ~m;
33 @@ -3678,13 +3678,13 @@ ath11k_mac_filter_he_cap_mesh(struct iee
34 he_cap_elem->phy_cap_info[5] &= ~m;
35
36 m = IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU |
37 - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB |
38 + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB |
39 IEEE80211_HE_PHY_CAP6_TRIG_CQI_FB |
40 IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO;
41 he_cap_elem->phy_cap_info[6] &= ~m;
42
43 - m = IEEE80211_HE_PHY_CAP7_SRP_BASED_SR |
44 - IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR |
45 + m = IEEE80211_HE_PHY_CAP7_PSR_BASED_SR |
46 + IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_SUPP |
47 IEEE80211_HE_PHY_CAP7_STBC_TX_ABOVE_80MHZ |
48 IEEE80211_HE_PHY_CAP7_STBC_RX_ABOVE_80MHZ;
49 he_cap_elem->phy_cap_info[7] &= ~m;
50 --- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c
51 +++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c
52 @@ -423,8 +423,8 @@ mt7915_set_stream_he_txbf_caps(struct ie
53 IEEE80211_HE_PHY_CAP5_BEAMFORMEE_NUM_SND_DIM_ABOVE_80MHZ_MASK;
54 elem->phy_cap_info[5] &= ~c;
55
56 - c = IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB |
57 - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB;
58 + c = IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB |
59 + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB;
60 elem->phy_cap_info[6] &= ~c;
61
62 elem->phy_cap_info[7] &= ~IEEE80211_HE_PHY_CAP7_MAX_NC_MASK;
63 @@ -461,8 +461,8 @@ mt7915_set_stream_he_txbf_caps(struct ie
64 c = (nss - 1) | (max_t(int, le16_to_cpu(mcs->tx_mcs_160), 1) << 3);
65 elem->phy_cap_info[5] |= c;
66
67 - c = IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB |
68 - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB;
69 + c = IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB |
70 + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB;
71 elem->phy_cap_info[6] |= c;
72
73 /* the maximum cap is 4 x 3, (Nr, Nc) = (3, 2) */
74 @@ -589,7 +589,7 @@ mt7915_init_he_caps(struct mt7915_phy *p
75 IEEE80211_HE_PHY_CAP6_PARTIAL_BW_EXT_RANGE |
76 IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT;
77 he_cap_elem->phy_cap_info[7] |=
78 - IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR |
79 + IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_SUPP |
80 IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI;
81 he_cap_elem->phy_cap_info[8] |=
82 IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G |
83 --- a/include/linux/ieee80211.h
84 +++ b/include/linux/ieee80211.h
85 @@ -2066,7 +2066,7 @@ int ieee80211_get_vht_max_nss(struct iee
86 #define IEEE80211_HE_MAC_CAP4_BSRP_BQRP_A_MPDU_AGG 0x01
87 #define IEEE80211_HE_MAC_CAP4_QTP 0x02
88 #define IEEE80211_HE_MAC_CAP4_BQR 0x04
89 -#define IEEE80211_HE_MAC_CAP4_SRP_RESP 0x08
90 +#define IEEE80211_HE_MAC_CAP4_PSR_RESP 0x08
91 #define IEEE80211_HE_MAC_CAP4_NDP_FB_REP 0x10
92 #define IEEE80211_HE_MAC_CAP4_OPS 0x20
93 #define IEEE80211_HE_MAC_CAP4_AMDSU_IN_AMPDU 0x40
94 @@ -2077,7 +2077,7 @@ int ieee80211_get_vht_max_nss(struct iee
95
96 #define IEEE80211_HE_MAC_CAP5_MULTI_TID_AGG_TX_QOS_B40 0x01
97 #define IEEE80211_HE_MAC_CAP5_MULTI_TID_AGG_TX_QOS_B41 0x02
98 -#define IEEE80211_HE_MAC_CAP5_SUBCHAN_SELECVITE_TRANSMISSION 0x04
99 +#define IEEE80211_HE_MAC_CAP5_SUBCHAN_SELECTIVE_TRANSMISSION 0x04
100 #define IEEE80211_HE_MAC_CAP5_UL_2x996_TONE_RU 0x08
101 #define IEEE80211_HE_MAC_CAP5_OM_CTRL_UL_MU_DATA_DIS_RX 0x10
102 #define IEEE80211_HE_MAC_CAP5_HE_DYNAMIC_SM_PS 0x20
103 @@ -2135,7 +2135,7 @@ int ieee80211_get_vht_max_nss(struct iee
104 #define IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK 0x18
105 #define IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 0x00
106 #define IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_2 0x20
107 -#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA 0x40
108 +#define IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU 0x40
109 #define IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER 0x80
110
111 #define IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE 0x01
112 @@ -2182,15 +2182,15 @@ int ieee80211_get_vht_max_nss(struct iee
113
114 #define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU 0x01
115 #define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU 0x02
116 -#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB 0x04
117 -#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB 0x08
118 +#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB 0x04
119 +#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB 0x08
120 #define IEEE80211_HE_PHY_CAP6_TRIG_CQI_FB 0x10
121 #define IEEE80211_HE_PHY_CAP6_PARTIAL_BW_EXT_RANGE 0x20
122 #define IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO 0x40
123 #define IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT 0x80
124
125 -#define IEEE80211_HE_PHY_CAP7_SRP_BASED_SR 0x01
126 -#define IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR 0x02
127 +#define IEEE80211_HE_PHY_CAP7_PSR_BASED_SR 0x01
128 +#define IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_SUPP 0x02
129 #define IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI 0x04
130 #define IEEE80211_HE_PHY_CAP7_MAX_NC_1 0x08
131 #define IEEE80211_HE_PHY_CAP7_MAX_NC_2 0x10
132 --- a/net/mac80211/debugfs_sta.c
133 +++ b/net/mac80211/debugfs_sta.c
134 @@ -732,15 +732,15 @@ static ssize_t sta_he_capa_read(struct f
135 PFLAG(MAC, 4, BSRP_BQRP_A_MPDU_AGG, "BSRP-BQRP-A-MPDU-AGG");
136 PFLAG(MAC, 4, QTP, "QTP");
137 PFLAG(MAC, 4, BQR, "BQR");
138 - PFLAG(MAC, 4, SRP_RESP, "SRP-RESP");
139 + PFLAG(MAC, 4, PSR_RESP, "PSR-RESP");
140 PFLAG(MAC, 4, NDP_FB_REP, "NDP-FB-REP");
141 PFLAG(MAC, 4, OPS, "OPS");
142 PFLAG(MAC, 4, AMDSU_IN_AMPDU, "AMSDU-IN-AMPDU");
143
144 PRINT("MULTI-TID-AGG-TX-QOS-%d", ((cap[5] << 1) | (cap[4] >> 7)) & 0x7);
145
146 - PFLAG(MAC, 5, SUBCHAN_SELECVITE_TRANSMISSION,
147 - "SUBCHAN-SELECVITE-TRANSMISSION");
148 + PFLAG(MAC, 5, SUBCHAN_SELECTIVE_TRANSMISSION,
149 + "SUBCHAN-SELECTIVE-TRANSMISSION");
150 PFLAG(MAC, 5, UL_2x996_TONE_RU, "UL-2x996-TONE-RU");
151 PFLAG(MAC, 5, OM_CTRL_UL_MU_DATA_DIS_RX, "OM-CTRL-UL-MU-DATA-DIS-RX");
152 PFLAG(MAC, 5, HE_DYNAMIC_SM_PS, "HE-DYNAMIC-SM-PS");
153 @@ -832,8 +832,8 @@ static ssize_t sta_he_capa_read(struct f
154
155 PFLAG(PHY, 3, DCM_MAX_RX_NSS_1, "DCM-MAX-RX-NSS-1");
156 PFLAG(PHY, 3, DCM_MAX_RX_NSS_2, "DCM-MAX-RX-NSS-2");
157 - PFLAG(PHY, 3, RX_HE_MU_PPDU_FROM_NON_AP_STA,
158 - "RX-HE-MU-PPDU-FROM-NON-AP-STA");
159 + PFLAG(PHY, 3, RX_PARTIAL_BW_SU_IN_20MHZ_MU,
160 + "RX-PARTIAL-BW-SU-IN-20MHZ-MU");
161 PFLAG(PHY, 3, SU_BEAMFORMER, "SU-BEAMFORMER");
162
163 PFLAG(PHY, 4, SU_BEAMFORMEE, "SU-BEAMFORMEE");
164 @@ -853,16 +853,17 @@ static ssize_t sta_he_capa_read(struct f
165
166 PFLAG(PHY, 6, CODEBOOK_SIZE_42_SU, "CODEBOOK-SIZE-42-SU");
167 PFLAG(PHY, 6, CODEBOOK_SIZE_75_MU, "CODEBOOK-SIZE-75-MU");
168 - PFLAG(PHY, 6, TRIG_SU_BEAMFORMER_FB, "TRIG-SU-BEAMFORMER-FB");
169 - PFLAG(PHY, 6, TRIG_MU_BEAMFORMER_FB, "TRIG-MU-BEAMFORMER-FB");
170 + PFLAG(PHY, 6, TRIG_SU_BEAMFORMING_FB, "TRIG-SU-BEAMFORMING-FB");
171 + PFLAG(PHY, 6, TRIG_MU_BEAMFORMING_PARTIAL_BW_FB,
172 + "MU-BEAMFORMING-PARTIAL-BW-FB");
173 PFLAG(PHY, 6, TRIG_CQI_FB, "TRIG-CQI-FB");
174 PFLAG(PHY, 6, PARTIAL_BW_EXT_RANGE, "PARTIAL-BW-EXT-RANGE");
175 PFLAG(PHY, 6, PARTIAL_BANDWIDTH_DL_MUMIMO,
176 "PARTIAL-BANDWIDTH-DL-MUMIMO");
177 PFLAG(PHY, 6, PPE_THRESHOLD_PRESENT, "PPE-THRESHOLD-PRESENT");
178
179 - PFLAG(PHY, 7, SRP_BASED_SR, "SRP-BASED-SR");
180 - PFLAG(PHY, 7, POWER_BOOST_FACTOR_AR, "POWER-BOOST-FACTOR-AR");
181 + PFLAG(PHY, 7, PSR_BASED_SR, "PSR-BASED-SR");
182 + PFLAG(PHY, 7, POWER_BOOST_FACTOR_SUPP, "POWER-BOOST-FACTOR-SUPP");
183 PFLAG(PHY, 7, HE_SU_MU_PPDU_4XLTF_AND_08_US_GI,
184 "HE-SU-MU-PPDU-4XLTF-AND-08-US-GI");
185 PFLAG_RANGE(PHY, 7, MAX_NC, 0, 1, 1, "MAX-NC-%d");
186 --- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
187 +++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
188 @@ -587,7 +587,7 @@ static const struct ieee80211_sband_ifty
189 .phy_cap_info[6] =
190 IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT,
191 .phy_cap_info[7] =
192 - IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR |
193 + IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_SUPP |
194 IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI |
195 IEEE80211_HE_PHY_CAP7_MAX_NC_1,
196 .phy_cap_info[8] =