我正在自定义 Linux 上使用网络管理器的 D-Bus 接口,我正在尝试为当前连接速度找到一个合适的估计值。
如果我查询当前连接的接入点的 MaxBitrate 属性,我得到大约 270Mbit/s:
$ busctl get-property org.freedesktop.NetworkManager "/org/freedesktop/NetworkManager/AccessPoint/170" org.freedesktop.NetworkManager.AccessPoint MaxBitrate
u 270000
但是,如果我查询 Wifi 设备的当前比特率属性,我会得到更高的 867Mbit/s:
$busctl --no-pager get-property org.freedesktop.NetworkManager "/org/freedesktop/NetworkManager/Devices/5" org.freedesktop.NetworkManager.Device.Wireless Bitrate
u 866700
根据描述,后者应该是正确的数字,但它高于最大值。是什么赋予了?
WPA_supplicant、NetworkManager 和 Intel Wifi 驱动程序之间是否存在交互导致它报告最大速度而不是当前速度?MaxBitrate 是每个无线电链的数字吗?
NetworkManager 中 AccessPoint 对象的“MaxBitrate”属性是从 wpa_supplicant 接收的(根据信标中的信息)。据我所知,它只报告“传统”速率,不会尝试说明 802.11n (HT) 以外的任何情况。
同时,“比特率”属性是通过 netlink 从实际网络接口驱动程序接收的(不确定 NM 是直接从内核还是通过 wpa_supplicant 获取它),类似于
iw wlan0 link
.