net/i40e: fix Tx queue setup after stop
authorShaopeng He <shaopeng.he@intel.com>
Tue, 10 Jul 2018 10:37:27 +0000 (06:37 -0400)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 23 Jul 2018 21:55:26 +0000 (23:55 +0200)
Currently, i40e_dev_tx_queue_setup_runtime checks simple tx and treats
mbuf fast free offloading as No-simple, which is classified as simple tx
in i40e_set_tx_function_flag. This inconsistent behavior causes tx queue
setup fail after queue was stopped. This patch fixes this bug.

Fixes: 399421100e08 ("net/i40e: fix missing mbuf fast free offload")
Cc: stable@dpdk.org
Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
drivers/net/i40e/i40e_rxtx.c

index 3be87fe..65518ad 100644 (file)
@@ -2096,7 +2096,7 @@ i40e_dev_tx_queue_setup_runtime(struct rte_eth_dev *dev,
        }
        /* check simple tx conflict */
        if (ad->tx_simple_allowed) {
-               if (txq->offloads != 0 ||
+               if ((txq->offloads & ~DEV_TX_OFFLOAD_MBUF_FAST_FREE) != 0 ||
                                txq->tx_rs_thresh < RTE_PMD_I40E_TX_MAX_BURST) {
                        PMD_DRV_LOG(ERR, "No-simple tx is required.");
                        return -EINVAL;