qcacld-3.0: Send rx rssi in mgmt frame ind
Rssi value is set to zero in mgmt frame ind
sent to sme via lim_send_sme_mgmt_frame_ind
in few cases.
Fix is to send rx rssi normalized value.
Change-Id: Ie8731dc2968fdfe4503266039f4753405db1b8ce
CRs-Fixed: 2032629
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 069b508..cfefff7 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 @@
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_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 @@
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 @@
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 @@
(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 @@
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 @@
}
}
+#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 @@
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 01c9498..75177f7 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 @@
(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 ede7ca0..feec899 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 @@
(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() ***/
/**