qcacmn: Setting up filters and destination ring for CBF logging
This change will set up monitor mode status and destination ring filters for enbale CBF logging and will enable destination ring to capture CBF frame. This change will get the CBF frame from the destination ring and send it to the pktlog module for post processing through WDI event. CBF is a compressed beamforming report. Change-Id: I4cc419440ba8d60446dd1f01747340a89f023171
This commit is contained in:

committad av
snandini

förälder
3200bacc98
incheckning
4427314322
@@ -466,6 +466,67 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS dp_rx_populate_cbf_hdr(struct dp_soc *soc,
|
||||
uint32_t mac_id,
|
||||
uint32_t event,
|
||||
qdf_nbuf_t mpdu,
|
||||
uint32_t msdu_timestamp)
|
||||
{
|
||||
uint32_t data_size, hdr_size, ppdu_id;
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||
uint32_t *msg_word;
|
||||
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
ppdu_id = pdev->ppdu_info.com_info.ppdu_id;
|
||||
|
||||
hdr_size = HTT_T2H_PPDU_STATS_IND_HDR_SIZE
|
||||
+ sizeof(htt_ppdu_stats_tx_mgmtctrl_payload_tlv);
|
||||
|
||||
data_size = qdf_nbuf_len(mpdu);
|
||||
|
||||
qdf_nbuf_push_head(mpdu, hdr_size);
|
||||
|
||||
msg_word = (uint32_t *)qdf_nbuf_data(mpdu);
|
||||
/*
|
||||
* Populate the PPDU Stats Indication header
|
||||
*/
|
||||
HTT_H2T_MSG_TYPE_SET(*msg_word, HTT_T2H_MSG_TYPE_PPDU_STATS_IND);
|
||||
HTT_T2H_PPDU_STATS_MAC_ID_SET(*msg_word, mac_id);
|
||||
HTT_T2H_PPDU_STATS_PDEV_ID_SET(*msg_word, pdev->pdev_id);
|
||||
HTT_T2H_PPDU_STATS_PAYLOAD_SIZE_SET(*msg_word, data_size +
|
||||
qdf_offsetof(htt_ppdu_stats_tx_mgmtctrl_payload_tlv, payload));
|
||||
msg_word++;
|
||||
HTT_T2H_PPDU_STATS_PPDU_ID_SET(*msg_word, ppdu_id);
|
||||
msg_word++;
|
||||
|
||||
*msg_word = msdu_timestamp;
|
||||
msg_word++;
|
||||
/*
|
||||
* Populate MGMT_CTRL Payload TLV first
|
||||
*/
|
||||
HTT_STATS_TLV_TAG_SET(*msg_word,
|
||||
HTT_PPDU_STATS_TX_MGMTCTRL_PAYLOAD_TLV);
|
||||
HTT_STATS_TLV_LENGTH_SET(*msg_word,
|
||||
data_size - sizeof(htt_tlv_hdr_t) +
|
||||
qdf_offsetof(
|
||||
htt_ppdu_stats_tx_mgmtctrl_payload_tlv,
|
||||
payload));
|
||||
msg_word++;
|
||||
|
||||
HTT_PPDU_STATS_TX_MGMTCTRL_TLV_FRAME_LENGTH_SET(
|
||||
*msg_word, data_size);
|
||||
msg_word++;
|
||||
|
||||
dp_wdi_event_handler(event, soc, (void *)mpdu,
|
||||
HTT_INVALID_PEER, WDI_NO_VAL, pdev->pdev_id);
|
||||
|
||||
qdf_nbuf_pull_head(mpdu, hdr_size);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef WLAN_TX_PKT_CAPTURE_ENH
|
||||
#include "dp_tx_capture.h"
|
||||
#else
|
||||
|
Referens i nytt ärende
Block a user