From: Sunil Kumar Kori <sk...@marvell.com>

Similar to NIX stats reset API, adding API to reset
CGX stats.

When user requests to reset the stats then it clears
if nix_lf is PF otherwise silently discard the request.

Signed-off-by: Sunil Kumar Kori <sk...@marvell.com>
---
 drivers/common/cnxk/roc_nix.h     |  1 +
 drivers/common/cnxk/roc_nix_mac.c | 29 +++++++++++++++++++++++++++++
 drivers/common/cnxk/version.map   |  1 +
 3 files changed, 31 insertions(+)

diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h
index 63bcd5b25e..25cf261348 100644
--- a/drivers/common/cnxk/roc_nix.h
+++ b/drivers/common/cnxk/roc_nix.h
@@ -849,6 +849,7 @@ int __roc_api roc_nix_mac_link_info_get_cb_register(
 void __roc_api roc_nix_mac_link_info_get_cb_unregister(struct roc_nix 
*roc_nix);
 int __roc_api roc_nix_q_err_cb_register(struct roc_nix *roc_nix, q_err_get_t 
sq_err_handle);
 void __roc_api roc_nix_q_err_cb_unregister(struct roc_nix *roc_nix);
+int __roc_api roc_nix_mac_stats_reset(struct roc_nix *roc_nix);
 
 /* Ops */
 int __roc_api roc_nix_switch_hdr_set(struct roc_nix *roc_nix,
diff --git a/drivers/common/cnxk/roc_nix_mac.c 
b/drivers/common/cnxk/roc_nix_mac.c
index 2d1c29dd66..f79aaec4a5 100644
--- a/drivers/common/cnxk/roc_nix_mac.c
+++ b/drivers/common/cnxk/roc_nix_mac.c
@@ -354,6 +354,35 @@ roc_nix_mac_max_rx_len_set(struct roc_nix *roc_nix, 
uint16_t maxlen)
        return rc;
 }
 
+int
+roc_nix_mac_stats_reset(struct roc_nix *roc_nix)
+{
+       struct nix *nix = roc_nix_to_nix_priv(roc_nix);
+       struct dev *dev = &nix->dev;
+       struct mbox *mbox = mbox_get(dev->mbox);
+       struct msg_req *req;
+       int rc = -ENOSPC;
+
+       if (roc_model_is_cn10k()) {
+               rc = 0;
+               goto exit;
+       }
+
+       if (roc_nix_is_vf_or_sdp(roc_nix)) {
+               rc = 0;
+               goto exit;
+       }
+
+       req = mbox_alloc_msg_cgx_stats_rst(mbox);
+       if (req == NULL)
+               goto exit;
+
+       rc = mbox_process(mbox);
+exit:
+       mbox_put(mbox);
+       return rc;
+}
+
 int
 roc_nix_mac_link_cb_register(struct roc_nix *roc_nix, link_status_t 
link_update)
 {
diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
index e8d32b331e..e37c1c7b7d 100644
--- a/drivers/common/cnxk/version.map
+++ b/drivers/common/cnxk/version.map
@@ -308,6 +308,7 @@ INTERNAL {
        roc_nix_mac_mtu_set;
        roc_nix_mac_promisc_mode_enable;
        roc_nix_mac_rxtx_start_stop;
+       roc_nix_mac_stats_reset;
        roc_nix_max_pkt_len;
        roc_nix_mcast_list_free;
        roc_nix_mcast_list_setup;
-- 
2.25.1

Reply via email to