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 <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18027
Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
Sean Khan 2025-02-19 00:28:07 -05:00 committed by John Crispin
parent eabea737fa
commit 15013e87cb

View File

@ -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',
};