Re: [PATCH v2] 802.11n IBSS: wlan0 stops receiving packets due to aggregation after sender reboot
From: Johannes Berg <johannes@sipsolutions.net>
Date: 2019-10-29 09:07:41
Also in:
linux-wireless, lkml
On Tue, 2019-10-29 at 09:54 +0100, Krzysztof Hałasa wrote:
The problem I can see is that the dialog_tokens are 8-bit, way too small to eliminate conflicts.
Well, they're also per station, we could just randomize the start and then we'd delete the old session and start a new one, on the receiver. So that would improve robustness somewhat (down to a 1/256 chance to hit this problem).
quoted
Really what I think probably happened is that one of your stations lost the connection to the other, and didn't tell it about it in any way - so the other kept all the status alive.You must have missed my previous mail - I simply rebooted that station, and alternatively rmmoded/modprobed ath9k. But the problem originated in a station going out of and back in range, in fact.
I was on vacation, so yeah, quite possible I missed it.
Sounds like we need not just
4b08d1b6a994 ("mac80211: IBSS: send deauth when expiring inactive STAs")
but also send a deauth when we disconnect. Surprising we don't do that,
actually.
quoted
I suspect to make all this work well we need to not only have the fixes I made recently to actually send and parse deauth frames, but also to even send an auth and reset the state when we receive that, so if we move out of range and even the deauth frame is lost, we can still reset properly.That's one thing. The other is a station trying ADDBA for the first time after boot (while the local station has seen it before that reboot).
That's the situation though - the local station needs to know that it has in fact *not* seen the same instance of the station, but that the station has reset and needs to be removed & re-added.
I guess we need to identify "new connection" reliably. Otherwise, the new connections are treated as old ones and it doesn't work.
Right. But we can implement the (optional) authentication (which you actually already get when you implement [encrypted] IBSS with wpa_s), and reset the station state when we get an authentication frame. johannes