|
@@ -689,121 +689,6 @@ QDF_STATUS sme_ps_start_uapsd(tHalHandle hal_ctx, uint32_t session_id,
|
|
|
}
|
|
|
|
|
|
#ifdef FEATURE_WLAN_SCAN_PNO
|
|
|
-static tSirRetStatus
|
|
|
-sme_populate_mac_header(tpAniSirGlobal mac_ctx,
|
|
|
- uint8_t *bd,
|
|
|
- uint8_t type,
|
|
|
- uint8_t sub_type,
|
|
|
- tSirMacAddr peer_addr, tSirMacAddr self_mac_addr)
|
|
|
-{
|
|
|
- tSirRetStatus status_code = eSIR_SUCCESS;
|
|
|
- tpSirMacMgmtHdr mac_hdr;
|
|
|
-
|
|
|
- /* / Prepare MAC management header */
|
|
|
- mac_hdr = (tpSirMacMgmtHdr) (bd);
|
|
|
-
|
|
|
- /* Prepare FC */
|
|
|
- mac_hdr->fc.protVer = SIR_MAC_PROTOCOL_VERSION;
|
|
|
- mac_hdr->fc.type = type;
|
|
|
- mac_hdr->fc.subType = sub_type;
|
|
|
-
|
|
|
- /* Prepare Address 1 */
|
|
|
- qdf_mem_copy((uint8_t *) mac_hdr->da, (uint8_t *) peer_addr,
|
|
|
- sizeof(tSirMacAddr));
|
|
|
-
|
|
|
- sir_copy_mac_addr(mac_hdr->sa, self_mac_addr);
|
|
|
-
|
|
|
- /* Prepare Address 3 */
|
|
|
- qdf_mem_copy((uint8_t *) mac_hdr->bssId, (uint8_t *) peer_addr,
|
|
|
- sizeof(tSirMacAddr));
|
|
|
- return status_code;
|
|
|
-} /*** sme_populate_mac_header() ***/
|
|
|
-
|
|
|
-static tSirRetStatus
|
|
|
-sme_prepare_probe_req_template(tpAniSirGlobal mac_ctx,
|
|
|
- uint8_t channel_num,
|
|
|
- uint32_t dot11mode,
|
|
|
- tSirMacAddr self_mac_addr,
|
|
|
- uint8_t *frame,
|
|
|
- uint16_t *pus_len, tCsrRoamSession *psession)
|
|
|
-{
|
|
|
- tDot11fProbeRequest pr;
|
|
|
- uint32_t status, bytes, payload;
|
|
|
- tSirRetStatus sir_status;
|
|
|
- /*Bcast tx */
|
|
|
- tSirMacAddr bss_id = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
|
|
|
- /**
|
|
|
- * The scheme here is to fill out a 'tDot11fProbeRequest' structure
|
|
|
- * and then hand it off to 'dot11f_pack_probe_request' (for
|
|
|
- * serialization). We start by zero-initializing the structure:
|
|
|
- */
|
|
|
- qdf_mem_set((uint8_t *) &pr, sizeof(pr), 0);
|
|
|
-
|
|
|
- populate_dot11f_supp_rates(mac_ctx, channel_num, &pr.SuppRates, NULL);
|
|
|
-
|
|
|
- if (WNI_CFG_DOT11_MODE_11B != dot11mode) {
|
|
|
- populate_dot11f_ext_supp_rates1(mac_ctx, channel_num,
|
|
|
- &pr.ExtSuppRates);
|
|
|
- }
|
|
|
-
|
|
|
- if (IS_DOT11_MODE_HT(dot11mode)) {
|
|
|
- populate_dot11f_ht_caps(mac_ctx, NULL, &pr.HTCaps);
|
|
|
- pr.HTCaps.advCodingCap = psession->htConfig.ht_rx_ldpc;
|
|
|
- pr.HTCaps.txSTBC = psession->htConfig.ht_tx_stbc;
|
|
|
- pr.HTCaps.rxSTBC = psession->htConfig.ht_rx_stbc;
|
|
|
- if (!psession->htConfig.ht_sgi)
|
|
|
- pr.HTCaps.shortGI20MHz = pr.HTCaps.shortGI40MHz = 0;
|
|
|
- }
|
|
|
- /**
|
|
|
- * That's it-- now we pack it. First, how much space are we going to
|
|
|
- * need?
|
|
|
- */
|
|
|
- status = dot11f_get_packed_probe_request_size(mac_ctx, &pr, &payload);
|
|
|
- if (DOT11F_FAILED(status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
|
|
- FL("Failed to calculate the packed size for a Probe Request (0x%08x)."),
|
|
|
- status);
|
|
|
-
|
|
|
- /* We'll fall back on the worst case scenario: */
|
|
|
- payload = sizeof(tDot11fProbeRequest);
|
|
|
- } else if (DOT11F_WARNED(status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
|
|
- FL("There were warnings while calculating the packed size for a Probe Request (0x%08x)."),
|
|
|
- status);
|
|
|
- }
|
|
|
-
|
|
|
- bytes = payload + sizeof(tSirMacMgmtHdr);
|
|
|
-
|
|
|
- /* Prepare outgoing frame */
|
|
|
- qdf_mem_set(frame, bytes, 0);
|
|
|
-
|
|
|
- /* Next, we fill out the buffer descriptor: */
|
|
|
- sir_status = sme_populate_mac_header(mac_ctx, frame, SIR_MAC_MGMT_FRAME,
|
|
|
- SIR_MAC_MGMT_PROBE_REQ, bss_id,
|
|
|
- self_mac_addr);
|
|
|
-
|
|
|
- if (eSIR_SUCCESS != sir_status) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
|
|
- FL("Failed to populate the buffer descriptor for a Probe Request (%d)."),
|
|
|
- sir_status);
|
|
|
- return sir_status; /* allocated! */
|
|
|
- }
|
|
|
- /* That done, pack the Probe Request: */
|
|
|
- status = dot11f_pack_probe_request(mac_ctx, &pr, frame +
|
|
|
- sizeof(tSirMacMgmtHdr),
|
|
|
- payload, &payload);
|
|
|
- if (DOT11F_FAILED(status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "Failed to pack a Probe Request (0x%08x).", status);
|
|
|
- return eSIR_FAILURE; /* allocated! */
|
|
|
- } else if (DOT11F_WARNED(status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "There were warnings while packing a Probe Request");
|
|
|
- }
|
|
|
-
|
|
|
- *pus_len = payload + sizeof(tSirMacMgmtHdr);
|
|
|
- return eSIR_SUCCESS;
|
|
|
-} /* End sme_prepare_probe_req_template. */
|
|
|
/**
|
|
|
* sme_set_pno_channel_prediction() - Prepare PNO buffer
|
|
|
* @request_buf: Buffer to be filled up to send to WMA
|
|
@@ -893,70 +778,6 @@ QDF_STATUS sme_set_ps_preferred_network_list(tHalHandle hal_ctx,
|
|
|
configParam.
|
|
|
phyMode));
|
|
|
|
|
|
- /*Prepare a probe request for 2.4GHz band and one for 5GHz band */
|
|
|
- if (eSIR_SUCCESS ==
|
|
|
- sme_prepare_probe_req_template(mac_ctx,
|
|
|
- SIR_PNO_24G_DEFAULT_CH,
|
|
|
- uc_dot11_mode, session->selfMacAddr.bytes,
|
|
|
- request_buf->p24GProbeTemplate,
|
|
|
- &request_buf->us24GProbeTemplateLen,
|
|
|
- session)) {
|
|
|
- /* Append IE passed by supplicant(if any)
|
|
|
- * to probe request
|
|
|
- */
|
|
|
- if ((0 < request->us24GProbeTemplateLen) &&
|
|
|
- ((request_buf->us24GProbeTemplateLen +
|
|
|
- request->us24GProbeTemplateLen) <
|
|
|
- SIR_PNO_MAX_PB_REQ_SIZE)) {
|
|
|
- qdf_mem_copy((uint8_t *) &request_buf->
|
|
|
- p24GProbeTemplate +
|
|
|
- request_buf->us24GProbeTemplateLen,
|
|
|
- (uint8_t *) &request->p24GProbeTemplate,
|
|
|
- request->us24GProbeTemplateLen);
|
|
|
- request_buf->us24GProbeTemplateLen +=
|
|
|
- request->us24GProbeTemplateLen;
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME,
|
|
|
- QDF_TRACE_LEVEL_INFO,
|
|
|
- FL("request->us24GProbeTemplateLen = %d"),
|
|
|
- request->us24GProbeTemplateLen);
|
|
|
- } else {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME,
|
|
|
- QDF_TRACE_LEVEL_INFO,
|
|
|
- FL("Extra ie discarded on 2.4G, IE len = %d"),
|
|
|
- request->us24GProbeTemplateLen);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (eSIR_SUCCESS ==
|
|
|
- sme_prepare_probe_req_template(mac_ctx,
|
|
|
- SIR_PNO_5G_DEFAULT_CH, uc_dot11_mode,
|
|
|
- session->selfMacAddr.bytes,
|
|
|
- request_buf->p5GProbeTemplate,
|
|
|
- &request_buf->us5GProbeTemplateLen,
|
|
|
- session)) {
|
|
|
- /* Append IE passed by supplicant(if any)
|
|
|
- * to probe request
|
|
|
- */
|
|
|
- if ((0 < request->us5GProbeTemplateLen) &&
|
|
|
- ((request_buf->us5GProbeTemplateLen +
|
|
|
- request->us5GProbeTemplateLen) <
|
|
|
- SIR_PNO_MAX_PB_REQ_SIZE)) {
|
|
|
- qdf_mem_copy((uint8_t *) &request_buf->
|
|
|
- p5GProbeTemplate +
|
|
|
- request_buf->us5GProbeTemplateLen,
|
|
|
- (uint8_t *) &request->p5GProbeTemplate,
|
|
|
- request->us5GProbeTemplateLen);
|
|
|
- request_buf->us5GProbeTemplateLen +=
|
|
|
- request->us5GProbeTemplateLen;
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
|
|
|
- FL("request_buf->us5GProbeTemplateLen = %d"),
|
|
|
- request->us5GProbeTemplateLen);
|
|
|
- } else {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
|
|
|
- FL("Extra IE discarded on 5G, IE length = %d"),
|
|
|
- request->us5GProbeTemplateLen);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
if (mac_ctx->pnoOffload) {
|
|
|
if (request_buf->enable)
|