Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: WPA regression (was: CVS commit: src/dist/wpa)

Quoting Jukka Salmi <>:

Stephen M. Rumble --> current-users (2008-01-29 13:23:44 -0500):
Quoting Jukka Salmi <>:
Does it stop working exactly when the first GTK rekeying takes place?
If yes, it's probably the same problem I'm trying to debug ATM (using
hostapd(8) and wpa_supplicant(8) with ath(4) on NetBSD/i386 current).

I have no idea. Is there an easy way to check?

wpa_cli's `status' command just says COMPLETED, I think.

Is your access point running hostapd(8)? If yes, try setting
wpa_group_rekey to a small value, e.g. 60 (default is 600) to not have
to wait for ten minutes until rekeying takes place... Then start hostapd
with option -dd (and without -B), and as soon as you see "ath0: Setup
of interface done." start wpa_supplicant; authentication should work.
Wait for a minute, and hostapd should print "ath0: WPA rekeying GTK",
followed by several "EAPOL-Key timeout" lines, and finally

ath0: STA [...] IEEE 802.11: deauthenticated due to local deauth request
ath0: STA [...] IEEE 802.11: deassociated

If your AP doesn't run hostapd or you don't have access to it, try
running wpa_supplicant with option -dd and without -B; as soon as
rekeying fails you should see "Added BSSID XXX into blacklist", where
XXX is your AP's BSSID.

At least that's what I'm currently seeing, as soon as the first rekeying
takes place...

I've tried to reproduce this, but have been unable to. After downgrading to 0.4.9 and then switching back to 0.6.2, I've not run into any of the same problems. I'm a little bit stumped, as 0.6.2 definitely was not working very well before and was perfectly consistent in its malfunctioning.

ath0 does timeout a lot (and I commented out the printf in the driver),

Does setting hw.ath0.txintrperiod=1 instead help?

Yes, it helps considerably. Is anyone opposed to the following patch, which trims down txintrperiod automatically in the face of timeouts? It may be a bit kludgey, but it works well for me.

Index: ath.c
RCS file: /cvsroot/src/sys/dev/ic/ath.c,v
retrieving revision 1.98
diff -u -r1.98 ath.c
--- ath.c       4 Jan 2008 21:17:54 -0000       1.98
+++ ath.c       1 Feb 2008 18:55:37 -0000
@@ -5099,7 +5099,10 @@
                else if (--axq->axq_timer == 0) {
-                       if_printf(ifp, "device timeout (txq %d)\n", i);
+                       if_printf(ifp, "device timeout (txq %d, "
+                           "txintrperiod %d)\n", i, sc->sc_txintrperiod);
+                       if (sc->sc_txintrperiod > 1)
+                               sc->sc_txintrperiod--;


Regards, Jukka

bashian roulette:
$ ((RANDOM%6)) || rm -rf ~

Home | Main Index | Thread Index | Old Index