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
This commit is contained in:

committed by
snandini

parent
197a18c827
commit
2bc14356bc
@@ -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,
|
lim_send_sme_mgmt_frame_ind(mac_ctx, mac_hdr->fc.subType,
|
||||||
(uint8_t *) mac_hdr,
|
(uint8_t *) mac_hdr,
|
||||||
frame_len + sizeof(tSirMacMgmtHdr), 0,
|
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
|
#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,
|
lim_send_sme_mgmt_frame_ind(pMac, pHdr->fc.subType, (uint8_t *)pHdr,
|
||||||
frameLen + sizeof(tSirMacMgmtHdr), 0,
|
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));
|
frm = qdf_mem_malloc(sizeof(*frm));
|
||||||
if (frm == NULL) {
|
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,
|
lim_send_sme_mgmt_frame_ind(pMac, pHdr->fc.subType, (uint8_t *) pHdr,
|
||||||
frameLen + sizeof(tSirMacMgmtHdr), 0,
|
frameLen + sizeof(tSirMacMgmtHdr), 0,
|
||||||
WMA_GET_RX_CH(pRxPacketInfo),
|
WMA_GET_RX_CH(pRxPacketInfo),
|
||||||
psessionEntry, 0);
|
psessionEntry,
|
||||||
|
WMA_GET_RX_RSSI_NORMALIZED(
|
||||||
|
pRxPacketInfo));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2025,7 +2029,9 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx,
|
|||||||
sizeof(tSirMacMgmtHdr),
|
sizeof(tSirMacMgmtHdr),
|
||||||
session->smeSessionId,
|
session->smeSessionId,
|
||||||
WMA_GET_RX_CH(rx_pkt_info),
|
WMA_GET_RX_CH(rx_pkt_info),
|
||||||
session, 0);
|
session,
|
||||||
|
WMA_GET_RX_RSSI_NORMALIZED(
|
||||||
|
rx_pkt_info));
|
||||||
} else {
|
} else {
|
||||||
pe_debug("Dropping the vendor specific action frame"
|
pe_debug("Dropping the vendor specific action frame"
|
||||||
"beacause of (WES Mode not enabled "
|
"beacause of (WES Mode not enabled "
|
||||||
@@ -2099,7 +2105,9 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx,
|
|||||||
(uint8_t *) mac_hdr,
|
(uint8_t *) mac_hdr,
|
||||||
frame_len + sizeof(tSirMacMgmtHdr),
|
frame_len + sizeof(tSirMacMgmtHdr),
|
||||||
session->smeSessionId,
|
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;
|
break;
|
||||||
#ifdef FEATURE_WLAN_TDLS
|
#ifdef FEATURE_WLAN_TDLS
|
||||||
#ifndef CONVERGED_TDLS_ENABLE
|
#ifndef CONVERGED_TDLS_ENABLE
|
||||||
@@ -2187,7 +2195,9 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx,
|
|||||||
frame_len + sizeof(tSirMacMgmtHdr),
|
frame_len + sizeof(tSirMacMgmtHdr),
|
||||||
session->smeSessionId,
|
session->smeSessionId,
|
||||||
WMA_GET_RX_CH(rx_pkt_info),
|
WMA_GET_RX_CH(rx_pkt_info),
|
||||||
session, 0);
|
session,
|
||||||
|
WMA_GET_RX_RSSI_NORMALIZED(
|
||||||
|
rx_pkt_info));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SIR_MAC_ACTION_PROT_DUAL_PUB:
|
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
|
* 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:
|
case SIR_MAC_ACTION_PUBLIC_USAGE:
|
||||||
switch (pActionHdr->actionID) {
|
switch (pActionHdr->actionID) {
|
||||||
case SIR_MAC_ACTION_VENDOR_SPECIFIC:
|
case SIR_MAC_ACTION_VENDOR_SPECIFIC:
|
||||||
{
|
lim_process_action_vendor_specific(pMac, pBd,
|
||||||
tpSirMacMgmtHdr pHdr;
|
pActionHdr, NULL);
|
||||||
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]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pe_warn("Unhandled public action frame: %x",
|
pe_warn("Unhandled public action frame: %x",
|
||||||
|
@@ -840,7 +840,8 @@ lim_check_mgmt_registered_frames(tpAniSirGlobal mac_ctx, uint8_t *buff_desc,
|
|||||||
(uint8_t *) hdr,
|
(uint8_t *) hdr,
|
||||||
WMA_GET_RX_PAYLOAD_LEN(buff_desc) +
|
WMA_GET_RX_PAYLOAD_LEN(buff_desc) +
|
||||||
sizeof(tSirMacMgmtHdr), mgmt_frame->sessionId,
|
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)
|
if ((type == SIR_MAC_MGMT_FRAME)
|
||||||
&& (fc.type == SIR_MAC_MGMT_FRAME)
|
&& (fc.type == SIR_MAC_MGMT_FRAME)
|
||||||
|
@@ -561,7 +561,8 @@ lim_indicate_probe_req_to_hdd(tpAniSirGlobal pMac, uint8_t *pBd,
|
|||||||
(uint8_t *) pHdr,
|
(uint8_t *) pHdr,
|
||||||
(frameLen + sizeof(tSirMacMgmtHdr)),
|
(frameLen + sizeof(tSirMacMgmtHdr)),
|
||||||
psessionEntry->smeSessionId, WMA_GET_RX_CH(pBd),
|
psessionEntry->smeSessionId, WMA_GET_RX_CH(pBd),
|
||||||
psessionEntry, 0);
|
psessionEntry,
|
||||||
|
WMA_GET_RX_RSSI_NORMALIZED(pBd));
|
||||||
} /*** end lim_indicate_probe_req_to_hdd() ***/
|
} /*** end lim_indicate_probe_req_to_hdd() ***/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user