71 lines
2.3 KiB
Diff
71 lines
2.3 KiB
Diff
From: Achyut Hegde <achyut.hegde@nxp.com>
|
|
Date: Thu, 28 Apr 2022 17:51:45 +0000
|
|
Subject: [PATCH] Fix for the HE Rate Index
|
|
|
|
---
|
|
.../mlinux/moal_sta_cfg80211.c | 37 ++++++++++++++++++-
|
|
1 file changed, 35 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/mxm_wifiex/mlinux/moal_sta_cfg80211.c b/mxm_wifiex/mlinux/moal_sta_cfg80211.c
|
|
index bf39f0e9b003..5f300288a6c8 100644
|
|
--- a/mlinux/moal_sta_cfg80211.c
|
|
+++ b/mlinux/moal_sta_cfg80211.c
|
|
@@ -3393,6 +3393,37 @@ done:
|
|
return ret;
|
|
}
|
|
|
|
+#if CFG80211_VERSION_CODE >= KERNEL_VERSION(5, 1, 18)
|
|
+/**
|
|
+ * @brief This function convert he_gi to nl80211_he_gi
|
|
+ *
|
|
+ * @param he_gi 0/1/2/3
|
|
+ *
|
|
+ *
|
|
+ * @return 0: NL80211_RATE_INFO_HE_GI_0_8
|
|
+ * 1: NL80211_RATE_INFO_HE_GI_1_6
|
|
+ * 2: NL80211_RATE_INFO_HE_GI_3_2
|
|
+ */
|
|
+static t_u8 woal_he_gi_to_nl80211_he_gi(t_u8 he_gi)
|
|
+{
|
|
+ t_u8 cfg_he_gi = 0;
|
|
+ switch(he_gi){
|
|
+ case 3:
|
|
+ cfg_he_gi = NL80211_RATE_INFO_HE_GI_3_2;
|
|
+ break;
|
|
+ case 2:
|
|
+ cfg_he_gi = NL80211_RATE_INFO_HE_GI_1_6;
|
|
+ break;
|
|
+ case 0:
|
|
+ case 1:
|
|
+ default:
|
|
+ cfg_he_gi = NL80211_RATE_INFO_HE_GI_0_8;
|
|
+ break;
|
|
+ }
|
|
+ return cfg_he_gi;
|
|
+}
|
|
+#endif
|
|
+
|
|
/**
|
|
* @brief Request the driver to fill the tx/rx rate info
|
|
*
|
|
@@ -3469,7 +3500,8 @@ static void woal_cfg80211_fill_rate_info(moal_private *priv,
|
|
sinfo->txrate.flags = RATE_INFO_FLAGS_HE_MCS;
|
|
sinfo->txrate.nss = rate->param.data_rate.tx_nss + 1;
|
|
sinfo->txrate.mcs = rate->param.data_rate.tx_mcs_index;
|
|
- sinfo->txrate.he_gi = rate->param.data_rate.tx_ht_gi;
|
|
+ sinfo->txrate.he_gi = woal_he_gi_to_nl80211_he_gi(
|
|
+ rate->param.data_rate.tx_ht_gi);
|
|
if (rate->param.data_rate.tx_ht_bw == MLAN_VHT_BW80)
|
|
sinfo->txrate.bw = RATE_INFO_BW_80;
|
|
else if (rate->param.data_rate.tx_ht_bw == MLAN_HT_BW40)
|
|
@@ -3516,7 +3548,8 @@ static void woal_cfg80211_fill_rate_info(moal_private *priv,
|
|
sinfo->rxrate.flags = RATE_INFO_FLAGS_HE_MCS;
|
|
sinfo->rxrate.nss = rate->param.data_rate.rx_nss + 1;
|
|
sinfo->rxrate.mcs = rate->param.data_rate.rx_mcs_index;
|
|
- sinfo->rxrate.he_gi = rate->param.data_rate.rx_ht_gi;
|
|
+ sinfo->rxrate.he_gi = woal_he_gi_to_nl80211_he_gi(
|
|
+ rate->param.data_rate.rx_ht_gi);
|
|
if (rate->param.data_rate.rx_ht_bw == MLAN_VHT_BW80)
|
|
sinfo->rxrate.bw = RATE_INFO_BW_80;
|
|
else if (rate->param.data_rate.rx_ht_bw == MLAN_HT_BW40)
|