If no offload flags are set, then 0 == 0 & <anything> is true.
This means that if DEV_TX_OFFLOAD_MBUF_FAST_FREE is not
set (and no other flags are set) then this check will still
enable `tx_simple_allowed`.

This patch adds the 'offloads' flag not equal zero to avoid this
scenario.

Bugzilla ID: 665
Fixes: 399421100e08 ("net/i40e: fix missing mbuf fast free offload")

Signed-off-by: Murphy Yang <murphyx.y...@intel.com>
---
 drivers/net/i40e/i40e_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index b3d7765e3b..1450b228ca 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -3345,7 +3345,7 @@ i40e_set_tx_function_flag(struct rte_eth_dev *dev, struct 
i40e_tx_queue *txq)
 
        /* Use a simple Tx queue if possible (only fast free is allowed) */
        ad->tx_simple_allowed =
-               (txq->offloads ==
+               (txq->offloads != 0 && txq->offloads ==
                 (txq->offloads & DEV_TX_OFFLOAD_MBUF_FAST_FREE) &&
                 txq->tx_rs_thresh >= RTE_PMD_I40E_TX_MAX_BURST);
        ad->tx_vec_allowed = (ad->tx_simple_allowed &&
-- 
2.17.1

Reply via email to