iwspy gives strange results (error in code?)
Michael Koshelev
michael
Tue Feb 25 08:25:44 PST 2003
Problem:
--------
When issuing iwspy command on host working in Master mode, output looks
like:
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;
else
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