[RFC PATCH] mac80211: use hardware flags for signal/noise units

Holger Schurig hs4233 at mail.mn-solutions.de
Tue Mar 18 06:57:47 EDT 2008

>     ath5k           dBm     dBm     percent rssi
>     b43legacy       dBm(?)  dBm     percent jssi(?)
>     b43             dBm(?)  dBm     percent jssi(?)
>     iwl-3945        dBm     dBm     percent snr+more
>     iwl-4965        dBm     dBm     percent snr+more
>     rt2x00          dBm(?)  n/a     percent rssi+tx/rx frame
> success rt2400        dBm(?)  n/a
>       rt2500pci     dBm(?)  n/a
>       rt2500usb     dBm(?)  n/a
>       rt61pci       dBm(?)  n/a
>       rt73usb       dBm(?)  n/a
>     rtl8180		nounit	n/a    (?)
>     rtl8187		nounit	(?)    (?)
>     zd1211		dB(?)	/      percent

This list made me think about the libertas values. Here the 
firmware provides SNR and NF and RSSI is calculated from those 
values. However,

Is it ok to add a dBm value (noisefloor) to a dB value (SNR) ??

The libertas firmware can give me SNR and NF for beacons (via 
CMD_802_11_RSSI) and also for each received frame (in the rx 
packet descriptor structure).

In the firmware manual they say:

   SNR  UINT8  Signal to noise ratio for this packet
               This should be a positive value (dB)
   NF   UINT8  Noise floor for this packet (dBm)
               Noise floor is always negative. The absolute
               value is passed.

That was the description for the RX packet descriptor, the 
description for the CMD_802_11_RSSI is basically the same. 

Now I see two macros:

#define CAL_NF(NF)       ((s32)(-(s32)(NF)))
#define CAL_RSSI(SNR,NF) ((s32)((s32)(SNR) + CAL_NF(NF)))

While I understand the CAL_NF() macro, but I'm not sure if the 
second one does the right thing. Or maybe the manual is simply 
wrong. Here are some samples with my WLAN card sitting next to 
an AP:

rxpd:     SNR  41, NF  86
get_rssi: SNR  41, NF  86
rxpd:     SNR  41, NF  86
get_rssi: SNR  42, NF  86
rxpd:     SNR  41, NF  86
get_rssi: SNR  41, NF  86
rxpd:     SNR  41, NF  86
get_rssi: SNR  41, NF  86
get_rssi: SNR  40, NF  85
rxpd:     SNR  41, NF  86

More information about the libertas-dev mailing list