]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw89: parse TX EHT rate selected by firmware from RA C2H report
authorPing-Ke Shih <pkshih@realtek.com>
Wed, 11 Oct 2023 11:52:54 +0000 (19:52 +0800)
committerKalle Valo <kvalo@kernel.org>
Thu, 12 Oct 2023 12:14:28 +0000 (15:14 +0300)
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
drivers/net/wireless/realtek/rtw89/core.h
drivers/net/wireless/realtek/rtw89/phy.c

index f103ac085d2b935a0a657cec7e139ae63027470c..8c0dfd73031eb8a03c832ad2d247ced7f0c18e4f 100644 (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 {
index 2a3edf77566899239a2137205ac5fddf0595ea28..8a306a86f1f048b1d11868fcb9ca6575a3f01137 100644 (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);