Fix missing fc wait for outbound path in vector mode.
Currently only poll mode has it.

Fixes: 358d02d20a2f ("net/cnxk: support flow control for outbound inline")
Cc: ndabilpu...@marvell.com

Signed-off-by: Nithin Dabilpuram <ndabilpu...@marvell.com>
---
 drivers/net/cnxk/cn10k_tx.h | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/net/cnxk/cn10k_tx.h b/drivers/net/cnxk/cn10k_tx.h
index 8056510..07c88a9 100644
--- a/drivers/net/cnxk/cn10k_tx.h
+++ b/drivers/net/cnxk/cn10k_tx.h
@@ -1049,9 +1049,13 @@ cn10k_nix_xmit_pkts(void *tx_queue, uint64_t *ws, struct 
rte_mbuf **tx_pkts,
 
        /* Submit CPT instructions if any */
        if (flags & NIX_TX_OFFLOAD_SECURITY_F) {
+               uint16_t sec_pkts = ((c_lnum << 1) + c_loff);
+
                /* Reduce pkts to be sent to CPT */
-               burst -= ((c_lnum << 1) + c_loff);
-               cn10k_nix_sec_fc_wait(txq, (c_lnum << 1) + c_loff);
+               burst -= sec_pkts;
+               if (flags & NIX_TX_VWQE_F)
+                       cn10k_nix_vwqe_wait_fc(txq, sec_pkts);
+               cn10k_nix_sec_fc_wait(txq, sec_pkts);
                cn10k_nix_sec_steorl(c_io_addr, c_lmt_id, c_lnum, c_loff,
                                     c_shft);
        }
@@ -1199,9 +1203,13 @@ cn10k_nix_xmit_pkts_mseg(void *tx_queue, uint64_t *ws,
 
        /* Submit CPT instructions if any */
        if (flags & NIX_TX_OFFLOAD_SECURITY_F) {
+               uint16_t sec_pkts = ((c_lnum << 1) + c_loff);
+
                /* Reduce pkts to be sent to CPT */
-               burst -= ((c_lnum << 1) + c_loff);
-               cn10k_nix_sec_fc_wait(txq, (c_lnum << 1) + c_loff);
+               burst -= sec_pkts;
+               if (flags & NIX_TX_VWQE_F)
+                       cn10k_nix_vwqe_wait_fc(txq, sec_pkts);
+               cn10k_nix_sec_fc_wait(txq, sec_pkts);
                cn10k_nix_sec_steorl(c_io_addr, c_lmt_id, c_lnum, c_loff,
                                     c_shft);
        }
@@ -2753,7 +2761,11 @@ cn10k_nix_xmit_pkts_vector(void *tx_queue, uint64_t *ws,
 
        /* Submit CPT instructions if any */
        if (flags & NIX_TX_OFFLOAD_SECURITY_F) {
-               cn10k_nix_sec_fc_wait(txq, (c_lnum << 1) + c_loff);
+               uint16_t sec_pkts = (c_lnum << 1) + c_loff;
+
+               if (flags & NIX_TX_VWQE_F)
+                       cn10k_nix_vwqe_wait_fc(txq, sec_pkts);
+               cn10k_nix_sec_fc_wait(txq, sec_pkts);
                cn10k_nix_sec_steorl(c_io_addr, c_lmt_id, c_lnum, c_loff,
                                     c_shft);
        }
-- 
2.8.4

Reply via email to