@@ -119,10 +119,12 @@ static u64 get_eht_mcs_ra_mask(u8 *max_nss, u8 start_mcs, u8 n_nss)
119
119
return mask ;
120
120
}
121
121
122
- static u64 get_eht_ra_mask (struct ieee80211_link_sta * link_sta )
122
+ static u64 get_eht_ra_mask (struct rtw89_vif_link * rtwvif_link ,
123
+ struct ieee80211_link_sta * link_sta )
123
124
{
124
- struct ieee80211_sta_eht_cap * eht_cap = & link_sta -> eht_cap ;
125
+ struct ieee80211_vif * vif = rtwvif_link_to_vif ( rtwvif_link ) ;
125
126
struct ieee80211_eht_mcs_nss_supp_20mhz_only * mcs_nss_20mhz ;
127
+ struct ieee80211_sta_eht_cap * eht_cap = & link_sta -> eht_cap ;
126
128
struct ieee80211_eht_mcs_nss_supp_bw * mcs_nss ;
127
129
u8 * he_phy_cap = link_sta -> he_cap .he_cap_elem .phy_cap_info ;
128
130
@@ -136,8 +138,8 @@ static u64 get_eht_ra_mask(struct ieee80211_link_sta *link_sta)
136
138
/* MCS 9, 11, 13 */
137
139
return get_eht_mcs_ra_mask (mcs_nss -> rx_tx_max_nss , 9 , 3 );
138
140
case IEEE80211_STA_RX_BW_20 :
139
- if (!( he_phy_cap [ 0 ] &
140
- IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_MASK_ALL )) {
141
+ if (vif -> type == NL80211_IFTYPE_AP & &
142
+ !( he_phy_cap [ 0 ] & IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_MASK_ALL )) {
141
143
mcs_nss_20mhz = & eht_cap -> eht_mcs_nss_supp .only_20mhz ;
142
144
/* MCS 7, 9, 11, 13 */
143
145
return get_eht_mcs_ra_mask (mcs_nss_20mhz -> rx_tx_max_nss , 7 , 4 );
@@ -332,7 +334,7 @@ static void rtw89_phy_ra_sta_update(struct rtw89_dev *rtwdev,
332
334
/* Set the ra mask from sta's capability */
333
335
if (link_sta -> eht_cap .has_eht ) {
334
336
mode |= RTW89_RA_MODE_EHT ;
335
- ra_mask |= get_eht_ra_mask (link_sta );
337
+ ra_mask |= get_eht_ra_mask (rtwvif_link , link_sta );
336
338
337
339
if (rtwdev -> hal .no_mcs_12_13 )
338
340
high_rate_masks = rtw89_ra_mask_eht_mcs0_11 ;
0 commit comments