struct iw_quality
{
uint8 qual;
uint8 level;
uint8 noise;
}Unfortunately, as Dan pointed out in
http://www.redhat.com/archives/fedora-devel-list/2004-September/msg00767.html
drivers don't report the data in the same way for associated AP and scanned AP's. As an example, consider ipw2200-1.0.0 and NM CVS-2-2 on my T42, with these structures printed from NetworkManagerDevice.c. This is my home network with only one SMC AP in the scan list.
Feb 3 23:58:45 localhost NetworkManager: Activation (eth1) successful, device activated.
First, look at the results for the associated AP.
Feb 3 23:58:47 localhost NetworkManager: nm_device_update_signal_strength stats.qual.qual=76
Feb 3 23:58:47 localhost NetworkManager: nm_device_update_signal_strength stats.qual.level=203
Feb 3 23:58:47 localhost NetworkManager: nm_device_update_signal_strength stats.qual.noise=175
These same values show up in /proc/net/wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 17
eth1: 0000 76. 203. 175. 0 0 0 0 0 0
and in the output of iwconfig
Link Quality=79/100 Signal level=-53 dBm Noise level=-81 dBm
The iwconfig level and noise values in dBm are obtained by substracting 256 from the unsigned values [0 - 255] in the proc file and NM output. dBm is a measure of power.
The 79 is an RSSI value and 100 is RSSI_MAX. A quality percentage can be computed as
(100 * RSSI) / RSSI_MAX
Some drivers provide a lookup table to convert from dBm to RSSI along with RSSI_MAX. The ipw2200 driver does not do this. Instead, it originally used a linear model to convert from dBm to RSSI but the developers have accepted a more accurate quadratic model I submitted. I based by model on matching the percentages reported by the Windows XP driver for this card. That was the only thing I could think to do.
Now look at the results for the scanned AP's (list of one here). qual and noise are reported as 0. This is why the CVS-2-2 NMApplet bar is empty for the ipw2200 driver. NM uses the qual value of zero to create the bar length. We can convert the level of 198 to -58 dBm but NM has no idea how ipw2200 would convert this into a percentage. to make matters worse the dBm range varies from driver to driver. We are stuck. There is no way the NM nm_wireless_qual_to_percent function can deal with this. A new nm_wireless_level_to_percent function could be created to do this conversion but it would be guess work at best and impossible to normalize across all drivers.
Feb 3 23:58:50 localhost NetworkManager: nm_device_wireless_process_scan stats.qual.qual=0
Feb 3 23:58:50 localhost NetworkManager: nm_device_wireless_process_scan stats.qual.level=198
Feb 3 23:58:50 localhost NetworkManager: nm_device_wireless_process_scan stats.qual.noise=0
So what to do . . .
-- Bill Moss Professor, Mathematical Sciences Clemson University
_______________________________________________ NetworkManager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
