From b20dcd7d26f7b51efbf0a011bc9e22a2f4951e12 Mon Sep 17 00:00:00 2001 From: Sean Khan Date: Sat, 5 Oct 2024 03:37:23 -0400 Subject: [PATCH] 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 (cherry picked from commit a58914b4f788f6b5ee70ddad0a1f5c4e464a5629) --- package/kernel/mac80211/Makefile | 11 ++- package/kernel/mac80211/files/nss_diag.sh | 100 ++++++++++++++++++++++ 2 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 package/kernel/mac80211/files/nss_diag.sh diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index 0b78bd76c3..3a32cd43a7 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -47,6 +47,9 @@ include $(INCLUDE_DIR)/package.mk WMENU:=Wireless Drivers 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 SUBMENU:=$(WMENU) @@ -438,9 +441,13 @@ endef ifdef CONFIG_ATH11K_NSS_SUPPORT 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/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 endif diff --git a/package/kernel/mac80211/files/nss_diag.sh b/package/kernel/mac80211/files/nss_diag.sh new file mode 100644 index 0000000000..674b6b3423 --- /dev/null +++ b/package/kernel/mac80211/files/nss_diag.sh @@ -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}"