mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-28 17:41:50 +00:00
mwifiex: uap: enable 11d based on userspace configruation
This patch check whether userspace beacon data include country ie, if so then download command to enable 11d setup in firmeare accordingly. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Cathy Luo <cluo@marvell.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
ecf23a788e
commit
f18bbe5c86
3 changed files with 27 additions and 12 deletions
|
@ -2006,6 +2006,8 @@ static int mwifiex_cfg80211_start_ap(struct wiphy *wiphy,
|
|||
priv->state_11h.is_11h_active = false;
|
||||
}
|
||||
|
||||
mwifiex_config_uap_11d(priv, ¶ms->beacon);
|
||||
|
||||
if (mwifiex_config_start_uap(priv, bss_cfg)) {
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"Failed to start AP\n");
|
||||
|
|
|
@ -1564,6 +1564,9 @@ int mwifiex_config_start_uap(struct mwifiex_private *priv,
|
|||
void mwifiex_uap_del_sta_data(struct mwifiex_private *priv,
|
||||
struct mwifiex_sta_node *node);
|
||||
|
||||
void mwifiex_config_uap_11d(struct mwifiex_private *priv,
|
||||
struct cfg80211_beacon_data *beacon_data);
|
||||
|
||||
void mwifiex_init_11h_params(struct mwifiex_private *priv);
|
||||
int mwifiex_is_11h_active(struct mwifiex_private *priv);
|
||||
int mwifiex_11h_activate(struct mwifiex_private *priv, bool flag);
|
||||
|
|
|
@ -444,6 +444,28 @@ mwifiex_uap_bss_wep(u8 **tlv_buf, void *cmd_buf, u16 *param_size)
|
|||
return;
|
||||
}
|
||||
|
||||
/* This function enable 11D if userspace set the country IE.
|
||||
*/
|
||||
void mwifiex_config_uap_11d(struct mwifiex_private *priv,
|
||||
struct cfg80211_beacon_data *beacon_data)
|
||||
{
|
||||
enum state_11d_t state_11d;
|
||||
const u8 *country_ie;
|
||||
|
||||
country_ie = cfg80211_find_ie(WLAN_EID_COUNTRY, beacon_data->tail,
|
||||
beacon_data->tail_len);
|
||||
if (country_ie) {
|
||||
/* Send cmd to FW to enable 11D function */
|
||||
state_11d = ENABLE_11D;
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB,
|
||||
HostCmd_ACT_GEN_SET, DOT11D_I,
|
||||
&state_11d, true)) {
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"11D: failed to enable 11D\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* This function parses BSS related parameters from structure
|
||||
* and prepares TLVs. These TLVs are appended to command buffer.
|
||||
*/
|
||||
|
@ -848,8 +870,6 @@ void mwifiex_uap_set_channel(struct mwifiex_private *priv,
|
|||
int mwifiex_config_start_uap(struct mwifiex_private *priv,
|
||||
struct mwifiex_uap_bss_param *bss_cfg)
|
||||
{
|
||||
enum state_11d_t state_11d;
|
||||
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_SYS_CONFIG,
|
||||
HostCmd_ACT_GEN_SET,
|
||||
UAP_BSS_PARAMS_I, bss_cfg, true)) {
|
||||
|
@ -858,16 +878,6 @@ int mwifiex_config_start_uap(struct mwifiex_private *priv,
|
|||
return -1;
|
||||
}
|
||||
|
||||
/* Send cmd to FW to enable 11D function */
|
||||
state_11d = ENABLE_11D;
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB,
|
||||
HostCmd_ACT_GEN_SET, DOT11D_I,
|
||||
&state_11d, true)) {
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"11D: failed to enable 11D\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_BSS_START,
|
||||
HostCmd_ACT_GEN_SET, 0, NULL, true)) {
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue