diff options
Diffstat (limited to 'net/ieee80211/softmac/ieee80211softmac_assoc.c')
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_assoc.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/net/ieee80211/softmac/ieee80211softmac_assoc.c b/net/ieee80211/softmac/ieee80211softmac_assoc.c index 08386c102954..eec1a1dd91da 100644 --- a/net/ieee80211/softmac/ieee80211softmac_assoc.c +++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c | |||
@@ -431,6 +431,17 @@ ieee80211softmac_handle_assoc_response(struct net_device * dev, | |||
431 | return 0; | 431 | return 0; |
432 | } | 432 | } |
433 | 433 | ||
434 | void | ||
435 | ieee80211softmac_try_reassoc(struct ieee80211softmac_device *mac) | ||
436 | { | ||
437 | unsigned long flags; | ||
438 | |||
439 | spin_lock_irqsave(&mac->lock, flags); | ||
440 | mac->associnfo.associating = 1; | ||
441 | schedule_work(&mac->associnfo.work); | ||
442 | spin_unlock_irqrestore(&mac->lock, flags); | ||
443 | } | ||
444 | |||
434 | int | 445 | int |
435 | ieee80211softmac_handle_disassoc(struct net_device * dev, | 446 | ieee80211softmac_handle_disassoc(struct net_device * dev, |
436 | struct ieee80211_disassoc *disassoc) | 447 | struct ieee80211_disassoc *disassoc) |
@@ -449,8 +460,7 @@ ieee80211softmac_handle_disassoc(struct net_device * dev, | |||
449 | dprintk(KERN_INFO PFX "got disassoc frame\n"); | 460 | dprintk(KERN_INFO PFX "got disassoc frame\n"); |
450 | ieee80211softmac_disassoc(mac); | 461 | ieee80211softmac_disassoc(mac); |
451 | 462 | ||
452 | /* try to reassociate */ | 463 | ieee80211softmac_try_reassoc(mac); |
453 | schedule_delayed_work(&mac->associnfo.work, 0); | ||
454 | 464 | ||
455 | return 0; | 465 | return 0; |
456 | } | 466 | } |