mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
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: Arik Nemtsov <arik@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
28e3181a77
commit
7827493b88
3 changed files with 28 additions and 1 deletions
|
@ -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 {
|
||||||
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 {
|
||||||
* @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 {
|
||||||
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,
|
||||||
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,
|
||||||
|
|
||||||
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)
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue