[][MAC80211][mt76][Enhance iwpriv to read multiple cr]
[Description]
Add new feature to read a range of CRs by one command like $iwpriv phy0 mac
8318b080-8318b08c.
[Release-log]
N/A
Change-Id: If9d61f62da925ae0aab05ba443e0307d5b95e39e
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7051709
diff --git a/feed/atenl/files/iwpriv.sh b/feed/atenl/files/iwpriv.sh
index f606f74..c711126 100755
--- a/feed/atenl/files/iwpriv.sh
+++ b/feed/atenl/files/iwpriv.sh
@@ -972,6 +972,26 @@
echo " mwctl <interface> dump phy_capa"
}
+function register_handler {
+
+ local phy_idx=$1
+ local offset=$2
+ local val=$3
+ local cmd=$4
+ local w_cmd="write"
+
+ regidx=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regidx
+ regval=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regval
+
+ echo ${offset} > ${regidx}
+ if [[ "${cmd}" == "${w_cmd}" ]]; then
+ echo ${val} > ${regval}
+ fi
+
+ res=$(cat ${regval} | cut -d 'x' -f 2)
+ printf "%s mac:[%s]:%s\n" ${interface_ori} ${offset} ${res}
+}
+
# main start here
if [ -z ${interface} ]; then
@@ -1157,19 +1177,29 @@
fi
elif [ "${cmd_type}" = "mac" ]; then
- regidx=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regidx
- regval=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regval
offset=$(printf "0x%s" ${cmd})
val=$(printf "0x%s" ${param})
- echo ${offset} > ${regidx}
# reg write
if [[ ${full_cmd} == *"="* ]]; then
- echo ${val} > ${regval}
- fi
+ register_handler ${phy_idx} ${offset} ${val} "write"
+ else
+ start_addr=$(echo ${full_cmd} | sed s/-/' '/g | cut -d " " -f 1)
+ end_addr=$(echo ${full_cmd} | sed s/-/' '/g | cut -d " " -f 2)
+ loop=$((0x${end_addr}-0x${start_addr}))
- res=$(cat ${regval} | cut -d 'x' -f 2)
- printf "%s mac:[%s]:%s\n" ${interface_ori} ${offset} ${res}
+ if [[ ${loop} == "0" ]]; then
+ register_handler ${phy_idx} ${offset} ${val}
+ else
+ i=0
+ while [ $i -le $loop ]; do
+ addr=$((0x${start_addr}+$i))
+ offset=$(printf "0x%x" ${addr})
+ register_handler ${phy_idx} ${offset} ${val}
+ i=$(($i + 4))
+ done
+ fi
+ fi
## dump command is only for vendor commands
elif [ "${cmd_type}" = "dump" ]; then