qcacmn: stats VoW IGMP improvements
Add stats VoW IGMP improvements feature Change-Id: I86b803e67f2cc3cfc01750f261f06590ff2b97c2
This commit is contained in:

committed by
snandini

parent
7db23eeca2
commit
f0d2f53e32
@@ -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
|
||||
|
@@ -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 {
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user