qcacld-3.0: Log rx packet in packetlog as per rx ind message

Log rx packet in packetlog as per HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND
message from firmware.

CRs-Fixed: 970647
Change-Id: I5773b67a9269063531d038d46ac404c978818dcc
This commit is contained in:
Nirav Shah
2016-08-01 14:39:23 +05:30
committed by qcabuildsw
parent 9808c1d8ef
commit d59b3b253e
3 changed files with 42 additions and 4 deletions

View File

@@ -1937,6 +1937,14 @@ void htt_rx_mon_note_capture_channel(htt_pdev_handle pdev, int mon_ch)
extern void extern void
dump_pkt(qdf_nbuf_t nbuf, uint32_t nbuf_paddr, int len); dump_pkt(qdf_nbuf_t nbuf, uint32_t nbuf_paddr, int len);
uint32_t htt_rx_amsdu_rx_in_order_get_pktlog(qdf_nbuf_t rx_ind_msg)
{
uint32_t *msg_word;
msg_word = (uint32_t *) qdf_nbuf_data(rx_ind_msg);
return HTT_RX_IN_ORD_PADDR_IND_PKTLOG_GET(*msg_word);
}
/* Return values: 1 - success, 0 - failure */ /* Return values: 1 - success, 0 - failure */
int int
htt_rx_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev, htt_rx_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev,

View File

@@ -862,4 +862,7 @@ htt_rx_offload_paddr_msdu_pop_ll(htt_pdev_handle pdev,
int *tid, int *tid,
uint8_t *fw_desc, uint8_t *fw_desc,
qdf_nbuf_t *head_buf, qdf_nbuf_t *tail_buf); qdf_nbuf_t *head_buf, qdf_nbuf_t *tail_buf);
uint32_t htt_rx_amsdu_rx_in_order_get_pktlog(qdf_nbuf_t rx_ind_msg);
#endif /* _OL_HTT_RX_API__H_ */ #endif /* _OL_HTT_RX_API__H_ */

View File

@@ -69,11 +69,30 @@ void ol_rx_data_process(struct ol_txrx_peer_t *peer,
* @pdev: pdev handle * @pdev: pdev handle
* @peer: peer handle * @peer: peer handle
* @msdu: skb list * @msdu: skb list
* @pktlog_bit: packetlog bit from firmware
* *
* Return: none * Return: none
*/ */
#ifdef HELIUMPLUS
void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev, void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
struct ol_txrx_peer_t *peer, qdf_nbuf_t msdu) struct ol_txrx_peer_t *peer, qdf_nbuf_t msdu, uint8_t pktlog_bit)
{
struct ol_rx_remote_data data;
if (!pktlog_bit)
return;
data.msdu = msdu;
if (peer)
data.mac_id = peer->vdev->mac_id;
else
data.mac_id = 0;
wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, &data);
}
#else
void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
struct ol_txrx_peer_t *peer, qdf_nbuf_t msdu, uint8_t pktlog_bit)
{ {
struct ol_rx_remote_data data; struct ol_rx_remote_data data;
@@ -85,6 +104,7 @@ void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, &data); wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, &data);
} }
#endif
#ifdef HTT_RX_RESTORE #ifdef HTT_RX_RESTORE
@@ -529,7 +549,7 @@ ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
/* Pktlog */ /* Pktlog */
#ifdef WDI_EVENT_ENABLE #ifdef WDI_EVENT_ENABLE
ol_rx_send_pktlog_event(pdev, peer, head_msdu); ol_rx_send_pktlog_event(pdev, peer, head_msdu, 1);
#endif #endif
if (msdu_chaining) { if (msdu_chaining) {
@@ -607,7 +627,7 @@ ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
if (status != htt_rx_status_ctrl_mgmt_null) { if (status != htt_rx_status_ctrl_mgmt_null) {
/* Pktlog */ /* Pktlog */
ol_rx_send_pktlog_event(pdev, ol_rx_send_pktlog_event(pdev,
peer, head_msdu); peer, head_msdu, 1);
} }
#endif #endif
if (status == htt_rx_status_err_inv_peer) { if (status == htt_rx_status_err_inv_peer) {
@@ -1309,6 +1329,9 @@ ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev,
htt_pdev_handle htt_pdev = NULL; htt_pdev_handle htt_pdev = NULL;
int status; int status;
qdf_nbuf_t head_msdu, tail_msdu = NULL; qdf_nbuf_t head_msdu, tail_msdu = NULL;
#ifdef WDI_EVENT_ENABLE
uint8_t pktlog_bit;
#endif
if (pdev) { if (pdev) {
if (qdf_unlikely(QDF_GLOBAL_MONITOR_MODE == cds_get_conparam())) if (qdf_unlikely(QDF_GLOBAL_MONITOR_MODE == cds_get_conparam()))
@@ -1328,6 +1351,10 @@ ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev,
__func__, __LINE__, rx_ind_msg, peer_id, tid, is_offload); __func__, __LINE__, rx_ind_msg, peer_id, tid, is_offload);
#endif #endif
#ifdef WDI_EVENT_ENABLE
pktlog_bit = (htt_rx_amsdu_rx_in_order_get_pktlog(rx_ind_msg) == 0x01);
#endif
/* /*
* Get a linked list of the MSDUs in the rx in order indication. * Get a linked list of the MSDUs in the rx in order indication.
* This also attaches each rx MSDU descriptor to the * This also attaches each rx MSDU descriptor to the
@@ -1351,7 +1378,7 @@ ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev,
/* Pktlog */ /* Pktlog */
#ifdef WDI_EVENT_ENABLE #ifdef WDI_EVENT_ENABLE
ol_rx_send_pktlog_event(pdev, peer, head_msdu); ol_rx_send_pktlog_event(pdev, peer, head_msdu, pktlog_bit);
#endif #endif
/* if this is an offload indication, peer id is carried in the /* if this is an offload indication, peer id is carried in the