Thread (39 messages) 39 messages, 4 authors, 2017-02-09

Re: [PATCH v2 3/5] net/ixgbe: fix bitmask of supported Tx flags

From: Ananyev, Konstantin <hidden>
Date: 2017-02-08 00:34:38

-----Original Message-----
From: Wu, Jingjing
Sent: Tuesday, February 7, 2017 2:30 AM
To: Ananyev, Konstantin <redacted>; dev@dpdk.org
Subject: RE: [dpdk-dev] [PATCH v2 3/5] net/ixgbe: fix bitmask of supported Tx flags


quoted
-----Original Message-----
From: Ananyev, Konstantin
Sent: Monday, February 6, 2017 8:11 PM
To: Wu, Jingjing <redacted>; dev@dpdk.org
Subject: RE: [dpdk-dev] [PATCH v2 3/5] net/ixgbe: fix bitmask of supported
Tx flags


quoted
-----Original Message-----
From: Wu, Jingjing
Sent: Monday, February 6, 2017 8:54 AM
To: Ananyev, Konstantin <redacted>; dev@dpdk.org
Subject: RE: [dpdk-dev] [PATCH v2 3/5] net/ixgbe: fix bitmask of
supported Tx flags


quoted
-----Original Message-----
From: Ananyev, Konstantin
Sent: Sunday, February 5, 2017 8:11 PM
To: Ananyev, Konstantin <redacted>; Wu, Jingjing
[off-list ref]; dev@dpdk.org
Subject: RE: [dpdk-dev] [PATCH v2 3/5] net/ixgbe: fix bitmask of
supported Tx flags


quoted
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ananyev,
Konstantin
Sent: Sunday, February 5, 2017 11:59 AM
To: Wu, Jingjing <redacted>; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2 3/5] net/ixgbe: fix bitmask of
supported Tx flags

Hi Jingjing,

quoted
-----Original Message-----
From: Wu, Jingjing
Sent: Saturday, February 4, 2017 3:36 AM
To: dev@dpdk.org
Cc: Wu, Jingjing <redacted>; Ananyev, Konstantin
[off-list ref]
Subject: [PATCH v2 3/5] net/ixgbe: fix bitmask of supported Tx
flags

Add missed flags to bitmask of all supported packet Tx flags.

CC: konstantin.ananyev@intel.com
Fixes: 7829b8d52be0 ("net/ixgbe: add Tx preparation")
Signed-off-by: Jingjing Wu <redacted>
---
 drivers/net/ixgbe/ixgbe_rxtx.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c
b/drivers/net/ixgbe/ixgbe_rxtx.c index 36f1c02..8454581 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx.c
@@ -81,13 +81,28 @@
 #include "ixgbe_rxtx.h"

 /* Bit Mask to indicate what bits required for building TX
context */
+#ifdef RTE_LIBRTE_IEEE1588
 #define IXGBE_TX_OFFLOAD_MASK (			 \
 		PKT_TX_VLAN_PKT |		 \
 		PKT_TX_IP_CKSUM |		 \
+		PKT_TX_IPV4 |			 \
 		PKT_TX_L4_MASK |		 \
+		PKT_TX_IEEE1588_TMST |		 \
 		PKT_TX_TCP_SEG |		 \
 		PKT_TX_MACSEC |			 \
-		PKT_TX_OUTER_IP_CKSUM)
+		PKT_TX_OUTER_IP_CKSUM |		 \
+		PKT_TX_OUTER_IPV4)
+#else
+#define IXGBE_TX_OFFLOAD_MASK (			 \
+		PKT_TX_VLAN_PKT |		 \
+		PKT_TX_IP_CKSUM |		 \
+		PKT_TX_IPV4 |			 \
Wonder why ixgbe doesn't have PKT_TX_IPV6?
Same question for e1000 and fm10k.
Also if you decided to go that way, you'll probably need to update
TX_OFFLOAD_MASK for enic and vmxnet3.
That's why I still think it would be much less hassle not to include
these flags
(PKT_TX_IPV4 and PKT_TX_IPV6)  into TX_OFFLOAD_MASK at all.
Konstantin
Thanks for pointing that. PKT_TX_IPV6 is missed.
About whether include these flags (PKT_TX_IPV4 and PKT_TX_IPV6)  into
TX_OFFLOAD_MASK, I think they should be Included. Think about one NIC
may support IPV4 L4 checksum offload, but not support IPV6? Even I don't
know who it is.
quoted
I don't think such combination is possible now anyway.
But ok, if your preference is it to do more work and add (PKT_TX_IPV4 |
PKT_TX_IPV6) into all required places, I wouldn't argue.

BTW, as a side notice, what will be really good is to have a function that
would take tx_offload_capabilities as an input and return tx_offload_mask.
That would remove necessity to update/support TX_OFFLOAD_MASK for
each PMD, and hopefully will allow to avoid confusion for PMD writers.
Though that's probably subject of another patch.
OK. I think what I did is more than necessary. Let me simplify the change. Thanks!

And about the querying tx offload capabilities, I think it is already been done
In rte_eth_dev_info_get. But it used another set of flags which is not TX flags
Defined in mbuf.
I am not talking about querying device offload capabilities.
I am talking about a function that would take these capabilities reported by the
device and convert them into a set of tx offload flags, that are suitable for these capabilities. 
Something like that:
uint64_t
tx_capa_to flags(uint32_t tx_capa)
{
	uint64_t ol_flags;
	
	ol_flags = 0;

	if (tx_capa &  DEV_TX_OFFLOAD_TCP_TSO)
		ol_flags |= PKT_TX_TCP_SEG |  PKT_TX_IPV4 |  PKT_TX_IP_CKSUM  | PKT_TX_IPV6;
	if (tx_capa &  DEV_TX_OFFLOAD_TCP_CKSUM)
		ol_flags |= PKT_TX_TCP_CKSUM;
	...
	return ol_flags;
}   

Then PMD writer wouldn't need to define TX_OFFLOAD_MASK for his PMD manually.
Instead he can just do at startup/configure phase:
txq->tx_offload_mask = tx_capa_to flags(supported_and_configured_capabilties);

Though, as I said, this is probably subject of another patch/discussion.
Konstantin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help