diff options
author | Alexey Polyudov <apolyudov@google.com> | 2017-12-19 12:41:15 -0800 |
---|---|---|
committer | Alexey Polyudov <apolyudov@google.com> | 2017-12-19 12:41:15 -0800 |
commit | 7450ea094282178d5d73a52796c7dececb58065c (patch) | |
tree | 88f7b1ac2ca47e68a4efa67660ceb07e8c0894e7 /core/sme/src/csr/csr_api_roam.c | |
parent | d4282c262529ce5187b6190fea56c76acbeb5fbf (diff) | |
parent | 25294cd0aa28e177214e5d277afb029617b9b78e (diff) | |
download | qcacld-7450ea094282178d5d73a52796c7dececb58065c.tar.gz |
Merge remote-tracking branch 'partner/qcom-msm-4.9' into android-msm-bluecross-4.9
Conflicts:
core/mac/src/sys/legacy/src/utils/src/dot11f.c
Change-Id: Iad804c3c339cf858bd65ec4fed113c6ba1824969
Diffstat (limited to 'core/sme/src/csr/csr_api_roam.c')
-rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 185 |
1 files changed, 116 insertions, 69 deletions
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 9ce92456e3..10e42dec19 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -62,8 +62,9 @@ #define CSR_NUM_IBSS_START_CHANNELS_50 4 #define CSR_NUM_IBSS_START_CHANNELS_24 3 -/* 75 seconds, for WPA, WPA2, CCKM */ -#define CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD (75 * QDF_MC_TIMER_TO_SEC_UNIT) +/* 70 seconds, for WPA, WPA2, CCKM */ +#define CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD \ + (SIR_INSTALL_KEY_TIMEOUT_SEC * QDF_MC_TIMER_TO_SEC_UNIT) /* 120 seconds, for WPS */ #define CSR_WAIT_FOR_WPS_KEY_TIMEOUT_PERIOD (120 * QDF_MC_TIMER_TO_SEC_UNIT) @@ -254,10 +255,11 @@ static QDF_STATUS csr_send_mb_stats_req_msg(tpAniSirGlobal pMac, /* pStaEntry is no longer invalid upon the return of this function. */ static void csr_roam_remove_stat_list_entry(tpAniSirGlobal pMac, tListElem *pEntry); -static eCsrCfgDot11Mode csr_roam_get_phy_mode_band_for_bss(tpAniSirGlobal pMac, - tCsrRoamProfile *pProfile, - uint8_t operationChn, - eCsrBand *pBand); +static eCsrCfgDot11Mode +csr_roam_get_phy_mode_band_for_bss(tpAniSirGlobal pMac, + tCsrRoamProfile *pProfile, + uint8_t operationChn, + tSirRFBand *pBand); static QDF_STATUS csr_roam_get_qos_info_from_bss(tpAniSirGlobal pMac, tSirBssDescription *pBssDesc); tCsrStatsClientReqInfo *csr_roam_insert_entry_into_list(tpAniSirGlobal pMac, @@ -935,10 +937,10 @@ QDF_STATUS csr_update_channel_list(tpAniSirGlobal pMac) if ((is_unsafe_chan) && ((CDS_IS_CHANNEL_24GHZ(channel) && roam_policy->sap_operating_band == - eCSR_BAND_24) || + SIR_BAND_2_4_GHZ) || (CDS_IS_CHANNEL_5GHZ(channel) && roam_policy->sap_operating_band == - eCSR_BAND_5G))) { + SIR_BAND_5_GHZ))) { QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, FL("ignoring unsafe channel %d"), @@ -1615,7 +1617,7 @@ static void init_config_param(tpAniSirGlobal pMac) WNI_CFG_CHANNEL_BONDING_MODE_ENABLE; pMac->roam.configParam.phyMode = eCSR_DOT11_MODE_AUTO; - pMac->roam.configParam.eBand = eCSR_BAND_ALL; + pMac->roam.configParam.eBand = SIR_BAND_ALL; pMac->roam.configParam.uCfgDot11Mode = eCSR_CFG_DOT11_MODE_AUTO; pMac->roam.configParam.FragmentationThreshold = eCSR_DOT11_FRAG_THRESH_DEFAULT; @@ -1736,7 +1738,7 @@ static void init_config_param(tpAniSirGlobal pMac) OCE_WAN_WEIGHTAGE; } -eCsrBand csr_get_current_band(tHalHandle hHal) +tSirRFBand csr_get_current_band(tHalHandle hHal) { tpAniSirGlobal pMac = PMAC_STRUCT(hHal); @@ -1818,7 +1820,7 @@ QDF_STATUS csr_create_roam_scan_channel_list(tpAniSirGlobal pMac, uint8_t sessionId, uint8_t *pChannelList, uint8_t numChannels, - const eCsrBand eBand) + const tSirRFBand eBand) { QDF_STATUS status = QDF_STATUS_SUCCESS; @@ -1850,14 +1852,14 @@ QDF_STATUS csr_create_roam_scan_channel_list(tpAniSirGlobal pMac, &mergedOutputNumOfChannels); inNumChannels = mergedOutputNumOfChannels; } - if (eCSR_BAND_24 == eBand) { + if (SIR_BAND_2_4_GHZ == eBand) { for (i = 0; i < inNumChannels; i++) { if (CDS_IS_CHANNEL_24GHZ(inPtr[i]) && csr_roam_is_channel_valid(pMac, inPtr[i])) { ChannelList[outNumChannels++] = inPtr[i]; } } - } else if (eCSR_BAND_5G == eBand) { + } else if (SIR_BAND_5_GHZ == eBand) { for (i = 0; i < inNumChannels; i++) { /* Add 5G Non-DFS channel */ if (CDS_IS_CHANNEL_5GHZ(inPtr[i]) && @@ -1866,7 +1868,7 @@ QDF_STATUS csr_create_roam_scan_channel_list(tpAniSirGlobal pMac, ChannelList[outNumChannels++] = inPtr[i]; } } - } else if (eCSR_BAND_ALL == eBand) { + } else if (SIR_BAND_ALL == eBand) { for (i = 0; i < inNumChannels; i++) { if (csr_roam_is_channel_valid(pMac, inPtr[i]) && !CDS_IS_DFS_CH(inPtr[i])) { @@ -1886,7 +1888,7 @@ QDF_STATUS csr_create_roam_scan_channel_list(tpAniSirGlobal pMac, * E.g., if band capability is only 2.4G then all the channels in the * list are already filtered for 2.4G channels, hence ignore this check */ - if ((eCSR_BAND_ALL == eBand) && CSR_IS_ROAM_INTRA_BAND_ENABLED(pMac)) { + if ((SIR_BAND_ALL == eBand) && CSR_IS_ROAM_INTRA_BAND_ENABLED(pMac)) { csr_neighbor_roam_channels_filter_by_current_band(pMac, sessionId, ChannelList, @@ -2227,12 +2229,12 @@ bool csr_roam_is_roam_offload_scan_enabled(tpAniSirGlobal mac_ctx) return mac_ctx->roam.configParam.isRoamOffloadScanEnabled; } -QDF_STATUS csr_set_band(tHalHandle hHal, uint8_t sessionId, eCsrBand eBand) +QDF_STATUS csr_set_band(tHalHandle hHal, uint8_t sessionId, tSirRFBand eBand) { tpAniSirGlobal pMac = PMAC_STRUCT(hHal); QDF_STATUS status = QDF_STATUS_SUCCESS; - if (CSR_IS_PHY_MODE_A_ONLY(pMac) && (eBand == eCSR_BAND_24)) { + if (CSR_IS_PHY_MODE_A_ONLY(pMac) && (eBand == SIR_BAND_2_4_GHZ)) { /* DOT11 mode configured to 11a only and received * request to change the band to 2.4 GHz */ @@ -2242,7 +2244,7 @@ QDF_STATUS csr_set_band(tHalHandle hHal, uint8_t sessionId, eCsrBand eBand) return QDF_STATUS_E_INVAL; } if ((CSR_IS_PHY_MODE_B_ONLY(pMac) || - CSR_IS_PHY_MODE_G_ONLY(pMac)) && (eBand == eCSR_BAND_5G)) { + CSR_IS_PHY_MODE_G_ONLY(pMac)) && (eBand == SIR_BAND_5_GHZ)) { /* DOT11 mode configured to 11b/11g only and received * request to change the band to 5 GHz */ @@ -2384,6 +2386,7 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) { QDF_STATUS status = QDF_STATUS_SUCCESS; + int i; if (pParam) { pMac->roam.configParam.pkt_err_disconn_th = @@ -2886,6 +2889,14 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, pParam->rssi_channel_penalization; pMac->roam.configParam.num_disallowed_aps = pParam->num_disallowed_aps; + pMac->roam.configParam.wlm_latency_enable = + pParam->wlm_latency_enable; + pMac->roam.configParam.wlm_latency_level = + pParam->wlm_latency_level; + for (i = 0; i < CSR_NUM_WLM_LATENCY_LEVEL; i++) { + pMac->roam.configParam.wlm_latency_flags[i] = + pParam->wlm_latency_flags[i]; + } pMac->roam.configParam.oce_feature_bitmap = pParam->oce_feature_bitmap; @@ -3171,7 +3182,7 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) return QDF_STATUS_SUCCESS; } -QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode, eCsrBand eBand, +QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode, tSirRFBand eBand, bool *pfRestartNeeded) { QDF_STATUS status = QDF_STATUS_E_INVAL; @@ -3179,13 +3190,13 @@ QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode, eCsrBand eBand, bool fRestartNeeded = false; eCsrPhyMode newPhyMode = eCSR_DOT11_MODE_AUTO; - if (eCSR_BAND_24 == eBand) { + if (SIR_BAND_2_4_GHZ == eBand) { if (CSR_IS_RADIO_A_ONLY(pMac)) goto end; if (eCSR_DOT11_MODE_11a & phyMode) goto end; } - if (eCSR_BAND_5G == eBand) { + if (SIR_BAND_5_GHZ == eBand) { if (CSR_IS_RADIO_BG_ONLY(pMac)) goto end; if ((eCSR_DOT11_MODE_11b & phyMode) @@ -3205,17 +3216,17 @@ QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode, eCsrBand eBand, } else if (eCSR_DOT11_MODE_11g_ONLY & phyMode) { if (eCSR_DOT11_MODE_11g_ONLY != phyMode) goto end; - if (eCSR_BAND_5G == eBand) + if (SIR_BAND_5_GHZ == eBand) goto end; newPhyMode = eCSR_DOT11_MODE_11g_ONLY; - eBand = eCSR_BAND_24; + eBand = SIR_BAND_2_4_GHZ; } else if (eCSR_DOT11_MODE_11b_ONLY & phyMode) { if (eCSR_DOT11_MODE_11b_ONLY != phyMode) goto end; - if (eCSR_BAND_5G == eBand) + if (SIR_BAND_5_GHZ == eBand) goto end; newPhyMode = eCSR_DOT11_MODE_11b_ONLY; - eBand = eCSR_BAND_24; + eBand = SIR_BAND_2_4_GHZ; } else if (eCSR_DOT11_MODE_11n & phyMode) { newPhyMode = eCSR_DOT11_MODE_11n; } else if (eCSR_DOT11_MODE_abg & phyMode) { @@ -3223,20 +3234,20 @@ QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode, eCsrBand eBand, } else if (eCSR_DOT11_MODE_11a & phyMode) { if ((eCSR_DOT11_MODE_11g & phyMode) || (eCSR_DOT11_MODE_11b & phyMode)) { - if (eCSR_BAND_ALL == eBand) + if (SIR_BAND_ALL == eBand) newPhyMode = eCSR_DOT11_MODE_abg; else goto end; } else { newPhyMode = eCSR_DOT11_MODE_11a; - eBand = eCSR_BAND_5G; + eBand = SIR_BAND_5_GHZ; } } else if (eCSR_DOT11_MODE_11g & phyMode) { newPhyMode = eCSR_DOT11_MODE_11g; - eBand = eCSR_BAND_24; + eBand = SIR_BAND_2_4_GHZ; } else if (eCSR_DOT11_MODE_11b & phyMode) { newPhyMode = eCSR_DOT11_MODE_11b; - eBand = eCSR_BAND_24; + eBand = SIR_BAND_2_4_GHZ; } else { sme_err("can't recognize phymode 0x%08X", phyMode); newPhyMode = eCSR_DOT11_MODE_AUTO; @@ -4302,9 +4313,9 @@ QDF_STATUS csr_roam_prepare_bss_config(tpAniSirGlobal pMac, } } if (CDS_IS_CHANNEL_5GHZ(pBssDesc->channelId)) - pBssConfig->eBand = eCSR_BAND_5G; + pBssConfig->eBand = SIR_BAND_5_GHZ; else - pBssConfig->eBand = eCSR_BAND_24; + pBssConfig->eBand = SIR_BAND_2_4_GHZ; /* phymode */ if (csr_is_phy_mode_match(pMac, pProfile->phyMode, pBssDesc, pProfile, &cfgDot11Mode, pIes)) { @@ -4312,7 +4323,7 @@ QDF_STATUS csr_roam_prepare_bss_config(tpAniSirGlobal pMac, } else { sme_warn("Can not find match phy mode"); /* force it */ - if (eCSR_BAND_24 == pBssConfig->eBand) + if (SIR_BAND_2_4_GHZ == pBssConfig->eBand) pBssConfig->uCfgDot11Mode = eCSR_CFG_DOT11_MODE_11G; else pBssConfig->uCfgDot11Mode = eCSR_CFG_DOT11_MODE_11A; @@ -4506,7 +4517,7 @@ QDF_STATUS csr_roam_prepare_bss_config_from_profile(tpAniSirGlobal pMac, pBssConfig->f11hSupport = false; pBssConfig->uPowerLimit = 0; /* heartbeat */ - if (eCSR_BAND_5G == pBssConfig->eBand) { + if (SIR_BAND_5_GHZ == pBssConfig->eBand) { pBssConfig->uHeartBeatThresh = pMac->roam.configParam.HeartbeatThresh50; } else { @@ -4966,7 +4977,7 @@ static void csr_set_cfg_rate_set_from_profile(tpAniSirGlobal pMac, SIR_MAC_RATE_96, SIR_MAC_RATE_108} }; eCsrCfgDot11Mode cfgDot11Mode; - eCsrBand eBand; + tSirRFBand eBand; /* leave enough room for the max number of rates */ uint8_t OperationalRates[CSR_DOT11_SUPPORTED_RATES_MAX]; uint32_t OperationalRatesLength = 0; @@ -4991,7 +5002,7 @@ static void csr_set_cfg_rate_set_from_profile(tpAniSirGlobal pMac, * into our Operational Rate set (including the basic rates, which we * have already verified are supported earlier in the roaming decision). */ - if (eCSR_BAND_5G == eBand) { + if (SIR_BAND_5_GHZ == eBand) { /* 11a rates into the Operational Rate Set. */ OperationalRatesLength = DefaultSupportedRates11a.supportedRateSet.numRates * @@ -8353,7 +8364,9 @@ QDF_STATUS csr_roam_connect(tpAniSirGlobal pMac, uint32_t sessionId, pProfile->EncryptionType.encryptionType[0]); csr_roam_cancel_roaming(pMac, sessionId); csr_scan_remove_fresh_scan_command(pMac, sessionId); - csr_scan_abort_all_scans(pMac, eCSR_SCAN_ABORT_DEFAULT); + csr_scan_abort_mac_scan(pMac, sessionId, + INVALID_SCAN_ID, + eCSR_SCAN_ABORT_DEFAULT); csr_roam_remove_duplicate_command(pMac, sessionId, NULL, eCsrHddIssued); /* Check whether ssid changes */ if (csr_is_conn_state_connected(pMac, sessionId) && @@ -10116,7 +10129,7 @@ void csr_roaming_state_msg_processor(tpAniSirGlobal pMac, void *pMsgBuf) { tSirSmeRsp *pSmeRsp; tSmeIbssPeerInd *pIbssPeerInd; - tCsrRoamInfo roamInfo; + tCsrRoamInfo *roam_info; pSmeRsp = (tSirSmeRsp *) pMsgBuf; sme_debug("Message %d[0x%04X] received in substate %s", @@ -10194,14 +10207,19 @@ void csr_roaming_state_msg_processor(tpAniSirGlobal pMac, void *pMsgBuf) case eWNI_SME_IBSS_PEER_DEPARTED_IND: pIbssPeerInd = (tSmeIbssPeerInd *) pSmeRsp; sme_err("Peer departed ntf from LIM in joining state"); - qdf_mem_set(&roamInfo, sizeof(tCsrRoamInfo), 0); - roamInfo.staId = (uint8_t) pIbssPeerInd->staId; - roamInfo.ucastSig = (uint8_t) pIbssPeerInd->ucastSig; - roamInfo.bcastSig = (uint8_t) pIbssPeerInd->bcastSig; - qdf_copy_macaddr(&roamInfo.peerMac, &pIbssPeerInd->peer_addr); - csr_roam_call_callback(pMac, pSmeRsp->sessionId, &roamInfo, 0, + roam_info = qdf_mem_malloc(sizeof(*roam_info)); + if (!roam_info) { + sme_err("failed to allocate memory for roam_info"); + break; + } + roam_info->staId = (uint8_t) pIbssPeerInd->staId; + roam_info->ucastSig = (uint8_t) pIbssPeerInd->ucastSig; + roam_info->bcastSig = (uint8_t) pIbssPeerInd->bcastSig; + qdf_copy_macaddr(&roam_info->peerMac, &pIbssPeerInd->peer_addr); + csr_roam_call_callback(pMac, pSmeRsp->sessionId, roam_info, 0, eCSR_ROAM_CONNECT_STATUS_UPDATE, eCSR_ROAM_RESULT_IBSS_PEER_DEPARTED); + qdf_mem_free(roam_info); break; case eWNI_SME_GET_RSSI_REQ: { @@ -10529,6 +10547,13 @@ csr_update_key_cmd(tpAniSirGlobal mac_ctx, tCsrRoamSession *session, } qdf_mem_copy(session->eseCckmInfo.btk, set_key->Key, SIR_BTK_KEY_LEN); + /* + * KRK and BTK are updated by upper layer back to back. Send + * updated KRK and BTK together to FW here. + */ + csr_roam_offload_scan(mac_ctx, session->sessionId, + ROAM_SCAN_OFFLOAD_UPDATE_CFG, + REASON_ROAM_PSK_PMK_CHANGED); break; #endif #endif /* FEATURE_WLAN_ESE */ @@ -12795,7 +12820,7 @@ void csr_roam_process_wm_status_change_command(tpAniSirGlobal pMac, static void csr_compute_mode_and_band(tpAniSirGlobal mac_ctx, eCsrCfgDot11Mode *dot11_mode, - eCsrBand *band, + tSirRFBand *band, uint8_t opr_ch) { bool vht_24_ghz = mac_ctx->roam.configParam.enableVhtFor24GHz; @@ -12803,15 +12828,15 @@ csr_compute_mode_and_band(tpAniSirGlobal mac_ctx, switch (mac_ctx->roam.configParam.uCfgDot11Mode) { case eCSR_CFG_DOT11_MODE_11A: *dot11_mode = eCSR_CFG_DOT11_MODE_11A; - *band = eCSR_BAND_5G; + *band = SIR_BAND_5_GHZ; break; case eCSR_CFG_DOT11_MODE_11B: *dot11_mode = eCSR_CFG_DOT11_MODE_11B; - *band = eCSR_BAND_24; + *band = SIR_BAND_2_4_GHZ; break; case eCSR_CFG_DOT11_MODE_11G: *dot11_mode = eCSR_CFG_DOT11_MODE_11G; - *band = eCSR_BAND_24; + *band = SIR_BAND_2_4_GHZ; break; case eCSR_CFG_DOT11_MODE_11N: *dot11_mode = eCSR_CFG_DOT11_MODE_11N; @@ -12874,7 +12899,7 @@ csr_compute_mode_and_band(tpAniSirGlobal mac_ctx, */ if (eCSR_OPERATING_CHANNEL_AUTO == opr_ch) { *band = mac_ctx->roam.configParam.eBand; - if (eCSR_BAND_24 == *band) { + if (SIR_BAND_2_4_GHZ == *band) { /* * See reason in else if ( CDS_IS_CHANNEL_24GHZ * (opr_ch) ) to pick 11B @@ -12882,7 +12907,7 @@ csr_compute_mode_and_band(tpAniSirGlobal mac_ctx, *dot11_mode = eCSR_CFG_DOT11_MODE_11B; } else { /* prefer 5GHz */ - *band = eCSR_BAND_5G; + *band = SIR_BAND_5_GHZ; *dot11_mode = eCSR_CFG_DOT11_MODE_11A; } } else if (CDS_IS_CHANNEL_24GHZ(opr_ch)) { @@ -12904,11 +12929,11 @@ csr_compute_mode_and_band(tpAniSirGlobal mac_ctx, * to force it. */ *dot11_mode = eCSR_CFG_DOT11_MODE_11B; - *band = eCSR_BAND_24; + *band = SIR_BAND_2_4_GHZ; } else { /* else, it's a 5.0GHz channel. Set mode to 11a. */ *dot11_mode = eCSR_CFG_DOT11_MODE_11A; - *band = eCSR_BAND_5G; + *band = SIR_BAND_5_GHZ; } break; } /* switch */ @@ -12933,9 +12958,9 @@ static eCsrCfgDot11Mode csr_roam_get_phy_mode_band_for_bss(tpAniSirGlobal mac_ctx, tCsrRoamProfile *profile, uint8_t opr_chn, - eCsrBand *p_band) + tSirRFBand *p_band) { - eCsrBand band; + tSirRFBand band; eCsrCfgDot11Mode curr_mode = mac_ctx->roam.configParam.uCfgDot11Mode; eCsrCfgDot11Mode cfg_dot11_mode = csr_get_cfg_dot11_mode_from_csr_phy_mode(profile, @@ -12959,9 +12984,9 @@ csr_roam_get_phy_mode_band_for_bss(tpAniSirGlobal mac_ctx, if (eCSR_OPERATING_CHANNEL_AUTO == opr_chn) { /* channel is Auto also. */ band = mac_ctx->roam.configParam.eBand; - if (eCSR_BAND_ALL == band) { + if (SIR_BAND_ALL == band) { /* prefer 5GHz */ - band = eCSR_BAND_5G; + band = SIR_BAND_5_GHZ; } } else{ band = CSR_GET_BAND(opr_chn); @@ -13512,7 +13537,7 @@ csr_populate_basic_rates(tSirMacRateSet *rate_set, bool is_ofdm_rates, * Return: tSirNwType */ static tSirNwType -csr_convert_mode_to_nw_type(eCsrCfgDot11Mode dot11_mode, eCsrBand band) +csr_convert_mode_to_nw_type(eCsrCfgDot11Mode dot11_mode, tSirRFBand band) { switch (dot11_mode) { case eCSR_CFG_DOT11_MODE_11G: @@ -13527,7 +13552,7 @@ csr_convert_mode_to_nw_type(eCsrCfgDot11Mode dot11_mode, eCsrBand band) * Because LIM only verifies it against 11a, 11b or 11g, set * only 11g or 11a here */ - if (eCSR_BAND_24 == band) + if (SIR_BAND_2_4_GHZ == band) return eSIR_11G_NW_TYPE; else return eSIR_11A_NW_TYPE; @@ -13600,7 +13625,7 @@ csr_roam_get_bss_start_parms(tpAniSirGlobal pMac, tCsrRoamStartBssParams *pParam, bool skip_hostapd_rate) { - eCsrBand band; + tSirRFBand band; uint8_t opr_ch = 0; tSirNwType nw_type; uint8_t tmp_opr_ch = 0; @@ -13794,7 +13819,7 @@ QDF_STATUS csr_roam_issue_start_bss(tpAniSirGlobal pMac, uint32_t sessionId, uint32_t roamId) { QDF_STATUS status = QDF_STATUS_SUCCESS; - eCsrBand eBand; + tSirRFBand eBand; /* Set the roaming substate to 'Start BSS attempt'... */ csr_roam_substate_change(pMac, eCSR_ROAM_SUBSTATE_START_BSS_REQ, sessionId); @@ -13901,6 +13926,7 @@ void csr_roam_prepare_bss_params(tpAniSirGlobal pMac, uint32_t sessionId, uint8_t Channel; ePhyChanBondState cbMode = PHY_SINGLE_CHANNEL_CENTERED; tCsrRoamSession *pSession = CSR_GET_SESSION(pMac, sessionId); + bool skip_hostapd_rate = !pProfile->chan_switch_hostapd_rate_enabled; if (!pSession) { sme_err("session %d not found", sessionId); @@ -13916,7 +13942,8 @@ void csr_roam_prepare_bss_params(tpAniSirGlobal pMac, uint32_t sessionId, } } else { csr_roam_get_bss_start_parms(pMac, pProfile, - &pSession->bssParams, false); + &pSession->bssParams, + skip_hostapd_rate); /* Use the first SSID */ if (pProfile->SSIDs.numOfSSIDs) qdf_mem_copy(&pSession->bssParams.ssId, @@ -14058,6 +14085,13 @@ QDF_STATUS csr_roam_set_psk_pmk(tpAniSirGlobal pMac, uint32_t sessionId, } qdf_mem_copy(pSession->psk_pmk, pPSK_PMK, sizeof(pSession->psk_pmk)); pSession->pmk_len = pmk_len; + + if (csr_is_auth_type_ese(pMac->roam.roamSession[sessionId]. + connectedProfile.AuthType)) { + sme_debug("PMK update is not required for ESE"); + return QDF_STATUS_SUCCESS; + } + csr_roam_offload_scan(pMac, sessionId, ROAM_SCAN_OFFLOAD_UPDATE_CFG, REASON_ROAM_PSK_PMK_CHANGED); @@ -18044,15 +18078,15 @@ csr_update_roam_scan_offload_request(tpAniSirGlobal mac_ctx, * Return: bool if match else false */ static bool -csr_check_band_channel_match(eCsrBand band, uint8_t channel) +csr_check_band_channel_match(tSirRFBand band, uint8_t channel) { - if (eCSR_BAND_ALL == band) + if (SIR_BAND_ALL == band) return true; - if (eCSR_BAND_24 == band && CDS_IS_CHANNEL_24GHZ(channel)) + if (SIR_BAND_2_4_GHZ == band && CDS_IS_CHANNEL_24GHZ(channel)) return true; - if (eCSR_BAND_5G == band && CDS_IS_CHANNEL_5GHZ(channel)) + if (SIR_BAND_5_GHZ == band && CDS_IS_CHANNEL_5GHZ(channel)) return true; return false; @@ -18072,7 +18106,7 @@ csr_fetch_ch_lst_from_ini(tpAniSirGlobal mac_ctx, tpCsrNeighborRoamControlInfo roam_info, tSirRoamOffloadScanReq *req_buf) { - eCsrBand band; + tSirRFBand band; uint8_t i = 0; uint8_t num_channels = 0; uint8_t *ch_lst = roam_info->cfgParams.channelInfo.ChannelList; @@ -18096,8 +18130,8 @@ csr_fetch_ch_lst_from_ini(tpAniSirGlobal mac_ctx, * that is supported. */ band = mac_ctx->roam.configParam.bandCapability; - if ((eCSR_BAND_24 != band) && (eCSR_BAND_5G != band) - && (eCSR_BAND_ALL != band)) { + if ((SIR_BAND_2_4_GHZ != band) && (SIR_BAND_5_GHZ != band) + && (SIR_BAND_ALL != band)) { QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR, "Invalid band(%d), roam scan offload req aborted", band); @@ -18269,7 +18303,7 @@ csr_fetch_valid_ch_lst(tpAniSirGlobal mac_ctx, uint16_t cnt = 0; bool is_unsafe_chan; qdf_device_t qdf_ctx = cds_get_context(QDF_MODULE_ID_QDF_DEVICE); - eCsrBand band = eCSR_BAND_ALL; + tSirRFBand band = SIR_BAND_ALL; if (!qdf_ctx) { cds_err("qdf_ctx is NULL"); @@ -19944,7 +19978,20 @@ QDF_STATUS csr_queue_sme_command(tpAniSirGlobal pMac, tSmeCmd *pCommand, pMac->scan.max_scan_count) { sme_err("scan pending list count %d", pMac->sme.smeScanCmdPendingList.Count); - csr_scan_call_callback(pMac, pCommand, eCSR_SCAN_ABORT); + if (pCommand->command == eSmeCommandScan) { + csr_scan_call_callback(pMac, pCommand, + eCSR_SCAN_ABORT); + } else { + remainOnChanCallback callback = + pCommand->u.remainChlCmd.callback; + if (callback) { + callback(pMac, + pCommand->u.remainChlCmd.callbackCtx, + QDF_STATUS_E_FAILURE, + pCommand->u.remainChlCmd.scan_id); + } + } + return QDF_STATUS_E_FAILURE; } sme_debug( |