kernel-module-nxp-wlan: fix HE Rate Index warning

Translate the enum between FW and Driver to avoid a kernel index warning.

https://onedigi.atlassian.net/browse/DEL-8636

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
This commit is contained in:
Isaac Hermida 2023-08-01 13:02:10 +02:00
parent bc4aaf2237
commit 87ebf1f15d
2 changed files with 71 additions and 0 deletions

View File

@ -3,6 +3,7 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:" FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
SRC_URI:append = " \ SRC_URI:append = " \
file://0001-Fix-for-the-HE-Rate-Index.patch \
file://81-iw612-wifi.rules \ file://81-iw612-wifi.rules \
file://load_iw612.sh \ file://load_iw612.sh \
" "

View File

@ -0,0 +1,70 @@
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)