diff --git a/core/mac/inc/ani_global.h b/core/mac/inc/ani_global.h index ef53ea4e8827..8e685545cf13 100644 --- a/core/mac/inc/ani_global.h +++ b/core/mac/inc/ani_global.h @@ -518,6 +518,9 @@ typedef struct sAniSirLim { tCacheParams protStaOverlapCache[LIM_PROT_STA_OVERLAP_CACHE_SIZE]; tCacheParams protStaCache[LIM_PROT_STA_CACHE_SIZE]; + /* Peer RSSI value */ + int8_t bss_rssi; + /* ASSOC RELATED END */ /* ////////////////////////////// HT RELATED ////////////////////////////////////////// */ diff --git a/core/mac/src/pe/lim/lim_process_probe_rsp_frame.c b/core/mac/src/pe/lim/lim_process_probe_rsp_frame.c index be73dc1d03f0..6f95ed93c6d6 100644 --- a/core/mac/src/pe/lim/lim_process_probe_rsp_frame.c +++ b/core/mac/src/pe/lim/lim_process_probe_rsp_frame.c @@ -126,6 +126,9 @@ lim_process_probe_rsp_frame(struct mac_context *mac_ctx, uint8_t *rx_Packet_info header = WMA_GET_RX_MAC_HEADER(rx_Packet_info); + mac_ctx->lim.bss_rssi = (int8_t) + WMA_GET_RX_RSSI_NORMALIZED(rx_Packet_info); + /* Validate IE information before processing Probe Response Frame */ if (lim_validate_ie_information_in_probe_rsp_frame(mac_ctx, rx_Packet_info) != @@ -139,8 +142,7 @@ lim_process_probe_rsp_frame(struct mac_context *mac_ctx, uint8_t *rx_Packet_info pe_debug("Probe Resp(len %d): " QDF_MAC_ADDR_FMT " RSSI %d", WMA_GET_RX_MPDU_LEN(rx_Packet_info), QDF_MAC_ADDR_REF(header->bssId), - (uint)abs((int8_t) - WMA_GET_RX_RSSI_NORMALIZED(rx_Packet_info))); + (uint)abs(mac_ctx->lim.bss_rssi)); /* Get pointer to Probe Response frame body */ body = WMA_GET_RX_MPDU_DATA(rx_Packet_info); /* Enforce Mandatory IEs */ diff --git a/core/mac/src/pe/lim/lim_process_tdls.c b/core/mac/src/pe/lim/lim_process_tdls.c index e94cb4872388..85dfceec40c3 100644 --- a/core/mac/src/pe/lim/lim_process_tdls.c +++ b/core/mac/src/pe/lim/lim_process_tdls.c @@ -654,7 +654,8 @@ static QDF_STATUS lim_send_tdls_dis_req_frame(struct mac_context *mac, lim_mgmt_tdls_tx_complete, HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME | HAL_USE_PEER_STA_REQUESTED_MASK, - smeSessionId, false, 0, RATEID_DEFAULT); + smeSessionId, false, 0, + RATEID_DEFAULT, 0); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { mac->lim.tdls_frm_session_id = NO_SESSION; pe_err("could not send TDLS Discovery Request frame"); @@ -966,7 +967,7 @@ static QDF_STATUS lim_send_tdls_dis_rsp_frame(struct mac_context *mac, lim_mgmt_tdls_tx_complete, HAL_USE_SELF_STA_REQUESTED_MASK, smeSessionId, false, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { mac->lim.tdls_frm_session_id = NO_SESSION; pe_err("could not send TDLS Discovery Response frame!"); @@ -1051,7 +1052,7 @@ wma_tx_frame_with_tx_complete_send(struct mac_context *mac, void *pPacket, HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME | HAL_USE_PEER_STA_REQUESTED_MASK, smeSessionId, flag, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); } #else @@ -1072,7 +1073,7 @@ wma_tx_frame_with_tx_complete_send(struct mac_context *mac, void *pPacket, HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME | HAL_USE_PEER_STA_REQUESTED_MASK, smeSessionId, false, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); } #endif diff --git a/core/mac/src/pe/lim/lim_send_frames_host_roam.c b/core/mac/src/pe/lim/lim_send_frames_host_roam.c index 57ceb8076bd4..db35cb762459 100644 --- a/core/mac/src/pe/lim/lim_send_frames_host_roam.c +++ b/core/mac/src/pe/lim/lim_send_frames_host_roam.c @@ -451,7 +451,7 @@ void lim_send_reassoc_req_with_ft_ies_mgmt_frame(struct mac_context *mac_ctx, (uint16_t) (bytes + ft_ies_length), TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, tx_flag, vdev_id, - 0, RATEID_DEFAULT); + 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { @@ -786,7 +786,7 @@ void lim_send_reassoc_req_mgmt_frame(struct mac_context *mac, (uint16_t) (sizeof(tSirMacMgmtHdr) + nPayload), TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, smeSessionId, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c index 83685ed0153d..d628e342bcab 100644 --- a/core/mac/src/pe/lim/lim_send_management_frames.c +++ b/core/mac/src/pe/lim/lim_send_management_frames.c @@ -438,7 +438,7 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx, (uint16_t) sizeof(tSirMacMgmtHdr) + payload, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, txflag, vdev_id, - 0, RATEID_DEFAULT); + 0, RATEID_DEFAULT, 0); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { pe_err("could not send Probe Request frame!"); /* Pkt will be freed up by the callback */ @@ -873,7 +873,7 @@ lim_send_probe_rsp_mgmt_frame(struct mac_context *mac_ctx, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, tx_flag, - vdev_id, 0, RATEID_DEFAULT); + vdev_id, 0, RATEID_DEFAULT, 0); /* Pkt will be freed up by the callback */ if (!QDF_IS_STATUS_SUCCESS(qdf_status)) @@ -1086,7 +1086,7 @@ lim_send_addts_req_action_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); @@ -1210,7 +1210,7 @@ void lim_send_mscs_req_action_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, lim_mscs_req_tx_complete_cnf, HAL_USE_PEER_STA_REQUESTED_MASK, pe_session->vdev_id, - false, 0, RATEID_DEFAULT); + false, 0, RATEID_DEFAULT, 0); if (QDF_IS_STATUS_SUCCESS(qdf_status)) { mlme_set_is_mscs_req_sent(pe_session->vdev, true); } else { @@ -1705,14 +1705,14 @@ lim_send_assoc_rsp_mgmt_frame( ANI_TXDIR_TODS, 7, lim_tx_complete, frame, lim_assoc_rsp_tx_complete, tx_flag, - sme_session, false, 0, RATEID_DEFAULT); + sme_session, false, 0, RATEID_DEFAULT, 0); else qdf_status = wma_tx_frame( mac_ctx, packet, (uint16_t)bytes, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, tx_flag, - sme_session, 0, RATEID_DEFAULT); + sme_session, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); @@ -1859,7 +1859,7 @@ lim_send_delts_req_action_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); /* Pkt will be freed up by the callback */ @@ -2039,6 +2039,7 @@ lim_send_assoc_req_mgmt_frame(struct mac_context *mac_ctx, uint8_t mbo_ie_len = 0, adaptive_11r_ie_len = 0, rsnx_ie_len = 0; uint8_t mscs_ext_ie_len = 0; bool bss_mfp_capable; + int8_t peer_rssi = 0; if (!pe_session) { pe_err("pe_session is NULL"); @@ -2620,12 +2621,15 @@ lim_send_assoc_req_mgmt_frame(struct mac_context *mac_ctx, pe_session, QDF_STATUS_SUCCESS, QDF_STATUS_SUCCESS); lim_diag_mgmt_tx_event_report(mac_ctx, mac_hdr, pe_session, QDF_STATUS_SUCCESS, QDF_STATUS_SUCCESS); + + peer_rssi = mac_ctx->lim.bss_rssi; + qdf_status = wma_tx_frameWithTxComplete(mac_ctx, packet, (uint16_t) (sizeof(tSirMacMgmtHdr) + payload), TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, lim_assoc_tx_complete_cnf, - tx_flag, vdev_id, false, 0, min_rid); + tx_flag, vdev_id, false, 0, min_rid, peer_rssi); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); @@ -2832,6 +2836,7 @@ lim_send_auth_mgmt_frame(struct mac_context *mac_ctx, bool challenge_req = false; enum rateid min_rid = RATEID_DEFAULT; uint16_t ch_freq_tx_frame = 0; + int8_t peer_rssi = 0; if (!session) { pe_err("Error: psession Entry is NULL"); @@ -3099,6 +3104,7 @@ alloc_packet: mac_ctx->auth_ack_status = LIM_ACK_NOT_RCD; min_rid = lim_get_min_session_txrate(session); + peer_rssi = mac_ctx->lim.bss_rssi; lim_diag_mgmt_tx_event_report(mac_ctx, mac_hdr, session, QDF_STATUS_SUCCESS, QDF_STATUS_SUCCESS); @@ -3112,7 +3118,7 @@ alloc_packet: 7, lim_tx_complete, frame, lim_auth_tx_complete_cnf, tx_flag, vdev_id, false, - ch_freq_tx_frame, min_rid); + ch_freq_tx_frame, min_rid, peer_rssi); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, session->peSessionId, qdf_status)); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { @@ -3582,7 +3588,7 @@ lim_send_disassoc_mgmt_frame(struct mac_context *mac, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, lim_disassoc_tx_complete_cnf_handler, txFlag, smeSessionId, false, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); @@ -3621,7 +3627,7 @@ lim_send_disassoc_mgmt_frame(struct mac_context *mac, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); @@ -3789,7 +3795,7 @@ lim_send_deauth_mgmt_frame(struct mac_context *mac, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, lim_deauth_tx_complete_cnf_handler, txFlag, smeSessionId, false, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); @@ -3836,7 +3842,7 @@ lim_send_deauth_mgmt_frame(struct mac_context *mac, wma_tx_frame(mac, pPacket, (uint16_t) nBytes, TXRX_FRM_802_11_MGMT, ANI_TXDIR_IBSS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); } else { #endif lim_diag_mgmt_tx_event_report(mac, pMacHdr, @@ -3848,7 +3854,7 @@ lim_send_deauth_mgmt_frame(struct mac_context *mac, wma_tx_frame(mac, pPacket, (uint16_t) nBytes, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); #ifdef FEATURE_WLAN_TDLS } #endif @@ -3975,7 +3981,7 @@ lim_send_meas_report_frame(struct mac_context *mac, qdf_status = wma_tx_frame(mac, pPacket, (uint16_t) nBytes, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, - lim_tx_complete, pFrame, 0, 0, RATEID_DEFAULT); + lim_tx_complete, pFrame, 0, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, ((pe_session) ? pe_session->peSessionId : NO_SESSION), @@ -4083,7 +4089,7 @@ lim_send_tpc_report_frame(struct mac_context *mac, qdf_status = wma_tx_frame(mac, pPacket, (uint16_t) nBytes, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, - lim_tx_complete, pFrame, 0, 0, RATEID_DEFAULT); + lim_tx_complete, pFrame, 0, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, ((pe_session) ? pe_session->peSessionId : NO_SESSION), @@ -4208,7 +4214,7 @@ lim_send_channel_switch_mgmt_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { @@ -4356,7 +4362,7 @@ lim_send_extended_chan_switch_action_frame(struct mac_context *mac_ctx, 7, lim_tx_complete, frame, txFlag, vdev_id, 0, - RATEID_DEFAULT); + RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, session_entry->peSessionId, qdf_status)); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { @@ -4505,7 +4511,7 @@ lim_p2p_oper_chan_change_confirm_action_frame(struct mac_context *mac_ctx, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, lim_oper_chan_change_confirm_tx_complete_cnf, - tx_flag, vdev_id, false, 0, RATEID_DEFAULT); + tx_flag, vdev_id, false, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, session_entry->peSessionId, qdf_status)); @@ -4636,7 +4642,7 @@ lim_send_neighbor_report_request_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); if (QDF_STATUS_SUCCESS != qdf_status) { @@ -4764,7 +4770,7 @@ lim_send_link_report_action_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - vdev_id, 0, RATEID_DEFAULT); + vdev_id, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); if (QDF_STATUS_SUCCESS != qdf_status) { @@ -4937,7 +4943,7 @@ lim_send_radio_measure_report_action_frame(struct mac_context *mac, qdf_status = wma_tx_frame(mac, pPacket, (uint16_t)nBytes, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); if (QDF_STATUS_SUCCESS != qdf_status) { @@ -5069,7 +5075,7 @@ QDF_STATUS lim_send_sa_query_request_frame(struct mac_context *mac, uint8_t *tra TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); if (QDF_STATUS_SUCCESS != qdf_status) { pe_err("wma_tx_frame FAILED! Status [%d]", qdf_status); nSirStatus = QDF_STATUS_E_FAILURE; @@ -5237,7 +5243,7 @@ QDF_STATUS lim_send_sa_query_response_frame(struct mac_context *mac, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, pFrame, txFlag, - smeSessionId, 0, RATEID_DEFAULT); + smeSessionId, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, pe_session->peSessionId, qdf_status)); if (QDF_STATUS_SUCCESS != qdf_status) { @@ -5439,7 +5445,7 @@ QDF_STATUS lim_send_addba_response_frame(struct mac_context *mac_ctx, NULL, frame_ptr, lim_addba_rsp_tx_complete_cnf, tx_flag, vdev_id, - false, 0, RATEID_DEFAULT); + false, 0, RATEID_DEFAULT, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, session->peSessionId, qdf_status)); if (QDF_STATUS_SUCCESS != qdf_status) { @@ -5600,7 +5606,7 @@ QDF_STATUS lim_send_delba_action_frame(struct mac_context *mac_ctx, NULL, frame_ptr, lim_delba_tx_complete_cnf, tx_flag, vdev_id, - false, 0, RATEID_DEFAULT); + false, 0, RATEID_DEFAULT, 0); if (qdf_status != QDF_STATUS_SUCCESS) { pe_err("delba wma_tx_frame FAILED! Status [%d]", qdf_status); return qdf_status; @@ -5655,7 +5661,7 @@ static void lim_tx_mgmt_frame(struct mac_context *mac_ctx, uint8_t vdev_id, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, lim_auth_tx_complete_cnf, - 0, vdev_id, false, 0, min_rid); + 0, vdev_id, false, 0, min_rid, 0); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, session->peSessionId, qdf_status)); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h index df846f68040b..b43d60a5053e 100644 --- a/core/wma/inc/wma_types.h +++ b/core/wma/inc/wma_types.h @@ -460,7 +460,7 @@ enum wmamsgtype { #define HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME 0x40 #define wma_tx_frame(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, \ - pData, txFlag, sessionid, channel_freq, rid) \ + pData, txFlag, sessionid, channel_freq, rid, peer_rssi) \ (QDF_STATUS)( wma_tx_packet( \ cds_get_context(QDF_MODULE_ID_WMA), \ (pFrmBuf), \ @@ -475,11 +475,12 @@ enum wmamsgtype { (sessionid), \ (false), \ (channel_freq), \ - (rid))) + (rid), \ + (peer_rssi))) #define wma_tx_frameWithTxComplete(hHal, pFrmBuf, frmLen, frmType, txDir, tid, \ pCompFunc, pData, pCBackFnTxComp, txFlag, sessionid, tdlsflag, \ - channel_freq, rid) \ + channel_freq, rid, peer_rssi) \ (QDF_STATUS)( wma_tx_packet( \ cds_get_context(QDF_MODULE_ID_WMA), \ (pFrmBuf), \ @@ -494,7 +495,8 @@ enum wmamsgtype { (sessionid), \ (tdlsflag), \ (channel_freq), \ - (rid))) + (rid), \ + (peer_rssi))) /** * struct sUapsd_Params - Powersave Offload Changes @@ -687,6 +689,7 @@ void wma_tx_abort(uint8_t vdev_id); * @tdls_flag: tdls flag * @channel_freq: channel frequency * @rid: rate id + * @peer_rssi: peer RSSI value * * This function sends the frame corresponding to the * given vdev id. @@ -700,7 +703,8 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen, void *pData, wma_tx_ota_comp_callback tx_frm_ota_comp_cb, uint8_t tx_flag, uint8_t vdev_id, bool tdls_flag, - uint16_t channel_freq, enum rateid rid); + uint16_t channel_freq, enum rateid rid, + int8_t peer_rssi); /** * wma_open() - Allocate wma context and initialize it. diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index 9dc5be0badcc..61a23e4bf178 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -2223,7 +2223,8 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen, void *pData, wma_tx_ota_comp_callback tx_frm_ota_comp_cb, uint8_t tx_flag, uint8_t vdev_id, bool tdls_flag, - uint16_t channel_freq, enum rateid rid) + uint16_t channel_freq, enum rateid rid, + int8_t peer_rssi) { tp_wma_handle wma_handle = (tp_wma_handle) (wma_context); int32_t status; @@ -2622,6 +2623,8 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen, mgmt_param.qdf_ctx = cds_get_context(QDF_MODULE_ID_QDF_DEVICE); mgmt_param.use_6mbps = use_6mbps; mgmt_param.tx_type = tx_frm_index; + mgmt_param.peer_rssi = peer_rssi; + if (tx_flag & HAL_USE_INCORRECT_KEY_PMF) mgmt_param.tx_flags |= MGMT_TX_USE_INCORRECT_KEY;