"cfg80211: separate internal SME implementation" causes regression for libertas wifi
NeilBrown
neilb at suse.de
Tue Jul 30 20:16:39 EDT 2013
Hi Johannes,
it seems that your commit:
commit ceca7b7121795ef81bd598a240d53a925662d0c1
Author: Johannes Berg <johannes.berg at intel.com>
Date: Thu May 16 00:55:45 2013 +0200
cfg80211: separate internal SME implementation
results in a regression for SDIO attached libertas wifi devices.
In particular it hangs during suspend.
In the scenario that I am testing the wifi is not active (ifconfig down).
The key difference is that before your patch, cfg80211_disconnect() would
*not* call rdev_disconnect(), because of
if (wdev->sme_state == CFG80211_SME_IDLE)
return -EINVAL;
(and the state was IDLE).
After your change, rdev_disconnect() is called. This leads to
lbs_disconnect() which submits a CMD_802_11_DEAUTHENTICATE command and waits
for the reply.
This waits forever. My guess is that it is waiting for something that has
been disabled by the process of entering suspend.
Given that the interface isn't active, maybe it shouldn't try to disconnect,
and it almost certainly shouldn't try to deauthenticate.
I am not at all familiar with this code and was hoping you could outline how
this sort of this was supposed to work. i.e. which part of the call chain
should determine that the interface is sufficiently idle that nothing needs
to happen?
(this isn't the only suspend related problem I have with libertas and it
could well be that libertas is suffering significant bit-rot. If there is a
driver that could be seen as a good and modern prototype I could try to
restructure libertas to match ... but I'm really hoping for an easier fix...)
Thanks,
NeilBrown
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/libertas-dev/attachments/20130731/f8687e2f/attachment.sig>
More information about the libertas-dev
mailing list