diff --git a/[refs] b/[refs] index 6da0b6540a9b..555d22da6394 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1fbfea549f07f1f7afd436f1e45b25437f0172c2 +refs/heads/master: caeff81b4e6479884f3cd2ced526bebd4f0c5eff diff --git a/trunk/drivers/net/wireless/ipw2200.c b/trunk/drivers/net/wireless/ipw2200.c index c6da5f534250..626e78a336eb 100644 --- a/trunk/drivers/net/wireless/ipw2200.c +++ b/trunk/drivers/net/wireless/ipw2200.c @@ -9169,11 +9169,19 @@ static int ipw_wx_set_encode(struct net_device *dev, { struct ipw_priv *priv = ieee80211_priv(dev); int ret; + u32 cap = priv->capability; down(&priv->sem); ret = ieee80211_wx_set_encode(priv->ieee, info, wrqu, key); - up(&priv->sem); + /* In IBSS mode, we need to notify the firmware to update + * the beacon info after we changed the capability. */ + if (cap != priv->capability && + priv->ieee->iw_mode == IW_MODE_ADHOC && + priv->status & STATUS_ASSOCIATED) + ipw_disassociate(priv); + + up(&priv->sem); return ret; }