aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.osdl.org>2006-12-07 12:09:52 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-07 12:09:52 -0500
commit0a01707b289853f56d1c000057b27e243c039722 (patch)
treefe9aff3073e7232e2f786a4faf8f0974b65fdfb0 /net
parent2685b267bce34c9b66626cb11664509c32a761a5 (diff)
parent0ae851352a87db3f829511816a2da227860bf585 (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.c14
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_auth.c2
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_priv.h2
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_wx.c3
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
434void
435ieee80211softmac_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
434int 445int
435ieee80211softmac_handle_disassoc(struct net_device * dev, 446ieee80211softmac_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
239int ieee80211softmac_notify_internal(struct ieee80211softmac_device *mac, 239int 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
242void 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;