From: David Woodhouse Date: Sun, 16 Dec 2007 22:21:00 +0000 (-0500) Subject: libertas: fix return from lbs_update_channel() X-Git-Tag: v2.6.25-rc1~1162^2~310 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1a469fd1b7335572a3803b6ba4ce3783a74532b;p=linux-2.6 libertas: fix return from lbs_update_channel() If we return the channel number in a 'ret' variable where anything non-zero is later interpreted as an error, that isn't nice. It breaks WPA, for a start. OLPC trac #5485 Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- diff --git a/drivers/net/wireless/libertas/assoc.c b/drivers/net/wireless/libertas/assoc.c index cd8e043b16..882e51c16a 100644 --- a/drivers/net/wireless/libertas/assoc.c +++ b/drivers/net/wireless/libertas/assoc.c @@ -167,13 +167,14 @@ int lbs_update_channel(struct lbs_private *priv) { int ret; - /* the channel in f/w could be out of sync, get the current channel */ + /* the channel in f/w could be out of sync; get the current channel */ lbs_deb_enter(LBS_DEB_ASSOC); ret = lbs_get_channel(priv); - if (ret > 0) - priv->curbssparams.channel = (u8) ret; - + if (ret > 0) { + priv->curbssparams.channel = ret; + ret = 0; + } lbs_deb_leave_args(LBS_DEB_ASSOC, "ret %d", ret); return ret; } @@ -197,8 +198,9 @@ static int assoc_helper_channel(struct lbs_private *priv, lbs_deb_enter(LBS_DEB_ASSOC); ret = lbs_update_channel(priv); - if (ret < 0) { + if (ret) { lbs_deb_assoc("ASSOC: channel: error getting channel.\n"); + goto done; } if (assoc_req->channel == priv->curbssparams.channel) @@ -222,8 +224,10 @@ static int assoc_helper_channel(struct lbs_private *priv, * it since the firmware is supposed to return the new channel, but * whatever... */ ret = lbs_update_channel(priv); - if (ret < 0) + if (ret) { lbs_deb_assoc("ASSOC: channel: error getting channel.\n"); + goto done; + } if (assoc_req->channel != priv->curbssparams.channel) { lbs_deb_assoc("ASSOC: channel: failed to update channel to %d\n",