From 2dfcada3eba1c1f5ddb275a48dd044476ac53825 Mon Sep 17 00:00:00 2001 From: Alejandro Lucero Date: Tue, 21 Mar 2017 10:43:19 +0000 Subject: [PATCH] net/nfp: clean Tx descriptor flags When LSO, not doing this can led to firmware disruption. It does not show as error because TCP ends up sending data again later on. Fixes: 9ba3d0ae2090 ("net/nfp: add TSO support") Cc: stable@dpdk.org Signed-off-by: Alejandro Lucero --- drivers/net/nfp/nfp_net.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index f8ed976202..9d9420d57c 100644 --- a/drivers/net/nfp/nfp_net.c +++ b/drivers/net/nfp/nfp_net.c @@ -1660,16 +1660,22 @@ nfp_net_tx_tso(struct nfp_net_txq *txq, struct nfp_net_tx_desc *txd, struct nfp_net_hw *hw = txq->hw; if (!(hw->cap & NFP_NET_CFG_CTRL_LSO)) - return; + goto clean_txd; ol_flags = mb->ol_flags; if (!(ol_flags & PKT_TX_TCP_SEG)) - return; + goto clean_txd; txd->l4_offset = mb->l2_len + mb->l3_len + mb->l4_len; txd->lso = rte_cpu_to_le_16(mb->tso_segsz); - txd->flags |= PCIE_DESC_TX_LSO; + txd->flags = PCIE_DESC_TX_LSO; + return; + +clean_txd: + txd->flags = 0; + txd->l4_offset = 0; + txd->lso = 0; } /* nfp_net_tx_cksum - Set TX CSUM offload flags in TX descriptor */ -- 2.20.1