wifi: rtw89: parse TX EHT rate selected by firmware from RA C2H report

RA (rate adaptive) C2H report is to reflect current TX rate firmware is
using. Parse C2H event encoded in EHT mode, and then user space and debugfs
can use the information to know TX rate.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20231011115256.6121-5-pkshih@realtek.com
This commit is contained in:
Ping-Ke Shih 2023-10-11 19:52:54 +08:00 committed by Kalle Valo
parent 1f3cd090b4
commit f456701201
2 changed files with 13 additions and 0 deletions

View File

@ -2742,6 +2742,7 @@ enum rtw89_ra_report_mode {
RTW89_RA_RPT_MODE_HT,
RTW89_RA_RPT_MODE_VHT,
RTW89_RA_RPT_MODE_HE,
RTW89_RA_RPT_MODE_EHT,
};
enum rtw89_dig_noisy_level {

View File

@ -2399,6 +2399,18 @@ static void rtw89_phy_c2h_ra_rpt_iter(void *data, struct ieee80211_sta *sta)
ra_report->txrate.he_gi = NL80211_RATE_INFO_HE_GI_3_2;
mcs = ra_report->txrate.mcs;
break;
case RTW89_RA_RPT_MODE_EHT:
ra_report->txrate.flags |= RATE_INFO_FLAGS_EHT_MCS;
ra_report->txrate.mcs = u8_get_bits(rate, RTW89_RA_RATE_MASK_MCS_V1);
ra_report->txrate.nss = u8_get_bits(rate, RTW89_RA_RATE_MASK_NSS_V1) + 1;
if (giltf == RTW89_GILTF_2XHE08 || giltf == RTW89_GILTF_1XHE08)
ra_report->txrate.eht_gi = NL80211_RATE_INFO_EHT_GI_0_8;
else if (giltf == RTW89_GILTF_2XHE16 || giltf == RTW89_GILTF_1XHE16)
ra_report->txrate.eht_gi = NL80211_RATE_INFO_EHT_GI_1_6;
else
ra_report->txrate.eht_gi = NL80211_RATE_INFO_EHT_GI_3_2;
mcs = ra_report->txrate.mcs;
break;
}
ra_report->txrate.bw = rtw89_hw_to_rate_info_bw(bw);