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:
Sandeep Puligilla
2017-05-30 22:54:40 -07:00
committed by snandini
parent 42dade0dd8
commit 1954af2dea

View File

@@ -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,