From 8da28843a1576a2804a938901cd9fe1e902a7616 Mon Sep 17 00:00:00 2001 From: Zhu Yi Date: Mon, 21 Aug 2006 11:37:26 +0800 Subject: [PATCH] --- yaml --- r: 35244 b: refs/heads/master c: a9f0d42321a7ac40d244a7c6d74a3d1c7a4aa4f3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ipw2200.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index ff0ae2d7c610..249858221601 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ab644b0b51bf3170b398c087b7a34be6d3c7b7ba +refs/heads/master: a9f0d42321a7ac40d244a7c6d74a3d1c7a4aa4f3 diff --git a/trunk/drivers/net/wireless/ipw2200.c b/trunk/drivers/net/wireless/ipw2200.c index 27e87d1b9f44..e929f880dea0 100644 --- a/trunk/drivers/net/wireless/ipw2200.c +++ b/trunk/drivers/net/wireless/ipw2200.c @@ -8837,7 +8837,6 @@ static int ipw_wx_set_essid(struct net_device *dev, union iwreq_data *wrqu, char *extra) { struct ipw_priv *priv = ieee80211_priv(dev); - char *essid; int length; mutex_lock(&priv->mutex); @@ -8852,12 +8851,14 @@ static int ipw_wx_set_essid(struct net_device *dev, return 0; } - length = min(wrqu->essid.length, IW_ESSID_MAX_SIZE); - essid = extra; + length = min((int)wrqu->essid.length, IW_ESSID_MAX_SIZE); + if (!extra[length - 1]) + length--; priv->config |= CFG_STATIC_ESSID; - if (priv->essid_len == length && !memcmp(priv->essid, extra, length)) { + if (priv->essid_len == length && !memcmp(priv->essid, extra, length) + && (priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING))) { IPW_DEBUG_WX("ESSID set to current ESSID.\n"); mutex_unlock(&priv->mutex); return 0; @@ -8867,7 +8868,7 @@ static int ipw_wx_set_essid(struct net_device *dev, length); priv->essid_len = length; - memcpy(priv->essid, essid, priv->essid_len); + memcpy(priv->essid, extra, priv->essid_len); /* Network configuration changed -- force [re]association */ IPW_DEBUG_ASSOC("[re]association triggered due to ESSID change.\n");