qcacld-3.0: Increase SSID array size
- Increase SSID variable array size while handling scan for ssid. - Cleanup scan for ssid API. Remove legacy scan code. Change-Id: Ia3a1a9dfc61e3453c1277742155d4572f28fb1a5 CRs-Fixed: 2054232
This commit is contained in:

committato da
snandini

parent
42dade0dd8
commit
1954af2dea
@@ -4515,20 +4515,11 @@ QDF_STATUS csr_scan_for_ssid(tpAniSirGlobal mac_ctx, uint32_t session_id,
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_E_INVAL;
|
||||
uint32_t num_ssid = profile->SSIDs.numOfSSIDs;
|
||||
#ifndef NAPIER_SCAN
|
||||
tSmeCmd *scan_cmd = NULL;
|
||||
tCsrScanRequest *scan_req = NULL;
|
||||
uint8_t index = 0;
|
||||
tpCsrNeighborRoamControlInfo neighbor_roaminfo =
|
||||
&mac_ctx->roam.neighborRoamInfo[session_id];
|
||||
tCsrSSIDs *ssids = NULL;
|
||||
#else
|
||||
struct scan_start_request *req;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
uint8_t i, chan, num_chan = 0, str[20];
|
||||
uint8_t i, chan, num_chan = 0, str[MAX_SSID_LEN];
|
||||
wlan_scan_id scan_id;
|
||||
tCsrRoamSession *session = CSR_GET_SESSION(mac_ctx, session_id);
|
||||
#endif
|
||||
|
||||
if (!(mac_ctx->scan.fScanEnable) && (num_ssid != 1)) {
|
||||
sme_err(
|
||||
@@ -4537,155 +4528,6 @@ QDF_STATUS csr_scan_for_ssid(tpAniSirGlobal mac_ctx, uint32_t session_id,
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifndef NAPIER_SCAN
|
||||
scan_cmd = csr_get_command_buffer(mac_ctx);
|
||||
|
||||
if (!scan_cmd) {
|
||||
sme_err("failed to allocate command buffer");
|
||||
goto error;
|
||||
}
|
||||
|
||||
qdf_mem_set(&scan_cmd->u.scanCmd, sizeof(tScanCmd), 0);
|
||||
scan_cmd->u.scanCmd.pToRoamProfile =
|
||||
qdf_mem_malloc(sizeof(tCsrRoamProfile));
|
||||
|
||||
if (NULL == scan_cmd->u.scanCmd.pToRoamProfile)
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
else
|
||||
status = csr_roam_copy_profile(mac_ctx,
|
||||
scan_cmd->u.scanCmd.pToRoamProfile,
|
||||
profile);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||
goto error;
|
||||
|
||||
scan_cmd->u.scanCmd.roamId = roam_id;
|
||||
scan_cmd->command = eSmeCommandScan;
|
||||
scan_cmd->sessionId = (uint8_t) session_id;
|
||||
scan_cmd->u.scanCmd.callback = NULL;
|
||||
scan_cmd->u.scanCmd.pContext = NULL;
|
||||
scan_cmd->u.scanCmd.reason = eCsrScanForSsid;
|
||||
|
||||
/* let it wrap around */
|
||||
wma_get_scan_id(&scan_cmd->u.scanCmd.scanID);
|
||||
qdf_mem_set(&scan_cmd->u.scanCmd.u.scanRequest,
|
||||
sizeof(tCsrScanRequest), 0);
|
||||
status = qdf_mc_timer_init(&scan_cmd->u.scanCmd.csr_scan_timer,
|
||||
QDF_TIMER_TYPE_SW,
|
||||
csr_scan_active_list_timeout_handle, scan_cmd);
|
||||
scan_req = &scan_cmd->u.scanCmd.u.scanRequest;
|
||||
scan_req->scanType = eSIR_ACTIVE_SCAN;
|
||||
scan_req->BSSType = profile->BSSType;
|
||||
scan_req->scan_id = scan_cmd->u.scanCmd.scanID;
|
||||
/*
|
||||
* To avoid 11b rate in probe request Set p2pSearch
|
||||
* flag as 1 for P2P Client Mode
|
||||
*/
|
||||
if (QDF_P2P_CLIENT_MODE == profile->csrPersona)
|
||||
scan_req->p2pSearch = 1;
|
||||
|
||||
/* Allocate memory for IE field */
|
||||
if (profile->pAddIEScan) {
|
||||
scan_req->pIEField =
|
||||
qdf_mem_malloc(profile->nAddIEScanLength);
|
||||
|
||||
if (NULL == scan_req->pIEField)
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
else
|
||||
status = QDF_STATUS_SUCCESS;
|
||||
|
||||
if (QDF_IS_STATUS_SUCCESS(status)) {
|
||||
qdf_mem_copy(scan_req->pIEField,
|
||||
profile->pAddIEScan,
|
||||
profile->nAddIEScanLength);
|
||||
scan_req->uIEFieldLen = profile->nAddIEScanLength;
|
||||
} else {
|
||||
sme_err("No memory for scanning IE fields");
|
||||
}
|
||||
} else
|
||||
scan_req->uIEFieldLen = 0;
|
||||
|
||||
/*
|
||||
* For one channel be good enpugh time to receive beacon
|
||||
* atleast
|
||||
*/
|
||||
if (1 == profile->ChannelInfo.numOfChannels) {
|
||||
if (neighbor_roaminfo->handoffReqInfo.src ==
|
||||
FASTREASSOC) {
|
||||
scan_req->maxChnTime =
|
||||
MAX_ACTIVE_SCAN_FOR_ONE_CHANNEL_FASTREASSOC;
|
||||
scan_req->minChnTime =
|
||||
MIN_ACTIVE_SCAN_FOR_ONE_CHANNEL_FASTREASSOC;
|
||||
/* Reset this value */
|
||||
neighbor_roaminfo->handoffReqInfo.src = 0;
|
||||
} else {
|
||||
scan_req->maxChnTime =
|
||||
MAX_ACTIVE_SCAN_FOR_ONE_CHANNEL;
|
||||
scan_req->minChnTime =
|
||||
MIN_ACTIVE_SCAN_FOR_ONE_CHANNEL;
|
||||
}
|
||||
} else {
|
||||
scan_req->maxChnTime =
|
||||
mac_ctx->roam.configParam.nActiveMaxChnTime;
|
||||
scan_req->minChnTime =
|
||||
mac_ctx->roam.configParam.nActiveMinChnTime;
|
||||
}
|
||||
|
||||
if (profile->BSSIDs.numOfBSSIDs == 1)
|
||||
qdf_copy_macaddr(&scan_req->bssid,
|
||||
profile->BSSIDs.bssid);
|
||||
else
|
||||
qdf_set_macaddr_broadcast(&scan_req->bssid);
|
||||
|
||||
if (profile->ChannelInfo.numOfChannels) {
|
||||
scan_req->ChannelInfo.ChannelList =
|
||||
qdf_mem_malloc(sizeof(*scan_req->ChannelInfo.ChannelList) *
|
||||
profile->ChannelInfo.numOfChannels);
|
||||
|
||||
if (NULL == scan_req->ChannelInfo.ChannelList)
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
else
|
||||
status = QDF_STATUS_SUCCESS;
|
||||
|
||||
scan_req->ChannelInfo.numOfChannels = 0;
|
||||
|
||||
if (QDF_IS_STATUS_SUCCESS(status)) {
|
||||
csr_roam_is_channel_valid(mac_ctx,
|
||||
profile->ChannelInfo.ChannelList[0]);
|
||||
csr_roam_copy_channellist(mac_ctx,
|
||||
profile, scan_cmd, index);
|
||||
} else {
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
scan_req->ChannelInfo.numOfChannels = 0;
|
||||
}
|
||||
|
||||
if (profile->SSIDs.numOfSSIDs) {
|
||||
scan_req->SSIDs.SSIDList =
|
||||
qdf_mem_malloc(profile->SSIDs.numOfSSIDs *
|
||||
sizeof(tCsrSSIDInfo));
|
||||
|
||||
if (NULL == scan_req->SSIDs.SSIDList)
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
else
|
||||
status = QDF_STATUS_SUCCESS;
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||
goto error;
|
||||
|
||||
ssids = &scan_req->SSIDs;
|
||||
ssids->numOfSSIDs = 1;
|
||||
|
||||
qdf_mem_copy(scan_req->SSIDs.SSIDList,
|
||||
profile->SSIDs.SSIDList,
|
||||
sizeof(tCsrSSIDInfo));
|
||||
}
|
||||
|
||||
/* Start process the command */
|
||||
status = csr_queue_sme_command(mac_ctx, scan_cmd, false);
|
||||
#else
|
||||
|
||||
session->scan_info.profile =
|
||||
qdf_mem_malloc(sizeof(tCsrRoamProfile));
|
||||
if (!session->scan_info.profile)
|
||||
@@ -4773,14 +4615,10 @@ QDF_STATUS csr_scan_for_ssid(tpAniSirGlobal mac_ctx, uint32_t session_id,
|
||||
}
|
||||
status = ucfg_scan_start(req);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
|
||||
#endif
|
||||
error:
|
||||
if (!QDF_IS_STATUS_SUCCESS(status)) {
|
||||
sme_err("failed to initiate scan with status: %d", status);
|
||||
#ifndef NAPIER_SCAN
|
||||
if (scan_cmd)
|
||||
csr_release_command(mac_ctx, scan_cmd);
|
||||
#endif
|
||||
|
||||
if (notify)
|
||||
csr_roam_call_callback(mac_ctx, session_id, NULL,
|
||||
roam_id, eCSR_ROAM_FAILED,
|
||||
|
Fai riferimento in un nuovo problema
Block a user