From e3a73b0b5d99f9e32b7e50b260d2c1c850afe229 Mon Sep 17 00:00:00 2001 From: Nithin Dabilpuram Date: Wed, 23 Feb 2022 01:05:09 +0530 Subject: [PATCH] net/cnxk: enable flow control by default on device configure Enable flow control by default on device configuration instead of basing it on Kernel behaviour. Signed-off-by: Nithin Dabilpuram Signed-off-by: Harman Kalra Acked-by: Jerin Jacob --- drivers/net/cnxk/cnxk_ethdev.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c index 847307e2db..df4179c83d 100644 --- a/drivers/net/cnxk/cnxk_ethdev.c +++ b/drivers/net/cnxk/cnxk_ethdev.c @@ -306,24 +306,22 @@ static int nix_init_flow_ctrl_config(struct rte_eth_dev *eth_dev) { struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); + enum roc_nix_fc_mode fc_mode = ROC_NIX_FC_FULL; struct cnxk_fc_cfg *fc = &dev->fc_cfg; - struct rte_eth_fc_conf fc_conf = {0}; int rc; - /* Both Rx & Tx flow ctrl get enabled(RTE_ETH_FC_FULL) in HW - * by AF driver, update those info in PMD structure. - */ - rc = cnxk_nix_flow_ctrl_get(eth_dev, &fc_conf); - if (rc) - goto exit; + /* To avoid Link credit deadlock on Ax, disable Tx FC if it's enabled */ + if (roc_model_is_cn96_ax() && + dev->npc.switch_header_type != ROC_PRIV_FLAGS_HIGIG) + fc_mode = ROC_NIX_FC_TX; - fc->mode = fc_conf.mode; - fc->rx_pause = (fc_conf.mode == RTE_ETH_FC_FULL) || - (fc_conf.mode == RTE_ETH_FC_RX_PAUSE); - fc->tx_pause = (fc_conf.mode == RTE_ETH_FC_FULL) || - (fc_conf.mode == RTE_ETH_FC_TX_PAUSE); + /* By default enable flow control */ + rc = roc_nix_fc_mode_set(&dev->nix, fc_mode); + if (rc) + return rc; -exit: + fc->mode = (fc_mode == ROC_NIX_FC_FULL) ? RTE_ETH_FC_FULL : + RTE_ETH_FC_TX_PAUSE; return rc; } -- 2.20.1