iwspy gives strange results (error in code?)

Michael Koshelev michael
Tue Feb 25 08:25:44 PST 2003


When issuing iwspy command on host working in Master mode, output looks 

wlan1     Statistics collected:
    00:02:2D:5E:23:66 : Quality:235/92  Signal level:-91 dBm  Noise 
level:-97 dBm (updated)
    typical/average   : Quality:0  Signal level:0  Noise level:0

i.e. it displays wrong value for link quality. Seems it happends if 
( signal - noise < 10 dBm ).
Two computers, involving in this experiment, located at the same room.

On the client side, iwconfig outputs:
eth1      IEEE 802.11-DS  ESSID:"test-wlan1"  Nickname:"HERMES I"
          Mode:Managed  Frequency:2.457GHz  Access Point: 00:40:05:AE:CD:1E
          Bit Rate:11Mb/s   Tx-Power=15 dBm   Sensitivity:1/3
          Retry limit:4   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:27/92  Signal level:-71 dBm  Noise level:-98 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Even if client computer is placed near AP computer, iwspy output on AP
won't show signal and quality values more than:
wlan1     Statistics collected:
    00:02:2D:5E:23:66 : Quality:16/92  Signal level:-81 dBm  Noise 
level:-100 dBm (updated)

AP configuration:
Linux kernel v. 2.4.18 (redhat 7.3) + Wireless extentions 15
HostAP - CVS snapshot
wireless-tools v.25
Hardware - D-Link DWL-520  pri 1.1.0/sec 1.4.9 in Master mode

client configuration:
1) D-Link DCF-650 + hostap CVS
2) Avaya Wireless PCMCIA + orinoco_cs 0.13b
kernel, wireless-tools - the same

So, I have two questions:

1) Is signal and noise values in iwspy output on AP looks reasonable? Is 
it possible to get such low signal/noise ratio even if two cards is placed 
near one another, or it seems like some hard/software problem?

2) I checked some code in HostAP (see below) which produced wrong 
iwspy quality values. Is algorithm used is some sort of euristics? Or it 
is documented eslewhere?

Some analysys:

Besides other issues, it appears to be a problem in HostAP code about 
stations link quality calculation.
More specifically, in file hostap_ap.c, function prism2_ap_get_sta_qual,
quality level for stations is calucated like this:

   if (sta->last_rx_silence == 0)
      qual[count].qual = sta->last_rx_signal < 27 ?
         0 : (sta->last_rx_signal - 27) * 92 / 127;
      qual[count].qual = sta->last_rx_signal -
         sta->last_rx_silence - 35;

So, when signal/noise ratio is low , it is possible for quality value 
to be negative which results in wrong iwspy display.

Michael Koshelev

More information about the Hostap mailing list