On 27/01/2025 08:36, Ping-Ke Shih wrote: > Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote: >> The existing code is suitable for chips with up to 2 spatial streams. >> Inform the firmware about the rates it's allowed to use when >> transmitting 3 spatial streams. >> >> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> >> --- >> drivers/net/wireless/realtek/rtw88/fw.c | 14 ++++++++++++++ >> drivers/net/wireless/realtek/rtw88/fw.h | 1 + >> 2 files changed, 15 insertions(+) >> >> diff --git a/drivers/net/wireless/realtek/rtw88/fw.c b/drivers/net/wireless/realtek/rtw88/fw.c >> index 02389b7c6876..0ca1b139110d 100644 >> --- a/drivers/net/wireless/realtek/rtw88/fw.c >> +++ b/drivers/net/wireless/realtek/rtw88/fw.c >> @@ -735,6 +735,7 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, >> { >> u8 h2c_pkt[H2C_PKT_SIZE] = {0}; >> bool disable_pt = true; >> + u32 mask_hi; >> >> SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO); >> >> @@ -755,6 +756,19 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, >> si->init_ra_lv = 0; >> >> rtw_fw_send_h2c_command(rtwdev, h2c_pkt); >> + >> + if (rtwdev->chip->rf_tbl[RF_PATH_C]) { > > Using `efuse->hw_cap.nss >= 3` would be consistent with latter patch. > I would like that, but nss is 2 when RTL8814AU is in USB 2 mode. I assume this is to keep the current draw under the 500 mA limit of USB 2. What about rtwdev->hal.rf_path_num >= 3 ? I don't remember why I didn't do that. >> + SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO_HI); >> + >> + mask_hi = si->ra_mask >> 32; >> + >> + SET_RA_INFO_RA_MASK0(h2c_pkt, (mask_hi & 0xff)); >> + SET_RA_INFO_RA_MASK1(h2c_pkt, (mask_hi & 0xff00) >> 8); >> + SET_RA_INFO_RA_MASK2(h2c_pkt, (mask_hi & 0xff0000) >> 16); >> + SET_RA_INFO_RA_MASK3(h2c_pkt, (mask_hi & 0xff000000) >> 24); >> + >> + rtw_fw_send_h2c_command(rtwdev, h2c_pkt); >> + } >> } > > Prefer calling RA_INFO LO/HI in the same level. I meant > > rtw_fw_send_ra_info() > { > rtw_fw_send_ra_info_lo(); // original RA info > > if (efuse->hw_cap.nss <= 2) > return; > > rtw_fw_send_ra_info_hi(); > } >