aboutsummaryrefslogtreecommitdiffstats
path: root/net/ieee80211/softmac/ieee80211softmac_assoc.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-10-03 21:14:23 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:52:22 -0400
commit501d857ec93e797d4872d6b9b265b7472b455ddf (patch)
treef4bbdd316145573af7234960599e45592b73f8fe /net/ieee80211/softmac/ieee80211softmac_assoc.c
parent05155c83d13b983ac2c5691575fd471543df31fe (diff)
[IEEE80211]: Fix softmac lockdep reports.
It seems I was actually able to hit this deadlock, on my quad G5 softmac locks up more often than not. This fixes it by using an own workqueue that can safely be flushed under RTNL. Not sure if the patch is correct with the workqueue naming. And don't think with the patch it doesn't continually lock up. It still does, just doesn't invoke lockdep warnings all the time. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ieee80211/softmac/ieee80211softmac_assoc.c')
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_assoc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/ieee80211/softmac/ieee80211softmac_assoc.c b/net/ieee80211/softmac/ieee80211softmac_assoc.c
index 4c0feb2dacd8..c4d122ddd72c 100644
--- a/net/ieee80211/softmac/ieee80211softmac_assoc.c
+++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c
@@ -53,7 +53,7 @@ ieee80211softmac_assoc(struct ieee80211softmac_device *mac, struct ieee80211soft
53 /* Set a timer for timeout */ 53 /* Set a timer for timeout */
54 /* FIXME: make timeout configurable */ 54 /* FIXME: make timeout configurable */
55 if (likely(mac->running)) 55 if (likely(mac->running))
56 schedule_delayed_work(&mac->associnfo.timeout, 5 * HZ); 56 queue_delayed_work(mac->wq, &mac->associnfo.timeout, 5 * HZ);
57 spin_unlock_irqrestore(&mac->lock, flags); 57 spin_unlock_irqrestore(&mac->lock, flags);
58} 58}
59 59
@@ -419,7 +419,7 @@ ieee80211softmac_handle_assoc_response(struct net_device * dev,
419 network->authenticated = 0; 419 network->authenticated = 0;
420 /* we don't want to do this more than once ... */ 420 /* we don't want to do this more than once ... */
421 network->auth_desynced_once = 1; 421 network->auth_desynced_once = 1;
422 schedule_delayed_work(&mac->associnfo.work, 0); 422 queue_delayed_work(mac->wq, &mac->associnfo.work, 0);
423 break; 423 break;
424 } 424 }
425 default: 425 default:
@@ -441,7 +441,7 @@ ieee80211softmac_try_reassoc(struct ieee80211softmac_device *mac)
441 441
442 spin_lock_irqsave(&mac->lock, flags); 442 spin_lock_irqsave(&mac->lock, flags);
443 mac->associnfo.associating = 1; 443 mac->associnfo.associating = 1;
444 schedule_delayed_work(&mac->associnfo.work, 0); 444 queue_delayed_work(mac->wq, &mac->associnfo.work, 0);
445 spin_unlock_irqrestore(&mac->lock, flags); 445 spin_unlock_irqrestore(&mac->lock, flags);
446} 446}
447 447
@@ -483,7 +483,7 @@ ieee80211softmac_handle_reassoc_req(struct net_device * dev,
483 dprintkl(KERN_INFO PFX "reassoc request from unknown network\n"); 483 dprintkl(KERN_INFO PFX "reassoc request from unknown network\n");
484 return 0; 484 return 0;
485 } 485 }
486 schedule_delayed_work(&mac->associnfo.work, 0); 486 queue_delayed_work(mac->wq, &mac->associnfo.work, 0);
487 487
488 return 0; 488 return 0;
489} 489}