All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] nfp: clean tx descriptor flags
@ 2017-03-21 10:43 Alejandro Lucero
  2017-03-21 10:43 ` [PATCH 2/3] nfp: fix problem with pkt_len to data_len conversion Alejandro Lucero
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Alejandro Lucero @ 2017-03-21 10:43 UTC (permalink / raw)
  To: dev

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\")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 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 f8ed976..9d9420d 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -1660,16 +1660,22 @@ static void nfp_net_read_mac(struct nfp_net_hw *hw)
 	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 */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] nfp: fix problem with pkt_len to data_len conversion
  2017-03-21 10:43 [PATCH 1/3] nfp: clean tx descriptor flags Alejandro Lucero
@ 2017-03-21 10:43 ` Alejandro Lucero
  2017-03-21 10:43 ` [PATCH 3/3] nfp: fix problem with rx interrupts Alejandro Lucero
  2017-03-21 16:03 ` [PATCH 1/3] nfp: clean tx descriptor flags Ferruh Yigit
  2 siblings, 0 replies; 4+ messages in thread
From: Alejandro Lucero @ 2017-03-21 10:43 UTC (permalink / raw)
  To: dev

Chained mbufs hold data_len as the length of that particular mbuf
and pkt_len as the full packet length including all the chained
mbufs. It is not clear from the mbuf definition if pkt_len should
be set for all the mbufs in a chain, but code there for handling
mbufs suggests just the first mbuf requires to have pkt_len set.

NFP PMD was assuming pkt_len is set in all the chained mbufs and
unit tests for gather dma were building mbufs with pkt_len always
set. This patch gets rid of that assumption.

Fixes: b812daadad0d (\"nfp: add Rx and Tx\")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 9d9420d..6155d7c 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -2097,6 +2097,7 @@ uint32_t nfp_net_txq_full(struct nfp_net_txq *txq)
 		 * Checksum and VLAN flags just in the first descriptor for a
 		 * multisegment packet, but TSO info needs to be in all of them.
 		 */
+		txd.data_len = pkt->pkt_len;
 		nfp_net_tx_tso(txq, &txd, pkt);
 		nfp_net_tx_cksum(txq, &txd, pkt);
 
@@ -2132,7 +2133,7 @@ uint32_t nfp_net_txq_full(struct nfp_net_txq *txq)
 
 			/* Filling descriptors fields */
 			txds->dma_len = dma_size;
-			txds->data_len = pkt->pkt_len;
+			txds->data_len = txd.data_len;
 			txds->dma_addr_hi = (dma_addr >> 32) & 0xff;
 			txds->dma_addr_lo = (dma_addr & 0xffffffff);
 			ASSERT(free_descs > 0);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] nfp: fix problem with rx interrupts
  2017-03-21 10:43 [PATCH 1/3] nfp: clean tx descriptor flags Alejandro Lucero
  2017-03-21 10:43 ` [PATCH 2/3] nfp: fix problem with pkt_len to data_len conversion Alejandro Lucero
@ 2017-03-21 10:43 ` Alejandro Lucero
  2017-03-21 16:03 ` [PATCH 1/3] nfp: clean tx descriptor flags Ferruh Yigit
  2 siblings, 0 replies; 4+ messages in thread
From: Alejandro Lucero @ 2017-03-21 10:43 UTC (permalink / raw)
  To: dev

Current code enables RX interrupts even if this it not
requested.

Fixes: ea121b28316d (\"net/nfp: add Rx interrupts\")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 6155d7c..a1ad97a 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -708,7 +708,8 @@ static void nfp_net_read_mac(struct nfp_net_hw *hw)
 			return -1;
 	}
 
-	nfp_configure_rx_interrupt(dev, intr_handle);
+	if (rte_intr_dp_is_en(intr_handle))
+		nfp_configure_rx_interrupt(dev, intr_handle);
 
 	rte_intr_enable(intr_handle);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] nfp: clean tx descriptor flags
  2017-03-21 10:43 [PATCH 1/3] nfp: clean tx descriptor flags Alejandro Lucero
  2017-03-21 10:43 ` [PATCH 2/3] nfp: fix problem with pkt_len to data_len conversion Alejandro Lucero
  2017-03-21 10:43 ` [PATCH 3/3] nfp: fix problem with rx interrupts Alejandro Lucero
@ 2017-03-21 16:03 ` Ferruh Yigit
  2 siblings, 0 replies; 4+ messages in thread
From: Ferruh Yigit @ 2017-03-21 16:03 UTC (permalink / raw)
  To: Alejandro Lucero, dev

On 3/21/2017 10:43 AM, Alejandro Lucero wrote:
> 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\")
> 
> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>

Series applied to dpdk-next-net/master, thanks.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-03-21 16:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-21 10:43 [PATCH 1/3] nfp: clean tx descriptor flags Alejandro Lucero
2017-03-21 10:43 ` [PATCH 2/3] nfp: fix problem with pkt_len to data_len conversion Alejandro Lucero
2017-03-21 10:43 ` [PATCH 3/3] nfp: fix problem with rx interrupts Alejandro Lucero
2017-03-21 16:03 ` [PATCH 1/3] nfp: clean tx descriptor flags Ferruh Yigit

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.