qcacmn: Define cdp interface struct and API to fetch dp soc stats
Define a new cdp interface structure and API for soc stats for use by upper layers to fetch dp soc stats. Change-Id: I314e952546551003da2ca7f69b2e1aa23c126e66
This commit is contained in:

committed by
Madan Koyyalamudi

parent
238ae4b7f7
commit
0dcfff9b90
@@ -489,6 +489,29 @@ cdp_txrx_get_peer_stats_param(ol_txrx_soc_handle soc, uint8_t vdev_id,
|
|||||||
buf);
|
buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Call to get soc stats
|
||||||
|
*
|
||||||
|
* @param soc - soc handle
|
||||||
|
* @soc_stats - buffer for cdp soc stats
|
||||||
|
* @return - QDF_STATUS
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
cdp_host_get_soc_stats(ol_txrx_soc_handle soc, struct cdp_soc_stats *soc_stats)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops) {
|
||||||
|
dp_cdp_debug("Invalid Instance");
|
||||||
|
QDF_BUG(0);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!soc->ops->host_stats_ops ||
|
||||||
|
!soc->ops->host_stats_ops->txrx_get_soc_stats)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
return soc->ops->host_stats_ops->txrx_get_soc_stats(soc, soc_stats);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Call to get peer stats
|
* @brief Call to get peer stats
|
||||||
*
|
*
|
||||||
|
@@ -934,6 +934,9 @@ struct cdp_host_stats_ops {
|
|||||||
(*txrx_get_peer_stats)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
(*txrx_get_peer_stats)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||||
uint8_t *peer_mac,
|
uint8_t *peer_mac,
|
||||||
struct cdp_peer_stats *peer_stats);
|
struct cdp_peer_stats *peer_stats);
|
||||||
|
QDF_STATUS
|
||||||
|
(*txrx_get_soc_stats)(struct cdp_soc_t *soc,
|
||||||
|
struct cdp_soc_stats *soc_stats);
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
(*txrx_reset_peer_ald_stats)(struct cdp_soc_t *soc,
|
(*txrx_reset_peer_ald_stats)(struct cdp_soc_t *soc,
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
|
@@ -1900,6 +1900,36 @@ struct cdp_cfr_rcc_stats {
|
|||||||
struct cdp_cfr_rcc_stats {
|
struct cdp_cfr_rcc_stats {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* struct cdp_soc_stats - soc stats
|
||||||
|
* @tx.egress: Total packets transmitted
|
||||||
|
* @rx.ingress: Total rx packets count
|
||||||
|
* @rx.err_ring_pkts: Total Packets in Rx Error ring
|
||||||
|
* @rx.rx_frags: No of Fragments
|
||||||
|
* @rx.reo_reinject: No of reinjected packets
|
||||||
|
* @rx.bar_frame: Number of bar frames received
|
||||||
|
* @rx.err.rejected: RX msdu rejected count on delivery to vdev stack_fn
|
||||||
|
* @rx.err.raw_frm_drop: RX raw frame dropped count
|
||||||
|
*/
|
||||||
|
struct cdp_soc_stats {
|
||||||
|
struct {
|
||||||
|
struct cdp_pkt_info egress;
|
||||||
|
} tx;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
struct cdp_pkt_info ingress;
|
||||||
|
uint32_t err_ring_pkts;
|
||||||
|
uint32_t rx_frags;
|
||||||
|
uint32_t reo_reinject;
|
||||||
|
uint32_t bar_frame;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
uint32_t rx_rejected;
|
||||||
|
uint32_t rx_raw_frm_drop;
|
||||||
|
} err;
|
||||||
|
} rx;
|
||||||
|
};
|
||||||
|
|
||||||
/* struct cdp_pdev_stats - pdev stats
|
/* struct cdp_pdev_stats - pdev stats
|
||||||
* @msdu_not_done: packets dropped because msdu done bit not set
|
* @msdu_not_done: packets dropped because msdu done bit not set
|
||||||
* @mec:Multicast Echo check
|
* @mec:Multicast Echo check
|
||||||
|
@@ -10619,6 +10619,30 @@ static QDF_STATUS dp_txrx_update_vdev_host_stats(struct cdp_soc_t *soc_hdl,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* dp_txrx_get_soc_stats - will return cdp_soc_stats
|
||||||
|
* @soc_hdl: soc handle
|
||||||
|
* @soc_stats: buffer to hold the values
|
||||||
|
*
|
||||||
|
* return: status success/failure
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
dp_txrx_get_soc_stats(struct cdp_soc_t *soc_hdl,
|
||||||
|
struct cdp_soc_stats *soc_stats)
|
||||||
|
{
|
||||||
|
struct dp_soc *soc = (struct dp_soc *)soc_hdl;
|
||||||
|
|
||||||
|
soc_stats->tx.egress = soc->stats.tx.egress;
|
||||||
|
soc_stats->rx.ingress = soc->stats.rx.ingress;
|
||||||
|
soc_stats->rx.err_ring_pkts = soc->stats.rx.err_ring_pkts;
|
||||||
|
soc_stats->rx.rx_frags = soc->stats.rx.rx_frags;
|
||||||
|
soc_stats->rx.reo_reinject = soc->stats.rx.reo_reinject;
|
||||||
|
soc_stats->rx.bar_frame = soc->stats.rx.bar_frame;
|
||||||
|
soc_stats->rx.err.rx_rejected = soc->stats.rx.err.rejected;
|
||||||
|
soc_stats->rx.err.rx_raw_frm_drop = soc->stats.rx.err.raw_frm_drop;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/* dp_txrx_get_peer_stats - will return cdp_peer_stats
|
/* dp_txrx_get_peer_stats - will return cdp_peer_stats
|
||||||
* @soc: soc handle
|
* @soc: soc handle
|
||||||
* @vdev_id: id of vdev handle
|
* @vdev_id: id of vdev handle
|
||||||
@@ -12458,6 +12482,7 @@ static struct cdp_host_stats_ops dp_ops_host_stats = {
|
|||||||
.txrx_stats_publish = dp_txrx_stats_publish,
|
.txrx_stats_publish = dp_txrx_stats_publish,
|
||||||
.txrx_get_vdev_stats = dp_txrx_get_vdev_stats,
|
.txrx_get_vdev_stats = dp_txrx_get_vdev_stats,
|
||||||
.txrx_get_peer_stats = dp_txrx_get_peer_stats,
|
.txrx_get_peer_stats = dp_txrx_get_peer_stats,
|
||||||
|
.txrx_get_soc_stats = dp_txrx_get_soc_stats,
|
||||||
.txrx_get_peer_stats_param = dp_txrx_get_peer_stats_param,
|
.txrx_get_peer_stats_param = dp_txrx_get_peer_stats_param,
|
||||||
.txrx_reset_peer_stats = dp_txrx_reset_peer_stats,
|
.txrx_reset_peer_stats = dp_txrx_reset_peer_stats,
|
||||||
.txrx_get_pdev_stats = dp_txrx_get_pdev_stats,
|
.txrx_get_pdev_stats = dp_txrx_get_pdev_stats,
|
||||||
|
Reference in New Issue
Block a user