Estou trabalhando com a interface D-Bus para o Network Manager em um Linux personalizado e estou tentando encontrar uma estimativa decente para a velocidade de conexão atual.
Se eu consultar a propriedade MaxBitrate do AccessPoint conectado atual, obtenho cerca de 270Mbit/s:
$ busctl get-property org.freedesktop.NetworkManager "/org/freedesktop/NetworkManager/AccessPoint/170" org.freedesktop.NetworkManager.AccessPoint MaxBitrate
u 270000
Mas, se eu consultar a propriedade Bitrate atual do dispositivo Wifi, obtenho 867Mbit/s muito mais altos:
$busctl --no-pager get-property org.freedesktop.NetworkManager "/org/freedesktop/NetworkManager/Devices/5" org.freedesktop.NetworkManager.Device.Wireless Bitrate
u 866700
O último deve ser o número correto pela descrição, mas é maior que o máximo. O que da?
Existe uma interação entre os drivers WPA_supplicant, NetworkManager e Intel Wifi que faz com que ele relate a velocidade máxima em vez da atual? MaxBitrate é uma figura por cadeia de rádio?
A propriedade "MaxBitrate" dos objetos AccessPoint no NetworkManager é recebida de wpa_supplicant (de acordo com as informações no beacon). Até onde eu sei, ele apenas relata taxas "legadas" e não tenta contabilizar nada além de 802.11n (HT).
Enquanto isso, a propriedade "Bitrate" é recebida do driver de interface de rede real via netlink (não tenho certeza se o NM a obtém diretamente do kernel ou via wpa_supplicant), semelhante a
iw wlan0 link
.