From: Sean Khan Date: Wed, 19 Feb 2025 05:28:07 +0000 (-0500) Subject: wifi-scripts: iwinfo: add null checks for rx/tx bitrate X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=15013e87cb5415b7462523a2d87e833f3f56995f;p=openwrt%2Fstaging%2Fxback.git wifi-scripts: iwinfo: add null checks for rx/tx bitrate On some devices, the rx/tx bitrate may not always be available right away, or at all when in mesh mode at plink is blocked causing the following: ``` Reference error: left-hand side expression is null In assoclist(), file /usr/share/ucode/iwinfo.uc, line 321, byte 46: called from function info (/usr/share/ucode/iwinfo.uc:427:33) called from anonymous function (/usr/bin/iwinfo:108:25) ` bitrate_raw: station.sta_info.tx_bitrate.bitrate,` Near here -----------------------------------------------^ Reference error: left-hand side expression is null In assoclist(), file /usr/share/ucode/iwinfo.uc, line 314, byte 54: called from function info (/usr/share/ucode/iwinfo.uc:427:33) called from anonymous function (/usr/bin/iwinfo:108:25) ` bitrate: format_rate(station.sta_info.rx_bitrate.bitrate),` Near here -------------------------------------------------------^ Reference error: left-hand side expression is null In assoc_flags(), file /usr/share/ucode/iwinfo.uc, line 216, byte 12: called from function assoclist (/usr/share/ucode/iwinfo.uc:323:51) called from function info (/usr/share/ucode/iwinfo.uc:427:33) called from anonymous function (/usr/bin/iwinfo:108:25) ` if (data[k])` Near here -------^ ``` This was seen on Linksys MX5300 in mesh mode (QCA9984). Signed-off-by: Sean Khan Link: https://github.com/openwrt/openwrt/pull/18027 Signed-off-by: John Crispin --- diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/iwinfo.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/iwinfo.uc index 4ce45b21f1..ff878cfebb 100644 --- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/iwinfo.uc +++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/iwinfo.uc @@ -311,16 +311,16 @@ export function assoclist(dev) { snr: station.sta_info.signal_avg - ifaces[dev].noise, inactive_time: station.sta_info.inactive_time, rx: { - bitrate: format_rate(station.sta_info.rx_bitrate.bitrate), - bitrate_raw: station.sta_info.rx_bitrate.bitrate, - packets: station.sta_info.rx_packets, - flags: assoc_flags(station.sta_info.rx_bitrate), + bitrate: format_rate(station.sta_info.rx_bitrate?.bitrate ?? 0), + bitrate_raw: station.sta_info.rx_bitrate?.bitrate ?? 0, + packets: station.sta_info.rx_packets ?? 0, + flags: assoc_flags(station.sta_info.rx_bitrate ?? {}), }, tx: { - bitrate: format_rate(station.sta_info.tx_bitrate.bitrate), - bitrate_raw: station.sta_info.tx_bitrate.bitrate, - packets: station.sta_info.tx_packets, - flags: assoc_flags(station.sta_info.tx_bitrate), + bitrate: format_rate(station.sta_info.tx_bitrate?.bitrate ?? 0), + bitrate_raw: station.sta_info.tx_bitrate?.bitrate ?? 0, + packets: station.sta_info.tx_packets ?? 0, + flags: assoc_flags(station.sta_info.tx_bitrate ?? {}), }, expected_throughput: station.sta_info.expected_throughput ?? 'unknown', };