diff --git a/board/common/rootfs/usr/libexec/infix/iw.py b/board/common/rootfs/usr/libexec/infix/iw.py index 035dd53f..8dfac86e 100755 --- a/board/common/rootfs/usr/libexec/infix/iw.py +++ b/board/common/rootfs/usr/libexec/infix/iw.py @@ -290,6 +290,14 @@ def parse_interface_info(ifname): if power_match: result['txpower'] = float(power_match.group(1)) + # wiphy index -> phy/radio name + elif stripped.startswith('wiphy '): + try: + wiphy_idx = int(stripped.split()[1]) + result['phy'] = normalize_phy_name(f'phy{wiphy_idx}') + except (ValueError, IndexError): + pass + return result diff --git a/src/statd/python/yanger/ietf_interfaces/wifi.py b/src/statd/python/yanger/ietf_interfaces/wifi.py index ccf092d1..517b23b9 100644 --- a/src/statd/python/yanger/ietf_interfaces/wifi.py +++ b/src/statd/python/yanger/ietf_interfaces/wifi.py @@ -93,10 +93,17 @@ def wifi(ifname): info = get_iw_info(ifname) mode = info.get('iftype', '').lower() + result = {} + + if info.get('phy'): + result['radio'] = info['phy'] + if mode == 'ap': - return wifi_ap(ifname) + result.update(wifi_ap(ifname)) else: - return wifi_station(ifname) + result.update(wifi_station(ifname)) + + return result def parse_wpa_scan_result(scan_output):