[][MAC80211][WiFi7][app][Add support for per-packet bw & primary selection]
[Description]
Add support for per-packet bw & primary selection index configuration
This is used for ibf calibaration of group 9 ~ 13 in Kite
[Release-log]
N/A
Change-Id: I1716a61f4b8b67bc0098d6208912f9e995cfa618
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/9371130
diff --git a/feed/app/atenl/files/iwpriv.sh b/feed/app/atenl/files/iwpriv.sh
index b636bf8..a010e00 100755
--- a/feed/app/atenl/files/iwpriv.sh
+++ b/feed/app/atenl/files/iwpriv.sh
@@ -369,15 +369,72 @@
do_cmd "mt76-test ${interface} set tx_rate_sgi=${sgi} tx_ltf=${he_ltf}"
}
+function convert_tm_cbw_to_nl {
+ local cbw=$1
+ local bw="NOHT"
+
+ case ${cbw} in
+ # TM_CBW_20MHZ
+ "0")
+ bw="20"
+ ;;
+ # TM_CBW_40MHZ
+ "1")
+ bw="40"
+ ;;
+ # TM_CBW_80MHZ
+ "2")
+ bw="80"
+ ;;
+ # TM_CBW_10MHZ
+ "3")
+ bw="10"
+ ;;
+ # TM_CBW_5MHZ
+ "4")
+ bw="5"
+ ;;
+ # TM_CBW_160MHZ
+ "5")
+ bw="160"
+ ;;
+ # TM_CBW_8080MHZ
+ "6")
+ bw="80p80"
+ ;;
+ # TM_CBW_320MHZ
+ "12")
+ bw="320"
+ ;;
+ esac
+
+ echo ${bw}
+}
+
+function convert_bw {
+ local system_bw=$(echo $1 | sed s/:/' '/g | cut -d " " -f 1)
+ local data_bw=$(echo $1 | sed s/:/' '/g | cut -d " " -f 2)
+ # Convert TM_CBW to NL80211_CHAN_WIDTH
+ local tx_pkt_bw=$(convert_tm_cbw_to_nl ${data_bw})
+
+ record_config "ATETXBW" ${system_bw} ${iwpriv_file}
+
+ # apply per-packet bw
+ if [[ $1 == *":"* ]]; then
+ do_cmd "mt76-test phy${phy_idx} set tx_pkt_bw=${tx_pkt_bw}"
+ fi
+}
+
function convert_channel {
- local ctrl_band_idx=$(get_config "ATECTRLBANDIDX" ${iwpriv_file})
local ch=$(echo $1 | sed s/:/' '/g | cut -d " " -f 1)
+ local band=$(echo $1 | sed s/:/' '/g | cut -d " " -f 2)
+ local pri_sel=$(echo $1 | sed s/:/' '/g | cut -d " " -f 3)
+ local ctrl_band_idx=$(get_config "ATECTRLBANDIDX" ${iwpriv_file})
local bw=$(get_config "ATETXBW" ${iwpriv_file} | cut -d ":" -f 1)
local bw_str="HT20"
local base_chan=1
local control_freq=0
local base_freq=0
- local band=$(echo $1 | sed s/:/' '/g | cut -d " " -f 2)
local temp=$((phy_idx+1))
# Handle ATECTRLBANDIDX
@@ -403,6 +460,10 @@
fi
fi
+ if [[ $1 == *":"* ]] && [ -n "${pri_sel}" ]; then
+ do_cmd "mt76-test phy${phy_idx} set tx_pri_sel=${pri_sel}"
+ fi
+
if [[ $1 != *":"* ]] || [ "${band}" = "0" ]; then
case ${bw} in
"1")
@@ -1327,7 +1388,7 @@
param_new=${param}
;;
"ATETXBW")
- record_config ${cmd} ${param} ${iwpriv_file}
+ convert_bw ${param}
skip=1
;;
"ATECHANNEL")
diff --git a/feed/app/atenl/src/nl.h b/feed/app/atenl/src/nl.h
index 7d9b20d..b580a01 100644
--- a/feed/app/atenl/src/nl.h
+++ b/feed/app/atenl/src/nl.h
@@ -33,6 +33,9 @@
* @MT76_TM_ATTR_TX_POWER_CONTROL: enable tx power control (u8)
* @MT76_TM_ATTR_TX_POWER: per-antenna tx power array (nested, u8 attrs)
*
+ * @MT76_TM_ATTR_TX_PKT_BW: per-packet data bandwidth (u8)
+ * @MT76_TM_ATTR_TX_PRI_SEL: primary channel selection index (u8)
+ *
* @MT76_TM_ATTR_FREQ_OFFSET: RF frequency offset (u32)
*
* @MT76_TM_ATTR_STATS: statistics (nested, see &enum mt76_testmode_stats_attr)
@@ -104,6 +107,9 @@
MT76_TM_ATTR_TX_POWER_CONTROL,
MT76_TM_ATTR_TX_POWER,
+ MT76_TM_ATTR_TX_PKT_BW,
+ MT76_TM_ATTR_TX_PRI_SEL,
+
MT76_TM_ATTR_FREQ_OFFSET,
MT76_TM_ATTR_STATS,