Thread (7 messages) 7 messages, 3 authors, 2017-01-26

Re: [PATCH 1/2] mbuf: fix bitmask of Tx offload flags

From: Ananyev, Konstantin <hidden>
Date: 2017-01-26 15:35:32

Hi Olivier,
quoted hunk ↗ jump to hunk
-----Original Message-----
From: Olivier MATZ [mailto:olivier.matz@6wind.com]
Sent: Thursday, January 26, 2017 3:05 PM
To: Ananyev, Konstantin <redacted>
Cc: Wu, Jingjing <redacted>; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 1/2] mbuf: fix bitmask of Tx offload flags

On Thu, 26 Jan 2017 14:58:08 +0000, "Ananyev, Konstantin"
[off-list ref] wrote:
quoted
Hi Jingjng,
quoted
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jingjing Wu
Sent: Tuesday, January 24, 2017 11:48 AM
To: dev@dpdk.org
Cc: Wu, Jingjing <redacted>
Subject: [dpdk-dev] [PATCH 1/2] mbuf: fix bitmask of Tx offload
flags

Some Tx offload flags are missed in Bitmask of all supported packet
Tx offload features flags.
This patch fixes it.
Not sure what it exactly fixes?
As I remember these flags don't specify any TX offload for HW to
perform, But just provide information to the TX function.
Again, why only i40e code is modified?
As I remember we have the same code in other PMDs too.
Konstantin
quoted
Fixes: 4fb7e803eb1a ("ethdev: add Tx preparation")
Signed-off-by: Jingjing Wu <redacted>
---
 lib/librte_mbuf/rte_mbuf.h | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index bfce9f4..e57a4d2 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -295,8 +295,12 @@ extern "C" {
  */
 #define PKT_TX_OFFLOAD_MASK (    \
 		PKT_TX_IP_CKSUM |        \
+		PKT_TX_IPV4 |            \
+		PKT_TX_IPV6 |            \
 		PKT_TX_L4_MASK |         \
 		PKT_TX_OUTER_IP_CKSUM |  \
+		PKT_TX_OUTER_IPV4 |      \
+		PKT_TX_OUTER_IPV6 |      \
 		PKT_TX_TCP_SEG |         \
 		PKT_TX_QINQ_PKT |        \
 		PKT_TX_VLAN_PKT |        \
--
2.4.11
Also, it looks like MACSEC is missing. To avoid forgetting flags in
the future, what do you think about doing the following (not tested)?

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index b3cccfc..aa1dc76 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -182,9 +182,11 @@ extern "C" {
  */
 #define PKT_RX_TIMESTAMP     (1ULL << 17)

-/* add new RX flags here */
+/* add new RX flags here, and update __PKT_RX_NEXT */
+#define __PKT_RX_NEXT        (1ULL << 18)

-/* add new TX flags here */
+/* add new TX flags here, and update __PKT_TX_NEXT */
+#define __PKT_TX_NEXT        (1ULL << 43)

 /**
  * Offload the MACsec. This flag must be set by the application to enable
@@ -295,17 +297,16 @@ extern "C" {
 #define PKT_TX_OUTER_IPV6    (1ULL << 60)

 /**
+ * Bitmask of all supported packet Rx offload features flags,
+ * which can be set for packet.
+ */
+#define PKT_RX_OFFLOAD_MASK (__PKT_RX_NEXT - 1)
+
+/**
  * Bitmask of all supported packet Tx offload features flags,
  * which can be set for packet.
  */
-#define PKT_TX_OFFLOAD_MASK (    \
-               PKT_TX_IP_CKSUM |        \
-               PKT_TX_L4_MASK |         \
-               PKT_TX_OUTER_IP_CKSUM |  \
-               PKT_TX_TCP_SEG |         \
-               PKT_TX_QINQ_PKT |        \
-               PKT_TX_VLAN_PKT |        \
-               PKT_TX_TUNNEL_MASK)
+#define PKT_TX_OFFLOAD_MASK ((~(__PKT_TX_NEXT - 1)) & 0x1fffffffffffffff)
I see your point but should, let say, PKT_TX_IPV4 be part of PKT_TX_OFFLOAD_MASK at all?
It doesn't really define any offload for PMD/HW to perform.
It just provide extra information for  PMD so it can successfully process other offload requests.
Konstantin
 #define __RESERVED           (1ULL << 61) /**< reserved for future mbuf use */
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help