ath11k_nss: Add diagnostic gathering utility

This is meant to ease debugging when asking for support. Just run the
command "nss_diag" and include in your issues/forum posts.

Example of output
```
     MODEL: Linksys MX5300
   OPENWRT: r27645+154-f9a0485c99
IPQ BRANCH: qualcommax-6.x-nss-mx4300-6.11
IPQ COMMIT: 04c2d8a2db
  IPQ DATE: 2024-10-04
    NSS FW: NSS.HK.11.4.0.5-6-R
  MAC80211: v6.11.2-0-g7aa21fec187b
 ATH11K FW: WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
  GRO FRAG: wan         : off
            br-lan      : off
            lan1        : off
            lan2        : off
            lan3        : off
            lan4        : off
            phy0-mesh0  : off
            phy1-ap0    : off
            phy2-ap0    : off

  NSS PKGS: kmod-qca-nss-cfi-cryptoapi - 6.6.54.12.5.2022.12.15~5cd07ce-r3
            kmod-qca-nss-crypto - 6.6.54.12.5.2022.12.15~3c5a574-r3
            kmod-qca-nss-dp - 6.6.54.2024.04.16~5bf8b91e-r1
            kmod-qca-nss-drv - 6.6.54.11.4.0.5.2021.09.13~53e5863-r14
            kmod-qca-nss-drv-bridge-mgr - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-igs - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-qdisc - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-vlan-mgr - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-wifi-meshmgr - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-ecm - 6.6.54.12.5.5.2024.09.02~bd5057b-r2
            nss-eip-firmware - 2.5.7-r3
            nss-firmware-default - 2024.08.04~794fe373-r1
            nss-firmware-ipq8074 - 2024.08.04~794fe373-r1
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
(cherry picked from commit a58914b4f788f6b5ee70ddad0a1f5c4e464a5629)
This commit is contained in:
Sean Khan 2024-10-05 03:37:23 -04:00
parent 972238704c
commit b20dcd7d26
2 changed files with 109 additions and 2 deletions

View File

@ -47,6 +47,9 @@ include $(INCLUDE_DIR)/package.mk
WMENU:=Wireless Drivers WMENU:=Wireless Drivers
NSS_PATCH:= subsys ath10k ath11k NSS_PATCH:= subsys ath10k ath11k
IPQ_BRANCH:=$(shell git -C $(TOPDIR) rev-parse --abbrev-ref HEAD)
IPQ_DATE:=$(shell git -C $(TOPDIR) log -1 --format=%cd --date=format:%Y-%m-%d)
IPQ_COMMIT:=$(shell git -C $(TOPDIR) log -1 --format=%h)
define KernelPackage/mac80211/Default define KernelPackage/mac80211/Default
SUBMENU:=$(WMENU) SUBMENU:=$(WMENU)
@ -438,9 +441,13 @@ endef
ifdef CONFIG_ATH11K_NSS_SUPPORT ifdef CONFIG_ATH11K_NSS_SUPPORT
define KernelPackage/ath11k/install define KernelPackage/ath11k/install
$(INSTALL_DIR) $(1)/etc/init.d $(1)/etc/config $(INSTALL_DIR) $(1)/etc/init.d $(1)/etc/config $(1)/usr/bin
$(INSTALL_BIN) ./files/qca-nss-pbuf.init $(1)/etc/init.d/qca-nss-pbuf $(INSTALL_BIN) ./files/qca-nss-pbuf.init $(1)/etc/init.d/qca-nss-pbuf
$(INSTALL_BIN) ./files/pbuf.uci $(1)/etc/config/pbuf $(INSTALL_DATA) ./files/pbuf.uci $(1)/etc/config/pbuf
$(INSTALL_BIN) ./files/nss_diag.sh $(1)/usr/bin/nss_diag
echo "IPQ_BRANCH=$(IPQ_BRANCH)" > $(1)/etc/ipq_release
echo "IPQ_DATE=$(IPQ_DATE)" >> $(1)/etc/ipq_release
echo "IPQ_COMMIT=$(IPQ_COMMIT)" >> $(1)/etc/ipq_release
endef endef
endif endif

View File

@ -0,0 +1,100 @@
#!/bin/sh
# shellcheck disable=3037,3060,2034,1091
# check if stdout is a terminal, then set colors.
if test -t 1; then
fg=$(printf '\033[38;5;')
bg=$(printf '\033[48;5;')
red=$(printf '\033[31m')
green=$(printf '\033[32m')
yellow=$(printf '\033[33m')
blue=$(printf '\033[34m')
magenta=$(printf '\033[35m')
cyan=$(printf '\033[36m')
white=$(printf '\033[37m')
reset=$(printf '\033[m')
bold=$(printf '\033[1m')
underline=$(printf '\033[4m')
blink=$(printf '\033[5m')
invert=$(printf '\033[7m')
resetbold=$(printf '\033[21m')
resetunderline=$(printf '\033[24m')
else
fg=""
bg=""
red=""
green=""
yellow=""
blue=""
magenta=""
cyan=""
white=""
reset=""
bold=""
underline=""
blink=""
invert=""
resetbold=""
resetunderline=""
fi
[ -r /etc/openwrt_version ] && openwrt_rev=$(cat /etc/openwrt_version)
model=$(jsonfilter -e ''@.model.name'' < /etc/board.json | sed -e "s/,/_/g")
# NSS firmware version
nss_fw="/lib/firmware/qca*.bin"
[ "$(ls $nss_fw 2> /dev/null)" ] && nss_version=$(grep -h -m 1 -a -o 'Version:.[^[:cntrl:]]*' $nss_fw | head -1 | cut -d ' ' -f 2)
# ATH11K firmware version
ath11k_fw=$(grep -h -m 1 -a -o 'WLAN.[^[:cntrl:]]*SILICONZ-1' /lib/firmware/*/q6* | head -1)
# MAC80211 (backports) version
mac80211_version=$(awk '/version/{print $NF;exit}' /lib/modules/*/compat.ko)
# OpenWRT IPQ
[ -r /etc/ipq_release ] && . /etc/ipq_release
ipq_branch=${IPQ_BRANCH:-"N/A"}
ipq_commit=${IPQ_COMMIT:-"N/A"}
ipq_date=${IPQ_DATE:-"N/A"}
[ -z "$openwrt_rev" ] && openwrt_rev="N/A"
[ -z "$model" ] && model="N/A"
[ -z "$nss_version" ] && nss_version="N/A"
[ -z "$ath11k_fw" ] && ath11k_fw="N/A"
[ -z "$mac80211_version" ] && mac80211_version="N/A"
echo -e "${bold}${red} MODEL${reset}: ${white}${model}${reset}"
echo -e "${bold}${red} OPENWRT${reset}: ${yellow}${openwrt_rev}${reset}"
echo -e "${bold}${red}IPQ BRANCH${reset}: ${green}${ipq_branch}${reset}"
echo -e "${bold}${red}IPQ COMMIT${reset}: ${green}${ipq_commit}${reset}"
echo -e "${bold}${red} IPQ DATE${reset}: ${green}${ipq_date}${reset}"
echo -e "${bold}${red} NSS FW${reset}: ${cyan}${nss_version}${reset}"
echo -e "${bold}${red} MAC80211${reset}: ${white}${mac80211_version}${reset}${reset}"
echo -e "${bold}${red} ATH11K FW${reset}: ${cyan}${ath11k_fw}${reset}"
echo -ne "${bold}${red} GRO FRAG${reset}: ${white}"
count=0
for i in wan br-lan /sys/class/net/br-lan/brif/*; do
i=${i##*\/}
ethtool -k ${i} | awk -v count=$count -v i=$i -v white=$white -v green=$green -v r=$reset '
/rx-gro-list/ {
if(count>0) tab=" "
color=red
if($2=="off") color=green
printf "%s%-11s : %s%s%s\n",tab,i,color,$2,r
}'
count=$((count + 1))
done
echo -e "${reset}"
echo -ne "${bold}${red} NSS PKGS${reset}: ${white}"
opkg list-installed | awk -v count=0 '
/kmod-qca-nss|^nss/ {
if(count>0) tab=" "
print tab $0
count++
}'
echo -ne "${reset}"