Commit 7827493b authored by Arik Nemtsov's avatar Arik Nemtsov Committed by John W. Linville

mac80211: add ssid config to bss information in AP-mode

Set SSID information from nl80211 beacon parameters. Advertise changes
in SSID to low level drivers.
Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 28e3181a
...@@ -164,6 +164,7 @@ struct ieee80211_low_level_stats { ...@@ -164,6 +164,7 @@ struct ieee80211_low_level_stats {
* @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note * @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note
* that it is only ever disabled for station mode. * that it is only ever disabled for station mode.
* @BSS_CHANGED_IDLE: Idle changed for this BSS/interface. * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface.
* @BSS_CHANGED_SSID: SSID changed for this BSS (AP mode)
*/ */
enum ieee80211_bss_change { enum ieee80211_bss_change {
BSS_CHANGED_ASSOC = 1<<0, BSS_CHANGED_ASSOC = 1<<0,
...@@ -181,6 +182,7 @@ enum ieee80211_bss_change { ...@@ -181,6 +182,7 @@ enum ieee80211_bss_change {
BSS_CHANGED_ARP_FILTER = 1<<12, BSS_CHANGED_ARP_FILTER = 1<<12,
BSS_CHANGED_QOS = 1<<13, BSS_CHANGED_QOS = 1<<13,
BSS_CHANGED_IDLE = 1<<14, BSS_CHANGED_IDLE = 1<<14,
BSS_CHANGED_SSID = 1<<15,
/* when adding here, make sure to change ieee80211_reconfig */ /* when adding here, make sure to change ieee80211_reconfig */
}; };
...@@ -254,6 +256,9 @@ enum ieee80211_rssi_event { ...@@ -254,6 +256,9 @@ enum ieee80211_rssi_event {
* @idle: This interface is idle. There's also a global idle flag in the * @idle: This interface is idle. There's also a global idle flag in the
* hardware config which may be more appropriate depending on what * hardware config which may be more appropriate depending on what
* your driver/device needs to do. * your driver/device needs to do.
* @ssid: The SSID of the current vif. Only valid in AP-mode.
* @ssid_len: Length of SSID given in @ssid.
* @hidden_ssid: The SSID of the current vif is hidden. Only valid in AP-mode.
*/ */
struct ieee80211_bss_conf { struct ieee80211_bss_conf {
const u8 *bssid; const u8 *bssid;
...@@ -280,6 +285,9 @@ struct ieee80211_bss_conf { ...@@ -280,6 +285,9 @@ struct ieee80211_bss_conf {
bool arp_filter_enabled; bool arp_filter_enabled;
bool qos; bool qos;
bool idle; bool idle;
u8 ssid[IEEE80211_MAX_SSID_LEN];
size_t ssid_len;
bool hidden_ssid;
}; };
/** /**
......
...@@ -455,6 +455,20 @@ static int ieee80211_get_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -455,6 +455,20 @@ static int ieee80211_get_station(struct wiphy *wiphy, struct net_device *dev,
return ret; return ret;
} }
static void ieee80211_config_ap_ssid(struct ieee80211_sub_if_data *sdata,
struct beacon_parameters *params)
{
struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
bss_conf->ssid_len = params->ssid_len;
if (params->ssid_len)
memcpy(bss_conf->ssid, params->ssid, params->ssid_len);
bss_conf->hidden_ssid =
(params->hidden_ssid != NL80211_HIDDEN_SSID_NOT_IN_USE);
}
/* /*
* This handles both adding a beacon and setting new beacon info * This handles both adding a beacon and setting new beacon info
*/ */
...@@ -548,8 +562,11 @@ static int ieee80211_config_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -548,8 +562,11 @@ static int ieee80211_config_beacon(struct ieee80211_sub_if_data *sdata,
kfree(old); kfree(old);
ieee80211_config_ap_ssid(sdata, params);
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED | ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED |
BSS_CHANGED_BEACON); BSS_CHANGED_BEACON |
BSS_CHANGED_SSID);
return 0; return 0;
} }
......
...@@ -1077,6 +1077,8 @@ int ieee80211_reconfig(struct ieee80211_local *local) ...@@ -1077,6 +1077,8 @@ int ieee80211_reconfig(struct ieee80211_local *local)
changed |= BSS_CHANGED_IBSS; changed |= BSS_CHANGED_IBSS;
/* fall through */ /* fall through */
case NL80211_IFTYPE_AP: case NL80211_IFTYPE_AP:
changed |= BSS_CHANGED_SSID;
/* fall through */
case NL80211_IFTYPE_MESH_POINT: case NL80211_IFTYPE_MESH_POINT:
changed |= BSS_CHANGED_BEACON | changed |= BSS_CHANGED_BEACON |
BSS_CHANGED_BEACON_ENABLED; BSS_CHANGED_BEACON_ENABLED;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment