From e21aca08f493da6d97af9c6229a6e50e6ffdebb4 Mon Sep 17 00:00:00 2001 From: Somnath Kotur Date: Tue, 4 Jan 2022 14:08:18 +0530 Subject: [PATCH] net/bnxt: refactor datapath stop for reuse Refactor bnxt_stop_rxtx() for reuse. By accepting rte_eth_dev as input, bnxt_stop_rxtx() can be used in multiple scenarios such as representor devices. Signed-off-by: Somnath Kotur Reviewed-by: Ajit Khaparde Reviewed-by: Kalesh AP --- drivers/net/bnxt/bnxt_cpr.c | 16 ++++++++-------- drivers/net/bnxt/bnxt_cpr.h | 2 +- drivers/net/bnxt/bnxt_ethdev.c | 5 ++--- drivers/net/bnxt/bnxt_reps.c | 3 +-- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index a43b22a8f8..593eebfb9a 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -149,7 +149,7 @@ void bnxt_handle_async_event(struct bnxt *bp, * Avoid any rx/tx packet processing during firmware reset * operation. */ - bnxt_stop_rxtx(bp); + bnxt_stop_rxtx(bp->eth_dev); /* Ignore reset notify async events when stopping the port */ if (!bp->eth_dev->data->dev_started) { @@ -383,15 +383,15 @@ bool bnxt_is_recovery_enabled(struct bnxt *bp) return false; } -void bnxt_stop_rxtx(struct bnxt *bp) +void bnxt_stop_rxtx(struct rte_eth_dev *eth_dev) { - bp->eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; - bp->eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; + eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; + eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; - rte_eth_fp_ops[bp->eth_dev->data->port_id].rx_pkt_burst = - bp->eth_dev->rx_pkt_burst; - rte_eth_fp_ops[bp->eth_dev->data->port_id].tx_pkt_burst = - bp->eth_dev->tx_pkt_burst; + rte_eth_fp_ops[eth_dev->data->port_id].rx_pkt_burst = + eth_dev->rx_pkt_burst; + rte_eth_fp_ops[eth_dev->data->port_id].tx_pkt_burst = + eth_dev->tx_pkt_burst; rte_mb(); /* Allow time for threads to exit the real burst functions. */ diff --git a/drivers/net/bnxt/bnxt_cpr.h b/drivers/net/bnxt/bnxt_cpr.h index 73468ed9e4..52db382c2f 100644 --- a/drivers/net/bnxt/bnxt_cpr.h +++ b/drivers/net/bnxt/bnxt_cpr.h @@ -117,7 +117,7 @@ void bnxt_wait_for_device_shutdown(struct bnxt *bp); bool bnxt_is_recovery_enabled(struct bnxt *bp); bool bnxt_is_primary_func(struct bnxt *bp); -void bnxt_stop_rxtx(struct bnxt *bp); +void bnxt_stop_rxtx(struct rte_eth_dev *eth_dev); /** * Check validity of a completion ring entry. If the entry is valid, include a diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 00acdb7be6..cf3bd77035 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1471,8 +1471,7 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev) eth_dev->data->dev_started = 0; /* Prevent crashes when queues are still in use */ - eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; - eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; + bnxt_stop_rxtx(eth_dev); bnxt_disable_int(bp); @@ -4557,7 +4556,7 @@ reset: bp->flags |= BNXT_FLAG_FATAL_ERROR; bp->flags |= BNXT_FLAG_FW_RESET; - bnxt_stop_rxtx(bp); + bnxt_stop_rxtx(bp->eth_dev); PMD_DRV_LOG(ERR, "Detected FW dead condition\n"); diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 22b76b72b9..f24f5ef75f 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -505,8 +505,7 @@ int bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev) struct bnxt_representor *vfr_bp = eth_dev->data->dev_private; /* Avoid crashes as we are about to free queues */ - eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; - eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; + bnxt_stop_rxtx(eth_dev); BNXT_TF_DBG(DEBUG, "BNXT Port:%d VFR stop\n", eth_dev->data->port_id); -- 2.39.5