diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c index faec404..28894c3 100644 --- a/drivers/net/wireless/iwlegacy/3945-mac.c +++ b/drivers/net/wireless/iwlegacy/3945-mac.c @@ -2987,11 +2987,17 @@ il3945_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, { struct il_priv *il = hw->priv; struct il3945_sta_priv *sta_priv = (void *)sta->drv_priv; - int ret; + int ret = 0; bool is_ap = vif->type == NL80211_IFTYPE_STATION; u8 sta_id; mutex_lock(&il->mutex); + + if (WARN_ON(il->txq == NULL)) { + ret = -EIO; + goto out; + } + D_INFO("station %pM\n", sta->addr); sta_priv->common.sta_id = IL_INVALID_STATION; @@ -2999,8 +3005,7 @@ il3945_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, if (ret) { IL_ERR("Unable to add station %pM (%d)\n", sta->addr, ret); /* Should we return success if return code is EEXIST ? */ - mutex_unlock(&il->mutex); - return ret; + goto out; } sta_priv->common.sta_id = sta_id; @@ -3008,9 +3013,9 @@ il3945_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, /* Initialize rate scaling */ D_INFO("Initializing rate scaling for station %pM\n", sta->addr); il3945_rs_rate_init(il, sta, sta_id); +out: mutex_unlock(&il->mutex); - - return 0; + return ret; } static void