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