[][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,