linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/16 v2] iwlwifi: rewrite iwl-scan.c to avoid race conditions
@ 2010-09-09 13:52 Stanislaw Gruszka
  2010-09-09 13:52 ` [PATCH 01/12] iwlwifi: remove unused conf variables Stanislaw Gruszka
                   ` (16 more replies)
  0 siblings, 17 replies; 30+ messages in thread
From: Stanislaw Gruszka @ 2010-09-09 13:52 UTC (permalink / raw)
  To: Johannes Berg, Wey-Yi Guy, Reinette Chatre, John W. Linville
  Cc: linux-wireless, Stanislaw Gruszka

Avoid iwlwifi hardware scanning race conditions
that may lead to not call ieee80211_scan_completed() (what in
consequences gives "WARNING: at net/wireless/core.c:614
wdev_cleanup_work+0xb7/0xf0"), or call iee80211_scan_completed() more
then once (what gives " WARNING: at net/mac80211/scan.c:312
ieee80211_scan_completed+0x5f/0x1f1").

First problem (warning in wdev_cleanup_work) make any further scan
request from cfg80211 are ignored by mac80211 with EBUSY error,
hence NetworkManager can not perform successful scan and not allow
to establish a new connection. So after suspend/resume (but maybe
not only then) user is not able to connect to wireless network again.

We can not rely on that the commands (start and abort scan) are
successful. Even if they are successfully send to the hardware, we can
not get back notification from firmware (i.e. firmware hung or was
reseted), or we can get notification when we actually perform abort
scan in driver code or after that.

To assure we call ieee80211_scan_completed() only once when scan
was started we use SCAN_SCANNING bit. Code path, which first clear
STATUS_SCANNING bit will call ieee80211_scan_completed().
We do this in many cases, in scan complete notification, scan
abort, device down, etc. Each time we check SCANNING bit.

Tested on 3945, 4965 and 5300 adapters. Tested normal work
functionality and doing scan stress testing using scripts:
http://people.redhat.com/sgruszka/misc/test_wifi_scan_reboot.sh
http://people.redhat.com/sgruszka/misc/test_wifi_scan_updown.sh

v1 -> v2:
- fix not cleared STATUS_SCAN_HW bit in patch 2
- merged patch 7 and 8
- add 4 more patches

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2010-09-10  5:41 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-09 13:52 [PATCH 0/16 v2] iwlwifi: rewrite iwl-scan.c to avoid race conditions Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 01/12] iwlwifi: remove unused conf variables Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 02/12] iwlwifi: unify scan start checks Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 03/12] iwlwifi: move scan completed flags handling Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 04/12] iwlwifi: cancel scan when down the device Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 05/12] iwlwifi: use IWL_DEBUG_SCAN Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 06/12] iwlwifi: report scan completion when abort fail Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 07/12] iwlwifi: rework iwl_scan_cancel_timeout Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 08/12] iwlwifi: rewrite scan completion Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 09/12] iwlwifi: force scan complete after timeout Stanislaw Gruszka
2010-09-09 15:50   ` Guy, Wey-Yi W
2010-09-10  5:15     ` Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 10/12] iwlwifi: assure we complete scan in scan_abort and scan_check works Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 11/12] iwlwifi: do not force complete scan too early Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 12/12] mac80211: wait for scan work complete before restarting hw Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 13/14] iwlwifi: cleanup scan initiate check Stanislaw Gruszka
2010-09-09 15:46   ` Guy, Wey-Yi W
2010-09-10  5:03     ` Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 14/16] iwlwifi: replace and add IWL_DEBUG_SCAN Stanislaw Gruszka
2010-09-09 15:52   ` Guy, Wey-Yi W
2010-09-09 13:52 ` [PATCH 15/15] iwlwifi: apply settings when finishing scan Stanislaw Gruszka
2010-09-09 13:52 ` [PATCH 16/16] iwlwifi: clear is_internal_short_scan when fail to initiate scan Stanislaw Gruszka
2010-09-09 15:35   ` Guy, Wey-Yi W
2010-09-10  5:17     ` Stanislaw Gruszka
2010-09-09 15:32 ` [PATCH 0/16 v2] iwlwifi: rewrite iwl-scan.c to avoid race conditions Guy, Wey-Yi W
2010-09-09 15:55   ` Stanislaw Gruszka
2010-09-09 15:57     ` Guy, Wey-Yi W
2010-09-09 16:06       ` Stanislaw Gruszka
2010-09-09 16:09         ` Guy, Wey-Yi W
2010-09-10  5:36           ` Stanislaw Gruszka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).