From: Satha Rao <skotesh...@marvell.com>

Register a callback mechanism to get SQ error interrupts, add
call ethdev event RTE_ETH_EVENT_INTR_RESET.

Signed-off-by: Satha Rao <skotesh...@marvell.com>
---
 drivers/net/cnxk/cnxk_ethdev.c | 13 +++++++++++++
 drivers/net/cnxk/cnxk_ethdev.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c
index bf1585fe67..104aad7b51 100644
--- a/drivers/net/cnxk/cnxk_ethdev.c
+++ b/drivers/net/cnxk/cnxk_ethdev.c
@@ -1750,6 +1750,16 @@ struct eth_dev_ops cnxk_eth_dev_ops = {
        .cman_config_get = cnxk_nix_cman_config_get,
 };
 
+void
+cnxk_eth_dev_q_err_cb(struct roc_nix *nix, void *data)
+{
+       struct cnxk_eth_dev *dev = (struct cnxk_eth_dev *)nix;
+       struct rte_eth_dev *eth_dev = dev->eth_dev;
+
+       /* Set the flag and execute application callbacks */
+       rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_RESET, data);
+}
+
 static int
 cnxk_eth_dev_init(struct rte_eth_dev *eth_dev)
 {
@@ -1804,6 +1814,9 @@ cnxk_eth_dev_init(struct rte_eth_dev *eth_dev)
        roc_nix_mac_link_info_get_cb_register(nix,
                                              cnxk_eth_dev_link_status_get_cb);
 
+       /* Register up msg callbacks */
+       roc_nix_q_err_cb_register(nix, cnxk_eth_dev_q_err_cb);
+
        /* Register callback for inline meta pool create */
        roc_nix_inl_meta_pool_cb_register(cnxk_nix_inl_meta_pool_cb);
 
diff --git a/drivers/net/cnxk/cnxk_ethdev.h b/drivers/net/cnxk/cnxk_ethdev.h
index 651ef45ea8..a86e9dba80 100644
--- a/drivers/net/cnxk/cnxk_ethdev.h
+++ b/drivers/net/cnxk/cnxk_ethdev.h
@@ -599,6 +599,7 @@ void cnxk_eth_dev_link_status_cb(struct roc_nix *nix,
                                 struct roc_nix_link_info *link);
 void cnxk_eth_dev_link_status_get_cb(struct roc_nix *nix,
                                     struct roc_nix_link_info *link);
+void cnxk_eth_dev_q_err_cb(struct roc_nix *nix, void *data);
 int cnxk_nix_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete);
 int cnxk_nix_queue_stats_mapping(struct rte_eth_dev *dev, uint16_t queue_id,
                                 uint8_t stat_idx, uint8_t is_rx);
-- 
2.25.1

Reply via email to