diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 12:09:52 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 12:09:52 -0500 |
commit | 0a01707b289853f56d1c000057b27e243c039722 (patch) | |
tree | fe9aff3073e7232e2f786a4faf8f0974b65fdfb0 /net | |
parent | 2685b267bce34c9b66626cb11664509c32a761a5 (diff) | |
parent | 0ae851352a87db3f829511816a2da227860bf585 (diff) |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (43 commits)
[wireless] zd1211rw: workqueue-related build fixes
[netdrvr] netxen: workqueue-related build fixes
[PATCH] sky2: sparse warnings
[PATCH] skge: fix sparse warnings
[PATCH] myri10ge: write as 2 32-byte blocks in myri10ge_submit_8rx
[PATCH] sky2: receive queue watermark tweak
[PATCH] sky2: beter ram buffer partitioning
[PATCH] sky2: add comments to PCI ids
[PATCH] sky2: add PCI for 88ec033
[PATCH] AT91RM9200 Ethernet: Use dev_alloc_skb()
[PATCH] AT91RM9200 Ethernet: Add netpoll / netconsole support
[PATCH] AT91RM9200 Ethernet: Move check_timer variable and use mod_timer()
[PATCH] AT91RM9200 Ethernet: Remove 'at91_dev' and use netdev_priv()
[PATCH] ipw2200: Fix debug output endian issue
[PATCH] ipw2200: Fix a typo
[PATCH] ipw2200: Update version stamp to 1.2.0
[PATCH] ipw2200: Add IEEE80211_RADIOTAP_TSFT for promiscuous mode
[PATCH] softmac: fix unbalanced mutex_lock/unlock in ieee80211softmac_wx_set_mlme
[PATCH] softmac: Fixed handling of deassociation from AP
[PATCH] ipw2200: replace kmalloc+memset with kcalloc
...
Diffstat (limited to 'net')
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_assoc.c | 14 | ||||
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_auth.c | 2 | ||||
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_priv.h | 2 | ||||
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_wx.c | 3 |
4 files changed, 18 insertions, 3 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 | } |
diff --git a/net/ieee80211/softmac/ieee80211softmac_auth.c b/net/ieee80211/softmac/ieee80211softmac_auth.c index 6012705aa4f8..8ed3e59b8024 100644 --- a/net/ieee80211/softmac/ieee80211softmac_auth.c +++ b/net/ieee80211/softmac/ieee80211softmac_auth.c | |||
@@ -337,6 +337,8 @@ ieee80211softmac_deauth_from_net(struct ieee80211softmac_device *mac, | |||
337 | /* can't transmit data right now... */ | 337 | /* can't transmit data right now... */ |
338 | netif_carrier_off(mac->dev); | 338 | netif_carrier_off(mac->dev); |
339 | spin_unlock_irqrestore(&mac->lock, flags); | 339 | spin_unlock_irqrestore(&mac->lock, flags); |
340 | |||
341 | ieee80211softmac_try_reassoc(mac); | ||
340 | } | 342 | } |
341 | 343 | ||
342 | /* | 344 | /* |
diff --git a/net/ieee80211/softmac/ieee80211softmac_priv.h b/net/ieee80211/softmac/ieee80211softmac_priv.h index c0dbe070e548..4c2bba34d328 100644 --- a/net/ieee80211/softmac/ieee80211softmac_priv.h +++ b/net/ieee80211/softmac/ieee80211softmac_priv.h | |||
@@ -239,4 +239,6 @@ void ieee80211softmac_call_events_locked(struct ieee80211softmac_device *mac, in | |||
239 | int ieee80211softmac_notify_internal(struct ieee80211softmac_device *mac, | 239 | int ieee80211softmac_notify_internal(struct ieee80211softmac_device *mac, |
240 | int event, void *event_context, notify_function_ptr fun, void *context, gfp_t gfp_mask); | 240 | int event, void *event_context, notify_function_ptr fun, void *context, gfp_t gfp_mask); |
241 | 241 | ||
242 | void ieee80211softmac_try_reassoc(struct ieee80211softmac_device *mac); | ||
243 | |||
242 | #endif /* IEEE80211SOFTMAC_PRIV_H_ */ | 244 | #endif /* IEEE80211SOFTMAC_PRIV_H_ */ |
diff --git a/net/ieee80211/softmac/ieee80211softmac_wx.c b/net/ieee80211/softmac/ieee80211softmac_wx.c index 2ffaebd21c53..480d72c7a42c 100644 --- a/net/ieee80211/softmac/ieee80211softmac_wx.c +++ b/net/ieee80211/softmac/ieee80211softmac_wx.c | |||
@@ -495,7 +495,8 @@ ieee80211softmac_wx_set_mlme(struct net_device *dev, | |||
495 | printk(KERN_DEBUG PFX "wx_set_mlme: we should know the net here...\n"); | 495 | printk(KERN_DEBUG PFX "wx_set_mlme: we should know the net here...\n"); |
496 | goto out; | 496 | goto out; |
497 | } | 497 | } |
498 | return ieee80211softmac_deauth_req(mac, net, reason); | 498 | err = ieee80211softmac_deauth_req(mac, net, reason); |
499 | goto out; | ||
499 | case IW_MLME_DISASSOC: | 500 | case IW_MLME_DISASSOC: |
500 | ieee80211softmac_send_disassoc_req(mac, reason); | 501 | ieee80211softmac_send_disassoc_req(mac, reason); |
501 | mac->associnfo.associated = 0; | 502 | mac->associnfo.associated = 0; |