wpa_supplicant for ad-hoc mode
dcbw at redhat.com
Thu Mar 5 06:39:50 EST 2009
On Tue, 2009-03-03 at 14:59 -0700, Shawn Rutledge wrote:
> On Tue, Mar 3, 2009 at 7:46 AM, Dan Williams <dcbw at redhat.com> wrote:
> > On Mon, 2009-03-02 at 23:29 -0500, Dan Williams wrote:
> >> On Mon, 2009-03-02 at 13:15 -0700, Shawn Rutledge wrote:
> >> > Next problem though: if one peer is not running wpa_supplicant, it can
> >> > work. If both peers are running wpa_supplicant, they will keep timing
> >> > out. Each timeout, the ESSID is de-configured:
> >> I use it (well, 0.6.x) in ad-hoc mode all the time with the 'wext'
> >> driver and ipw2200 hardware. Seems like you shouldn't even be getting
> >> to this point though. The driver should be signalling association
> >> completed way before the timeout triggers. What driver was this again?
> > (The Socket P300 driver as I now read below). So the problem is
> > probably in the driver. The driver needs to send the WEXT association
> > event in *both* cases, either for association to an Infrastructure AP,
> > or when it starts/joins an IBSS as well. The BSSID sent along with the
> > event should include the BSSID that the driver just
> > associated/joined/started.
> When the "other end" is running something else, not wpa_supplicant,
> it's fine. wpa_supplicant's goal is to connect to something, so it
> will connect to the "other end" when it sees that ESSID after a scan.
> When both ends are running wpa_supplicant though, it has to leave the
> interface configured with the correct ESSID, not shut it down
> completely in between its attempts to connect. Because the attempts
> to connect are not synchronized, what are the odds that both ends will
> find each other at the moment in which the ESSID is actually set?
Yes, all stations in Ad-Hoc mode are essentially independent. Your
problem is that the driver is not signaling to the supplicant that it
has successfully started the new Ad-Hoc BSS. Because the driver isn't
saying "I'm done doing what you requested", the supplicant has no idea
that the operation is successful, and times out.
If the driver were to send that event, then you wouldn't be having this
problem. It doesn't have any relation to what's happening at the other
end; it has to do with a buggy driver.
More information about the HostAP