From 9acaec50c2c5f7290696de9d914b595e1460b065 Mon Sep 17 00:00:00 2001 From: Javier Cardona Date: Thu, 11 Sep 2008 15:32:50 -0700 Subject: [PATCH] --- yaml --- r: 111721 b: refs/heads/master c: 9c31fd635ddfae6eb61712491770befa2ce1fdde h: refs/heads/master i: 111719: 67b335eecc9413dadffdab41e36f848f08ad5cd9 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/libertas/wext.c | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 0674cd01ed7c..e06e825e1631 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bed7aac9416f50425d2200df32bcc9bf248ff8cb +refs/heads/master: 9c31fd635ddfae6eb61712491770befa2ce1fdde diff --git a/trunk/drivers/net/wireless/libertas/wext.c b/trunk/drivers/net/wireless/libertas/wext.c index d86fcf0a5ad5..1156be53df3f 100644 --- a/trunk/drivers/net/wireless/libertas/wext.c +++ b/trunk/drivers/net/wireless/libertas/wext.c @@ -30,6 +30,14 @@ static inline void lbs_postpone_association_work(struct lbs_private *priv) queue_delayed_work(priv->work_thread, &priv->assoc_work, HZ / 2); } +static inline void lbs_do_association_work(struct lbs_private *priv) +{ + if (priv->surpriseremoved) + return; + cancel_delayed_work(&priv->assoc_work); + queue_delayed_work(priv->work_thread, &priv->assoc_work, 0); +} + static inline void lbs_cancel_association_work(struct lbs_private *priv) { cancel_delayed_work(&priv->assoc_work); @@ -1585,12 +1593,14 @@ static int lbs_set_encodeext(struct net_device *dev, set_bit(ASSOC_FLAG_SECINFO, &assoc_req->flags); } - disable_wep (assoc_req); + /* Only disable wep if necessary: can't waste time here. */ + if (priv->mac_control & CMD_ACT_MAC_WEP_ENABLE) + disable_wep(assoc_req); } out: - if (ret == 0) { - lbs_postpone_association_work(priv); + if (ret == 0) { /* key installation is time critical: postpone not! */ + lbs_do_association_work(priv); } else { lbs_cancel_association_work(priv); }