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
|
static inline uint16_t
|
||||||
cdp_tx_me_convert_ucast(ol_txrx_soc_handle soc, uint8_t vdev_id,
|
cdp_tx_me_convert_ucast(ol_txrx_soc_handle soc, uint8_t vdev_id,
|
||||||
qdf_nbuf_t wbuf, u_int8_t newmac[][6],
|
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) {
|
if (!soc || !soc->ops) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
|
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 0;
|
||||||
|
|
||||||
return soc->ops->me_ops->tx_me_convert_ucast
|
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
|
#endif
|
||||||
|
@@ -769,7 +769,8 @@ struct cdp_me_ops {
|
|||||||
|
|
||||||
uint16_t (*tx_me_convert_ucast)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
uint16_t (*tx_me_convert_ucast)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||||
qdf_nbuf_t wbuf, u_int8_t newmac[][6],
|
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 {
|
struct cdp_mon_ops {
|
||||||
|
@@ -1178,6 +1178,8 @@ struct cdp_rx_stats {
|
|||||||
* @ucast: total unicast packets transmitted
|
* @ucast: total unicast packets transmitted
|
||||||
* @fail_seg_alloc: Segment allocation failure
|
* @fail_seg_alloc: Segment allocation failure
|
||||||
* @clone_fail: NBUF clone 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
|
* @dropped_pkt: Total scatter gather packets
|
||||||
* @desc_na: Desc Not Available
|
* @desc_na: Desc Not Available
|
||||||
* @exc_desc_na: Exception desc Not Available
|
* @exc_desc_na: Exception desc Not Available
|
||||||
@@ -1225,6 +1227,12 @@ struct cdp_tx_ingress_stats {
|
|||||||
uint32_t clone_fail;
|
uint32_t clone_fail;
|
||||||
} mcast_en;
|
} 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 */
|
/* Packets dropped on the Tx side */
|
||||||
struct {
|
struct {
|
||||||
struct cdp_pkt_info dropped_pkt;
|
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,
|
DP_STATS_AGGR(tgtobj, srcobj,
|
||||||
tx_i.mcast_en.dropped_send_fail);
|
tx_i.mcast_en.dropped_send_fail);
|
||||||
DP_STATS_AGGR(tgtobj, srcobj, tx_i.mcast_en.ucast);
|
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.dma_error);
|
||||||
DP_STATS_AGGR(tgtobj, srcobj, tx_i.dropped.ring_full);
|
DP_STATS_AGGR(tgtobj, srcobj, tx_i.dropped.ring_full);
|
||||||
DP_STATS_AGGR(tgtobj, srcobj, tx_i.dropped.enqueue_fail);
|
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,
|
uint16_t dp_tx_me_send_convert_ucast(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||||
qdf_nbuf_t nbuf,
|
qdf_nbuf_t nbuf,
|
||||||
uint8_t newmac[][QDF_MAC_ADDR_SIZE],
|
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_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);
|
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);
|
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
|
/* dp_txrx_update_vdev_host_stats(): Update stats sent through CDP
|
||||||
* @soc: DP soc handle
|
* @soc: DP soc handle
|
||||||
* @vdev_id: id of DP vdev 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;
|
break;
|
||||||
case DP_VDEV_STATS_TX_ME:
|
case DP_VDEV_STATS_TX_ME:
|
||||||
dp_txrx_update_vdev_me_stats(vdev, buf);
|
dp_txrx_update_vdev_me_stats(vdev, buf);
|
||||||
|
dp_txrx_update_vdev_igmp_me_stats(vdev, buf);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qdf_info("Invalid stats_id %d", stats_id);
|
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);
|
pdev->stats.tx_i.mcast_en.dropped_send_fail);
|
||||||
DP_PRINT_STATS(" Unicast sent = %d",
|
DP_PRINT_STATS(" Unicast sent = %d",
|
||||||
pdev->stats.tx_i.mcast_en.ucast);
|
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("Raw:");
|
||||||
DP_PRINT_STATS(" Packets = %d",
|
DP_PRINT_STATS(" Packets = %d",
|
||||||
pdev->stats.tx_i.raw.raw_pkt.num);
|
pdev->stats.tx_i.raw.raw_pkt.num);
|
||||||
|
Reference in New Issue
Block a user