diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index 069b508da2..cfefff7c78 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -1092,7 +1092,8 @@ static void __lim_process_qos_map_configure_frame(tpAniSirGlobal mac_ctx, lim_send_sme_mgmt_frame_ind(mac_ctx, mac_hdr->fc.subType, (uint8_t *) mac_hdr, frame_len + sizeof(tSirMacMgmtHdr), 0, - WMA_GET_RX_CH(rx_pkt_info), session, 0); + WMA_GET_RX_CH(rx_pkt_info), session, + WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info)); } #ifdef ANI_SUPPORT_11H @@ -1301,7 +1302,8 @@ __lim_process_radio_measure_request(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo, lim_send_sme_mgmt_frame_ind(pMac, pHdr->fc.subType, (uint8_t *)pHdr, frameLen + sizeof(tSirMacMgmtHdr), 0, - WMA_GET_RX_CH(pRxPacketInfo), psessionEntry, 0); + WMA_GET_RX_CH(pRxPacketInfo), psessionEntry, + WMA_GET_RX_RSSI_NORMALIZED(pRxPacketInfo)); frm = qdf_mem_malloc(sizeof(*frm)); if (frm == NULL) { @@ -1528,7 +1530,9 @@ static void __lim_process_sa_query_response_action_frame(tpAniSirGlobal pMac, lim_send_sme_mgmt_frame_ind(pMac, pHdr->fc.subType, (uint8_t *) pHdr, frameLen + sizeof(tSirMacMgmtHdr), 0, WMA_GET_RX_CH(pRxPacketInfo), - psessionEntry, 0); + psessionEntry, + WMA_GET_RX_RSSI_NORMALIZED( + pRxPacketInfo)); return; } @@ -2025,7 +2029,9 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, sizeof(tSirMacMgmtHdr), session->smeSessionId, WMA_GET_RX_CH(rx_pkt_info), - session, 0); + session, + WMA_GET_RX_RSSI_NORMALIZED( + rx_pkt_info)); } else { pe_debug("Dropping the vendor specific action frame" "beacause of (WES Mode not enabled " @@ -2099,7 +2105,9 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, (uint8_t *) mac_hdr, frame_len + sizeof(tSirMacMgmtHdr), session->smeSessionId, - WMA_GET_RX_CH(rx_pkt_info), session, 0); + WMA_GET_RX_CH(rx_pkt_info), session, + WMA_GET_RX_RSSI_NORMALIZED( + rx_pkt_info)); break; #ifdef FEATURE_WLAN_TDLS #ifndef CONVERGED_TDLS_ENABLE @@ -2187,7 +2195,9 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, frame_len + sizeof(tSirMacMgmtHdr), session->smeSessionId, WMA_GET_RX_CH(rx_pkt_info), - session, 0); + session, + WMA_GET_RX_RSSI_NORMALIZED( + rx_pkt_info)); break; } case SIR_MAC_ACTION_PROT_DUAL_PUB: @@ -2234,6 +2244,52 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, } } +#ifndef CONVERGED_P2P_ENABLE +/* + * lim_process_action_vendor_specific() - Process action frame received + * @mac_ctx: Pointer to Global MAC structure + * @pkt_info: A pointer to packet info structure + * @action_hdr: Pointer to vendor specific action frame hdr + * @session: PE session entry + * + * Return: none + */ +static void lim_process_action_vendor_specific(tpAniSirGlobal mac_ctx, + uint8_t *pkt_info, + tpSirMacVendorSpecificPublicActionFrameHdr action_hdr, + tpPESession session) +{ + + tpSirMacMgmtHdr mac_hdr; + uint32_t frame_len; + uint8_t session_id = 0; + uint8_t p2p_oui[] = { 0x50, 0x6F, 0x9A, 0x09 }; + + mac_hdr = WMA_GET_RX_MAC_HEADER(pkt_info); + frame_len = WMA_GET_RX_PAYLOAD_LEN(pkt_info); + if (session) + session_id = session->smeSessionId; + + /* Check if it is a P2P public action frame. */ + if (!qdf_mem_cmp(action_hdr->Oui, p2p_oui, 4)) { + /* Forward to the SME to HDD to wpa_supplicant */ + /* type is ACTION */ + lim_send_sme_mgmt_frame_ind(mac_ctx, mac_hdr->fc.subType, + (uint8_t *) mac_hdr, frame_len + + sizeof(tSirMacMgmtHdr), session_id, + WMA_GET_RX_CH(pkt_info), session, + WMA_GET_RX_RSSI_NORMALIZED( + pkt_info)); + } else { + pe_debug("Unhandled public action frame (Vendor specific) OUI: %x %x %x %x", + action_hdr->Oui[0], + action_hdr->Oui[1], + action_hdr->Oui[2], + action_hdr->Oui[3]); + } +} +#endif + /** * lim_process_action_frame_no_session * @@ -2266,35 +2322,8 @@ void lim_process_action_frame_no_session(tpAniSirGlobal pMac, uint8_t *pBd) case SIR_MAC_ACTION_PUBLIC_USAGE: switch (pActionHdr->actionID) { case SIR_MAC_ACTION_VENDOR_SPECIFIC: - { - tpSirMacMgmtHdr pHdr; - uint32_t frameLen; - uint8_t P2POui[] = { 0x50, 0x6F, 0x9A, 0x09 }; - - pHdr = WMA_GET_RX_MAC_HEADER(pBd); - frameLen = WMA_GET_RX_PAYLOAD_LEN(pBd); - - /* Check if it is a P2P public action frame. */ - if (!qdf_mem_cmp(pActionHdr->Oui, P2POui, 4)) { - /* Forward to the SME to HDD to wpa_supplicant */ - /* type is ACTION */ - lim_send_sme_mgmt_frame_ind(pMac, - pHdr->fc.subType, - (uint8_t *) pHdr, - frameLen + - sizeof - (tSirMacMgmtHdr), - 0, - WMA_GET_RX_CH - (pBd), NULL, 0); - } else { - pe_debug("Unhandled public action frame (Vendor specific) OUI: %x %x %x %x", - pActionHdr->Oui[0], - pActionHdr->Oui[1], - pActionHdr->Oui[2], - pActionHdr->Oui[3]); - } - } + lim_process_action_vendor_specific(pMac, pBd, + pActionHdr, NULL); break; default: pe_warn("Unhandled public action frame: %x", diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index 01c9498918..75177f7c3b 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -840,7 +840,8 @@ lim_check_mgmt_registered_frames(tpAniSirGlobal mac_ctx, uint8_t *buff_desc, (uint8_t *) hdr, WMA_GET_RX_PAYLOAD_LEN(buff_desc) + sizeof(tSirMacMgmtHdr), mgmt_frame->sessionId, - WMA_GET_RX_CH(buff_desc), session_entry, 0); + WMA_GET_RX_CH(buff_desc), session_entry, + WMA_GET_RX_RSSI_NORMALIZED(buff_desc)); if ((type == SIR_MAC_MGMT_FRAME) && (fc.type == SIR_MAC_MGMT_FRAME) diff --git a/core/mac/src/pe/lim/lim_process_probe_req_frame.c b/core/mac/src/pe/lim/lim_process_probe_req_frame.c index ede7ca054b..feec899836 100644 --- a/core/mac/src/pe/lim/lim_process_probe_req_frame.c +++ b/core/mac/src/pe/lim/lim_process_probe_req_frame.c @@ -561,7 +561,8 @@ lim_indicate_probe_req_to_hdd(tpAniSirGlobal pMac, uint8_t *pBd, (uint8_t *) pHdr, (frameLen + sizeof(tSirMacMgmtHdr)), psessionEntry->smeSessionId, WMA_GET_RX_CH(pBd), - psessionEntry, 0); + psessionEntry, + WMA_GET_RX_RSSI_NORMALIZED(pBd)); } /*** end lim_indicate_probe_req_to_hdd() ***/ /**