|
@@ -665,6 +665,12 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw,
|
|
|
conf->type, conf->mac_addr);
|
|
|
|
|
|
mutex_lock(&wl->mutex);
|
|
|
+ if (wl->vif) {
|
|
|
+ ret = -EBUSY;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
+ wl->vif = conf->vif;
|
|
|
|
|
|
switch (conf->type) {
|
|
|
case NL80211_IFTYPE_STATION:
|
|
@@ -688,7 +694,12 @@ out:
|
|
|
static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
|
|
|
struct ieee80211_if_init_conf *conf)
|
|
|
{
|
|
|
+ struct wl1271 *wl = hw->priv;
|
|
|
+
|
|
|
+ mutex_lock(&wl->mutex);
|
|
|
wl1271_debug(DEBUG_MAC80211, "mac80211 remove interface");
|
|
|
+ wl->vif = NULL;
|
|
|
+ mutex_unlock(&wl->mutex);
|
|
|
}
|
|
|
|
|
|
#if 0
|
|
@@ -1382,6 +1393,7 @@ static int __devinit wl1271_probe(struct spi_device *spi)
|
|
|
wl->dtim_period = WL1271_DEFAULT_DTIM_PERIOD;
|
|
|
wl->basic_rate_set = WL1271_DEFAULT_BASIC_RATE_SET;
|
|
|
wl->band = IEEE80211_BAND_2GHZ;
|
|
|
+ wl->vif = NULL;
|
|
|
|
|
|
for (i = 0; i < ACX_TX_DESCRIPTORS; i++)
|
|
|
wl->tx_frames[i] = NULL;
|