qcacmn: stats VoW IGMP improvements

Add stats VoW IGMP improvements feature

Change-Id: I86b803e67f2cc3cfc01750f261f06590ff2b97c2
This commit is contained in:
Pavankumar Nandeshwar
2020-08-24 03:34:40 +05:30
committed by snandini
parent 7db23eeca2
commit f0d2f53e32
6 changed files with 46 additions and 4 deletions

View File

@@ -65,7 +65,7 @@ cdp_tx_me_free_descriptor(ol_txrx_soc_handle soc, uint8_t pdev_id)
static inline uint16_t
cdp_tx_me_convert_ucast(ol_txrx_soc_handle soc, uint8_t vdev_id,
qdf_nbuf_t wbuf, u_int8_t newmac[][6],
uint8_t newmaccnt, uint8_t tid)
uint8_t newmaccnt, uint8_t tid, bool is_igmp)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -79,7 +79,7 @@ cdp_tx_me_convert_ucast(ol_txrx_soc_handle soc, uint8_t vdev_id,
return 0;
return soc->ops->me_ops->tx_me_convert_ucast
(soc, vdev_id, wbuf, newmac, newmaccnt, tid);
(soc, vdev_id, wbuf, newmac, newmaccnt, tid, is_igmp);
}
#endif

View File

@@ -769,7 +769,8 @@ struct cdp_me_ops {
uint16_t (*tx_me_convert_ucast)(struct cdp_soc_t *soc, uint8_t vdev_id,
qdf_nbuf_t wbuf, u_int8_t newmac[][6],
uint8_t newmaccnt, uint8_t tid);
uint8_t newmaccnt, uint8_t tid,
bool is_igmp);
};
struct cdp_mon_ops {

View File

@@ -1178,6 +1178,8 @@ struct cdp_rx_stats {
* @ucast: total unicast packets transmitted
* @fail_seg_alloc: Segment allocation failure
* @clone_fail: NBUF clone failure
* @igmp_rcvd: igmp pkts received for conversion to ucast pkts
* @igmp_ucast_converted: unicast pkts sent as part of VoW IGMP improvements
* @dropped_pkt: Total scatter gather packets
* @desc_na: Desc Not Available
* @exc_desc_na: Exception desc Not Available
@@ -1225,6 +1227,12 @@ struct cdp_tx_ingress_stats {
uint32_t clone_fail;
} mcast_en;
/* IGMP Multicast Enhancement packets info */
struct {
uint32_t igmp_rcvd;
uint32_t igmp_ucast_converted;
} igmp_mcast_en;
/* Packets dropped on the Tx side */
struct {
struct cdp_pkt_info dropped_pkt;

View File

@@ -683,6 +683,8 @@ static inline void dp_update_pdev_ingress_stats(struct dp_pdev *tgtobj,
DP_STATS_AGGR(tgtobj, srcobj,
tx_i.mcast_en.dropped_send_fail);
DP_STATS_AGGR(tgtobj, srcobj, tx_i.mcast_en.ucast);
DP_STATS_AGGR(tgtobj, srcobj, tx_i.igmp_mcast_en.igmp_rcvd);
DP_STATS_AGGR(tgtobj, srcobj, tx_i.igmp_mcast_en.igmp_ucast_converted);
DP_STATS_AGGR(tgtobj, srcobj, tx_i.dropped.dma_error);
DP_STATS_AGGR(tgtobj, srcobj, tx_i.dropped.ring_full);
DP_STATS_AGGR(tgtobj, srcobj, tx_i.dropped.enqueue_fail);
@@ -1194,7 +1196,8 @@ void dp_rx_bar_stats_cb(struct dp_soc *soc, void *cb_ctxt,
uint16_t dp_tx_me_send_convert_ucast(struct cdp_soc_t *soc, uint8_t vdev_id,
qdf_nbuf_t nbuf,
uint8_t newmac[][QDF_MAC_ADDR_SIZE],
uint8_t new_mac_cnt, uint8_t tid);
uint8_t new_mac_cnt, uint8_t tid,
bool is_igmp);
void dp_tx_me_alloc_descriptor(struct cdp_soc_t *soc, uint8_t pdev_id);
void dp_tx_me_free_descriptor(struct cdp_soc_t *soc, uint8_t pdev_id);

View File

@@ -8820,6 +8820,30 @@ static void dp_txrx_update_vdev_me_stats(struct dp_vdev *vdev,
host_stats->mcast_en.clone_fail);
}
/* dp_txrx_update_vdev_igmp_me_stats(): Update vdev IGMP ME stats sent from CDP
* @vdev: DP vdev handle
* @buf: buffer containing specific stats structure
*
* Returns: void
*/
static void dp_txrx_update_vdev_igmp_me_stats(struct dp_vdev *vdev,
void *buf)
{
struct cdp_tx_ingress_stats *host_stats = NULL;
if (!buf) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"Invalid host stats buf");
return;
}
host_stats = (struct cdp_tx_ingress_stats *)buf;
DP_STATS_INC(vdev, tx_i.igmp_mcast_en.igmp_rcvd,
host_stats->igmp_mcast_en.igmp_rcvd);
DP_STATS_INC(vdev, tx_i.igmp_mcast_en.igmp_ucast_converted,
host_stats->igmp_mcast_en.igmp_ucast_converted);
}
/* dp_txrx_update_vdev_host_stats(): Update stats sent through CDP
* @soc: DP soc handle
* @vdev_id: id of DP vdev handle
@@ -8848,6 +8872,7 @@ static QDF_STATUS dp_txrx_update_vdev_host_stats(struct cdp_soc_t *soc_hdl,
break;
case DP_VDEV_STATS_TX_ME:
dp_txrx_update_vdev_me_stats(vdev, buf);
dp_txrx_update_vdev_igmp_me_stats(vdev, buf);
break;
default:
qdf_info("Invalid stats_id %d", stats_id);

View File

@@ -6182,6 +6182,11 @@ dp_print_pdev_tx_stats(struct dp_pdev *pdev)
pdev->stats.tx_i.mcast_en.dropped_send_fail);
DP_PRINT_STATS(" Unicast sent = %d",
pdev->stats.tx_i.mcast_en.ucast);
DP_PRINT_STATS("IGMP Mcast Enhancement:");
DP_PRINT_STATS(" IGMP packets received = %d",
pdev->stats.tx_i.igmp_mcast_en.igmp_rcvd);
DP_PRINT_STATS(" Converted to uncast = %d",
pdev->stats.tx_i.igmp_mcast_en.igmp_ucast_converted);
DP_PRINT_STATS("Raw:");
DP_PRINT_STATS(" Packets = %d",
pdev->stats.tx_i.raw.raw_pkt.num);