diff options
Diffstat (limited to 'drivers/net/wireless/ipw2200.c')
-rw-r--r-- | drivers/net/wireless/ipw2200.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index c6da5f534250..626e78a336eb 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
@@ -9169,11 +9169,19 @@ static int ipw_wx_set_encode(struct net_device *dev, | |||
9169 | { | 9169 | { |
9170 | struct ipw_priv *priv = ieee80211_priv(dev); | 9170 | struct ipw_priv *priv = ieee80211_priv(dev); |
9171 | int ret; | 9171 | int ret; |
9172 | u32 cap = priv->capability; | ||
9172 | 9173 | ||
9173 | down(&priv->sem); | 9174 | down(&priv->sem); |
9174 | ret = ieee80211_wx_set_encode(priv->ieee, info, wrqu, key); | 9175 | ret = ieee80211_wx_set_encode(priv->ieee, info, wrqu, key); |
9175 | up(&priv->sem); | ||
9176 | 9176 | ||
9177 | /* In IBSS mode, we need to notify the firmware to update | ||
9178 | * the beacon info after we changed the capability. */ | ||
9179 | if (cap != priv->capability && | ||
9180 | priv->ieee->iw_mode == IW_MODE_ADHOC && | ||
9181 | priv->status & STATUS_ASSOCIATED) | ||
9182 | ipw_disassociate(priv); | ||
9183 | |||
9184 | up(&priv->sem); | ||
9177 | return ret; | 9185 | return ret; |
9178 | } | 9186 | } |
9179 | 9187 | ||