Hello!
I have implemented hostscan support for all firmware types. The changes
are quite minor, so I merged them to all branches.
The term "hostscan" comes from Intersil documentation. It denotes
scanning of all access points in range, even those with a different ESSID.
The traditional scan would only return APs with ESSID matching the desired
ESSID, which is set by iwconfig. Only when the desired ESSID is "any"
would the scan return all APs in range.
While the traditional scan is done in the same way on all firmwares (it
was inherited from CW10), the implementation of hostscan is different
across the firmwares.
Lucent/Agere uses ScanSSID (RID 0xFCB2), which is set automatically when
desired ESSID (RID 0xFC02) is set. If ScanSSID is set to an empty string,
the scan will bring all APs. The changelog that comes with 8.72 upgrade
mentions that firmware version 8.10 fixes a fatal bug in ScanSSID
implementation, so the code requires at least 8.10 firmware.
Symbol firmware has the most complicated hostscan procedure, yet it's the
firmware that benefits most from using it. Recent firmwares would bring
no scan results if the card is not associated with an AP. Hostscan
doesn't have this limitation. To perform hostscan, the driver writes to
RID 0xFCAB. The firmware sends linkstatus event 4 (AP out of range),
which indicates that the firmware can inquire the hostscan frame 0xF104. I
limited the firmwares to the latest versions for now, but I hope to extend
the supported version range at least for 3.x firmware after some testing.
Intersil firmware also uses a RID to request hostscan (that's RID 0xFCE5),
but the firmware gets the hostscan frame without the inquire command.
The hostscan functionality is supported since version 1.3.1 according to
hostap sources.
The user interface is unchanged - "iwlist ethX scan". Hostscan is used
whenever it's supported.
Test results will be appreciated. In particular, I'd like to hear from
users of Symbol firmware older than 2.90-57. Set priv->has_hostscan to 1
at the end of determine_firmware() and see if scanning is still working.
--
Regards,
Pavel Roskin
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
|