mac80211/cfg80211: Add BSS configuration options for AP mode
This change adds a new cfg80211 command, NL80211_CMD_SET_BSS, to allow AP mode BSS parameters to be changed from user space (e.g., hostapd). The drivers using mac80211 are expected to be modified with separate changes to use the new BSS info parameter for short slot time in the bss_info_changed() handler. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
7f93ea3e24
commit
9f1ba9062e
@ -1010,6 +1010,42 @@ static int ieee80211_dump_mpath(struct wiphy *wiphy, struct net_device *dev,
|
||||
}
|
||||
#endif
|
||||
|
||||
static int ieee80211_change_bss(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct bss_parameters *params)
|
||||
{
|
||||
struct ieee80211_local *local = wiphy_priv(wiphy);
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
u32 changed = 0;
|
||||
|
||||
if (dev == local->mdev)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
|
||||
if (sdata->vif.type != IEEE80211_IF_TYPE_AP)
|
||||
return -EINVAL;
|
||||
|
||||
if (params->use_cts_prot >= 0) {
|
||||
sdata->bss_conf.use_cts_prot = params->use_cts_prot;
|
||||
changed |= BSS_CHANGED_ERP_CTS_PROT;
|
||||
}
|
||||
if (params->use_short_preamble >= 0) {
|
||||
sdata->bss_conf.use_short_preamble =
|
||||
params->use_short_preamble;
|
||||
changed |= BSS_CHANGED_ERP_PREAMBLE;
|
||||
}
|
||||
if (params->use_short_slot_time >= 0) {
|
||||
sdata->bss_conf.use_short_slot =
|
||||
params->use_short_slot_time;
|
||||
changed |= BSS_CHANGED_ERP_SLOT;
|
||||
}
|
||||
|
||||
ieee80211_bss_info_change_notify(sdata, changed);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct cfg80211_ops mac80211_config_ops = {
|
||||
.add_virtual_intf = ieee80211_add_iface,
|
||||
.del_virtual_intf = ieee80211_del_iface,
|
||||
@ -1033,4 +1069,5 @@ struct cfg80211_ops mac80211_config_ops = {
|
||||
.get_mpath = ieee80211_get_mpath,
|
||||
.dump_mpath = ieee80211_dump_mpath,
|
||||
#endif
|
||||
.change_bss = ieee80211_change_bss,
|
||||
};
|
||||
|
Reference in New Issue
Block a user