net/ionic: fix Tx fragment limits

Message ID 20210204203710.34690-1-aboyer@pensando.io (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series net/ionic: fix Tx fragment limits |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-testing warning Testing issues

Commit Message

Andrew Boyer Feb. 4, 2021, 8:37 p.m. UTC
  The reported nb_seg_max should include the main fragment in the
descriptor and the fragments in the accompanying SGL.

Update the Tx prep check as well.

These were missed when updating to the v1 Tx queue structures.

Fixes: 786c64763b50 ("net/ionic: clean up Tx queue version support")
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
---
 drivers/net/ionic/ionic_ethdev.c | 4 ++--
 drivers/net/ionic/ionic_rxtx.c   | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
  

Comments

Ferruh Yigit Feb. 5, 2021, 11:45 a.m. UTC | #1
On 2/4/2021 8:37 PM, Andrew Boyer wrote:
> The reported nb_seg_max should include the main fragment in the
> descriptor and the fragments in the accompanying SGL.
> 
> Update the Tx prep check as well.
> 
> These were missed when updating to the v1 Tx queue structures.
> 
> Fixes: 786c64763b50 ("net/ionic: clean up Tx queue version support" >
> Signed-off-by: Andrew Boyer <aboyer@pensando.io>

Applied to dpdk-next-net/main, thanks.
  

Patch

diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c
index c9d8493f49..cffe899c07 100644
--- a/drivers/net/ionic/ionic_ethdev.c
+++ b/drivers/net/ionic/ionic_ethdev.c
@@ -74,8 +74,8 @@  static const struct rte_eth_desc_lim tx_desc_lim_v1 = {
 	.nb_max = IONIC_MAX_RING_DESC,
 	.nb_min = IONIC_MIN_RING_DESC,
 	.nb_align = 1,
-	.nb_seg_max = IONIC_TX_MAX_SG_ELEMS_V1,
-	.nb_mtu_seg_max = IONIC_TX_MAX_SG_ELEMS_V1,
+	.nb_seg_max = IONIC_TX_MAX_SG_ELEMS_V1 + 1,
+	.nb_mtu_seg_max = IONIC_TX_MAX_SG_ELEMS_V1 + 1,
 };
 
 static const struct eth_dev_ops ionic_eth_dev_ops = {
diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c
index 5ae9ecf400..99920109eb 100644
--- a/drivers/net/ionic/ionic_rxtx.c
+++ b/drivers/net/ionic/ionic_rxtx.c
@@ -596,7 +596,7 @@  ionic_prep_pkts(void *tx_queue __rte_unused, struct rte_mbuf **tx_pkts,
 	for (i = 0; i < nb_pkts; i++) {
 		txm = tx_pkts[i];
 
-		if (txm->nb_segs > IONIC_TX_MAX_SG_ELEMS) {
+		if (txm->nb_segs > IONIC_TX_MAX_SG_ELEMS_V1 + 1) {
 			rte_errno = -EINVAL;
 			break;
 		}