diff options
| author | hangtian <hangtian@codeaurora.org> | 2019-08-09 15:46:49 +0800 |
|---|---|---|
| committer | wuliangf <wuliangf@codeaurora.org> | 2019-08-23 16:33:41 +0800 |
| commit | df0828f3fe4f4ab5eb8c24dbf608f1a4c7caca35 (patch) | |
| tree | 3cb1d57a392e1bf729906559a15558f3fa33a088 | |
| parent | 2d739494c176daccb0b9d7165bc863353dff9534 (diff) | |
qcacld-3.0: Set hidden_ssid when restart sap on another channel
Set hidden_ssid when restart sap on another channel, currently tested 2
methods to restart sap on another channel: 1, force-scc switch to station
channel; 2, iwpriv wlan1 setChanChange x. Both of them run into error
state: with hidden_ssid set in hostapd.conf: ignore_broadcast_ssid=1,
after channel switch, APUT reply broadcast probe request with it's SSID.
Copy pe session parameter: ssidHidden which stored user setting to next
channel vdev start.
Change-Id: I56580529e2b0db673c6b28c75094a7fd225cba77
CRs-Fixed: 2506214
| -rw-r--r-- | core/mac/src/pe/lim/lim_send_messages.c | 4 | ||||
| -rw-r--r-- | core/wma/inc/wma_if.h | 5 | ||||
| -rw-r--r-- | core/wma/src/wma_dev_if.c | 21 | ||||
| -rw-r--r-- | core/wma/src/wma_scan_roam.c | 3 |
4 files changed, 21 insertions, 12 deletions
diff --git a/core/mac/src/pe/lim/lim_send_messages.c b/core/mac/src/pe/lim/lim_send_messages.c index 665a30a72c76..129903eb137e 100644 --- a/core/mac/src/pe/lim/lim_send_messages.c +++ b/core/mac/src/pe/lim/lim_send_messages.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -197,6 +197,8 @@ tSirRetStatus lim_send_switch_chnl_params(tpAniSirGlobal pMac, pChnlParams->reduced_beacon_interval = pMac->sap.SapDfsInfo.reduced_beacon_interval; + pChnlParams->ssid_hidden = pSessionEntry->ssidHidden; + pChnlParams->ssid = pSessionEntry->ssId; if (cds_is_5_mhz_enabled()) pChnlParams->ch_width = CH_WIDTH_5MHZ; else if (cds_is_10_mhz_enabled()) diff --git a/core/wma/inc/wma_if.h b/core/wma/inc/wma_if.h index 1afe63540d11..d0b8607d4963 100644 --- a/core/wma/inc/wma_if.h +++ b/core/wma/inc/wma_if.h @@ -872,6 +872,9 @@ typedef struct { * @isDfsChannel: is DFS channel * @vhtCapable: VHT capable * @dot11_mode: 802.11 mode + * @reduced_beacon_interval: reduced beacon interval value + * @ssid_hidden: the sap ssid is hidden + * @ssid: sap ssid */ typedef struct { uint8_t channelNumber; @@ -904,6 +907,8 @@ typedef struct { uint8_t nss; bool rx_ldpc; uint16_t reduced_beacon_interval; + uint8_t ssid_hidden; + tSirMacSSid ssid; } tSwitchChannelParams, *tpSwitchChannelParams; typedef void (*tpSetLinkStateCallback)(tpAniSirGlobal pMac, void *msgParam, diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index baaf7fd68a0b..21fe8e3ea403 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2718,16 +2718,6 @@ QDF_STATUS wma_vdev_start(tp_wma_handle wma, params.beacon_intval = req->beacon_intval; params.dtim_period = req->dtim_period; - /* Copy the SSID */ - if (req->ssid.length) { - params.ssid.length = req->ssid.length; - if (req->ssid.length < sizeof(cmd->ssid.ssid)) - temp_ssid_len = req->ssid.length; - else - temp_ssid_len = sizeof(cmd->ssid.ssid); - qdf_mem_copy(params.ssid.mac_ssid, req->ssid.ssId, - temp_ssid_len); - } params.pmf_enabled = req->pmf_enabled; params.ldpc_rx_enabled = req->ldpc_rx_enabled; @@ -2738,6 +2728,17 @@ QDF_STATUS wma_vdev_start(tp_wma_handle wma, if (req->ldpc_rx_enabled) temp_flags |= WMI_UNIFIED_VDEV_START_LDPC_RX_ENABLED; } + /* Copy the SSID */ + if (req->ssid.length) { + params.ssid.length = req->ssid.length; + if (req->ssid.length < sizeof(cmd->ssid.ssid)) + temp_ssid_len = req->ssid.length; + else + temp_ssid_len = sizeof(cmd->ssid.ssid); + qdf_mem_copy(params.ssid.mac_ssid, req->ssid.ssId, + temp_ssid_len); + } + params.hidden_ssid = req->hidden_ssid; if (req->hidden_ssid) temp_flags |= WMI_UNIFIED_VDEV_START_HIDDEN_SSID; diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 3c78cdb8666d..9d3909950965 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -3882,6 +3882,7 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params) req.dtim_period = 1; req.is_dfs = params->isDfsChannel; req.ldpc_rx_enabled = params->rx_ldpc; + req.ssid = params->ssid; /* In case of AP mode, once radar is detected, we need to * issuse VDEV RESTART, so we making is_channel_switch as @@ -3890,7 +3891,7 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params) if ((wma_is_vdev_in_ap_mode(wma, req.vdev_id) == true) || (params->restart_on_chan_switch == true)) { wma->interfaces[req.vdev_id].is_channel_switch = true; - req.hidden_ssid = intr[vdev_id].vdev_restart_params.ssidHidden; + req.hidden_ssid = params->ssid_hidden; } if (params->restart_on_chan_switch == true && |
