|
@@ -768,13 +768,23 @@ static int zd_op_config_interface(struct ieee80211_hw *hw,
|
|
|
if (!beacon)
|
|
|
return -ENOMEM;
|
|
|
r = zd_mac_config_beacon(hw, beacon);
|
|
|
+ kfree_skb(beacon);
|
|
|
+
|
|
|
if (r < 0)
|
|
|
return r;
|
|
|
- r = zd_set_beacon_interval(&mac->chip, BCN_MODE_IBSS |
|
|
|
- hw->conf.beacon_int);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (conf->changed & IEEE80211_IFCC_BEACON_ENABLED) {
|
|
|
+ u32 interval;
|
|
|
+
|
|
|
+ if (conf->enable_beacon)
|
|
|
+ interval = BCN_MODE_IBSS | hw->conf.beacon_int;
|
|
|
+ else
|
|
|
+ interval = 0;
|
|
|
+
|
|
|
+ r = zd_set_beacon_interval(&mac->chip, interval);
|
|
|
if (r < 0)
|
|
|
return r;
|
|
|
- kfree_skb(beacon);
|
|
|
}
|
|
|
} else
|
|
|
associated = is_valid_ether_addr(conf->bssid);
|