Re: NM does not work with iwl4965 device



On Wed, 2007-08-08 at 10:53 -0400, John W. Linville wrote:
> On Wed, Aug 08, 2007 at 07:34:47AM -0400, Dan Williams wrote:
> 
> > 1 means wpa_supplicant scans around and tries to find the AP.  But if
> > the AP is "hidden", wpa_supplicant won't find it because wpa_supplicant
> > doesn't know how to find hidden APs.  NM works around that by caching
> > the BSSID after a successful connection, and when it finds that BSSID in
> > scan results, filling in the SSID.
> > 
> > 2 means NM must fill out the config for the network completely, and
> > wpa_supplicant just blows those settings to the card and waits for the
> > association to succeed.  This is most closely analogous to a lot of
> > 'iwconfig' commands.  Only in this mode can wpa_supplicant really
> > connect to a hidden network, because NM would have given wpa_supplicant
> > both SSID and BSSID.
> > 
> > So it's understandable why wpa_supplicant doesn't set the SSID on the
> > card when you give it AP_SCAN=1, because it can't _find_ that SSID in
> > scan results precisely because the SSID isn't broadcasting it's SSID.
> 
> So, wpa_supplicant only requests a scan?  It never sends any probes
> itself?  Forgive me if this is an ignorant question -- I haven't
> peered much into these userland bits...

Right.  WEXT has a very murky API here that almost none of the drivers
implement.  It's sort of assumed that if userland sets the BSSID/ESSID
on the card, that the card can handle the probe request or some other
mechanism of finding that AP to connect to it.  In practice, that means
that if the driver doesn't have the SSID in it's scan list, it sends out
an active scan for that SSID, and connects if it gets a positive result.

WEXT has some defines for scanning behavior that perhaps wpa_supplicant
should be modified to use:

#define IW_SCAN_ALL_ESSID	0x0001	/* Scan all ESSIDs */
#define IW_SCAN_THIS_ESSID	0x0002	/* Scan only this ESSID */
#define IW_SCAN_ALL_FREQ	0x0004	/* Scan all Frequencies */
#define IW_SCAN_THIS_FREQ	0x0008	/* Scan only this Frequency */
#define IW_SCAN_ALL_MODE	0x0010	/* Scan all Modes */
#define IW_SCAN_THIS_MODE	0x0020	/* Scan only this Mode */
#define IW_SCAN_ALL_RATE	0x0040	/* Scan all Bit-Rates */
#define IW_SCAN_THIS_RATE	0x0080	/* Scan only this Bit-Rate */

#define IW_SCAN_TYPE_ACTIVE 0
#define IW_SCAN_TYPE_PASSIVE 1

but almost nobody uses them because the drivers don't really support
them.  Plus the assumption that drivers have some intelligence
themselves and that if they are given an SSID and/or a BSSID, they can
figure out what to connect to.

Dan





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]