qcacmn: support msdu rx retry statistics

Add the interface to support the rx retry statistics.

Change-Id: I02bbf2e69eefbd7ef61ab2540c1aacabb4ce3aef
CRs-Fixed: 2505486
This commit is contained in:
Paul Zhang
2019-08-23 14:52:47 +08:00
committed by nshrivas
parent f47b162435
commit 1275896960
4 changed files with 40 additions and 2 deletions

View File

@@ -24,7 +24,6 @@
#ifndef _CDP_TXRX_HOST_STATS_H_ #ifndef _CDP_TXRX_HOST_STATS_H_
#define _CDP_TXRX_HOST_STATS_H_ #define _CDP_TXRX_HOST_STATS_H_
#include "cdp_txrx_handle.h" #include "cdp_txrx_handle.h"
#include "cdp_txrx_extd_struct.h"
/** /**
* cdp_host_stats_get: cdp call to get host stats * cdp_host_stats_get: cdp call to get host stats
* @soc: SOC handle * @soc: SOC handle

View File

@@ -1366,6 +1366,7 @@ static void dp_rx_msdu_stats_update(struct dp_soc *soc,
DP_STATS_INC_PKT(peer, rx.rcvd_reo[ring_id], 1, msdu_len); DP_STATS_INC_PKT(peer, rx.rcvd_reo[ring_id], 1, msdu_len);
DP_STATS_INCC(peer, rx.non_amsdu_cnt, 1, is_not_amsdu); DP_STATS_INCC(peer, rx.non_amsdu_cnt, 1, is_not_amsdu);
DP_STATS_INCC(peer, rx.amsdu_cnt, 1, !is_not_amsdu); DP_STATS_INCC(peer, rx.amsdu_cnt, 1, !is_not_amsdu);
DP_STATS_INCC(peer, rx.rx_retries, 1, qdf_nbuf_is_rx_retry_flag(nbuf));
tid_stats->msdu_cnt++; tid_stats->msdu_cnt++;
if (qdf_unlikely(qdf_nbuf_is_da_mcbc(nbuf) && if (qdf_unlikely(qdf_nbuf_is_da_mcbc(nbuf) &&
@@ -1798,6 +1799,9 @@ more_data:
/* Get MSDU DESC info */ /* Get MSDU DESC info */
hal_rx_msdu_desc_info_get(ring_desc, &msdu_desc_info); hal_rx_msdu_desc_info_get(ring_desc, &msdu_desc_info);
if (mpdu_desc_info.mpdu_flags & HAL_MPDU_F_RETRY_BIT)
qdf_nbuf_set_rx_retry_flag(rx_desc->nbuf, 1);
if (qdf_unlikely(mpdu_desc_info.mpdu_flags & if (qdf_unlikely(mpdu_desc_info.mpdu_flags &
HAL_MPDU_F_RAW_AMPDU)) { HAL_MPDU_F_RAW_AMPDU)) {
/* previous msdu has end bit set, so current one is /* previous msdu has end bit set, so current one is

View File

@@ -1271,6 +1271,29 @@ static inline int qdf_nbuf_is_sa_valid(qdf_nbuf_t buf)
return __qdf_nbuf_is_sa_valid(buf); return __qdf_nbuf_is_sa_valid(buf);
} }
/**
* qdf_nbuf_set_rx_retry_flag() - set rx retry flag bit
* @buf: Network buffer
* @val: 0/1
*
* Return: void
*/
static inline void qdf_nbuf_set_rx_retry_flag(qdf_nbuf_t buf, uint8_t val)
{
__qdf_nbuf_set_rx_retry_flag(buf, val);
}
/**
* qdf_nbuf_is_rx_retry_flag() - get rx retry flag bit
* @buf: Network buffer
*
* Return: integer value - 0/1
*/
static inline int qdf_nbuf_is_rx_retry_flag(qdf_nbuf_t buf)
{
return __qdf_nbuf_is_rx_retry_flag(buf);
}
/** /**
* qdf_nbuf_set_raw_frame() - set raw_frame bit * qdf_nbuf_set_raw_frame() - set raw_frame bit
* @buf: Network buffer * @buf: Network buffer

View File

@@ -150,6 +150,7 @@ typedef union {
* @rx.is_raw_frame: RAW frame * @rx.is_raw_frame: RAW frame
* @rx.fcs_err: FCS error * @rx.fcs_err: FCS error
* @rx.tid_val: tid value * @rx.tid_val: tid value
* @rx.flag_retry: flag to indicate MSDU is retried
* @rx.reserved: reserved * @rx.reserved: reserved
* *
* @tx.dev.priv_cb_w.fctx: ctx to handle special pkts defined by ftype * @tx.dev.priv_cb_w.fctx: ctx to handle special pkts defined by ftype
@@ -265,7 +266,8 @@ struct qdf_nbuf_cb {
uint8_t is_raw_frame:1, uint8_t is_raw_frame:1,
fcs_err:1, fcs_err:1,
tid_val:4, tid_val:4,
reserved:2; flag_retry:1,
reserved:1;
} rx; } rx;
/* Note: MAX: 40 bytes */ /* Note: MAX: 40 bytes */
@@ -404,6 +406,10 @@ QDF_COMPILE_TIME_ASSERT(qdf_nbuf_cb_size,
(((struct qdf_nbuf_cb *) \ (((struct qdf_nbuf_cb *) \
((skb)->cb))->u.rx.flag_sa_valid) ((skb)->cb))->u.rx.flag_sa_valid)
#define QDF_NBUF_CB_RX_RETRY_FLAG(skb) \
(((struct qdf_nbuf_cb *) \
((skb)->cb))->u.rx.flag_retry)
#define QDF_NBUF_CB_RX_RAW_FRAME(skb) \ #define QDF_NBUF_CB_RX_RAW_FRAME(skb) \
(((struct qdf_nbuf_cb *) \ (((struct qdf_nbuf_cb *) \
((skb)->cb))->u.rx.is_raw_frame) ((skb)->cb))->u.rx.is_raw_frame)
@@ -643,6 +649,12 @@ typedef void (*qdf_nbuf_free_t)(__qdf_nbuf_t);
#define __qdf_nbuf_is_sa_valid(skb) \ #define __qdf_nbuf_is_sa_valid(skb) \
(QDF_NBUF_CB_RX_SA_VALID((skb))) (QDF_NBUF_CB_RX_SA_VALID((skb)))
#define __qdf_nbuf_set_rx_retry_flag(skb, val) \
((QDF_NBUF_CB_RX_RETRY_FLAG((skb))) = val)
#define __qdf_nbuf_is_rx_retry_flag(skb) \
(QDF_NBUF_CB_RX_RETRY_FLAG((skb)))
#define __qdf_nbuf_set_raw_frame(skb, val) \ #define __qdf_nbuf_set_raw_frame(skb, val) \
((QDF_NBUF_CB_RX_RAW_FRAME((skb))) = val) ((QDF_NBUF_CB_RX_RAW_FRAME((skb))) = val)