All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] lib/net: add IPv6 header fields macros
@ 2017-12-31  7:34 Shachar Beiser
  2017-12-31  7:34 ` [PATCH 2/2] net/mlx5: fix IPv6 header fields Shachar Beiser
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Shachar Beiser @ 2017-12-31  7:34 UTC (permalink / raw)
  To: dev; +Cc: Shachar Beiser, Adrien Mazarguil, Nelio Laranjeiro

Support IPv6 header vtc_flow fields : tc , flow_label

Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
---
 lib/librte_net/rte_ip.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index 73ec398..75b9cc3 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -406,6 +406,12 @@ struct ipv6_hdr {
 	uint8_t  dst_addr[16]; /**< IP address of destination host(s). */
 } __attribute__((__packed__));
 
+/* IPv6 vtc_flow: IPv / TC / flow_label */
+#define IPV6_HDR_FL_SHIFT (0)
+#define IPV6_HDR_TC_SHIFT (20)
+#define IPV6_HDR_FL_MASK ((1 << IPV6_HDR_TC_SHIFT) - 1)
+#define IPV6_HDR_TC_MASK (0xf << IPV6_HDR_TC_SHIFT)
+
 /**
  * Process the pseudo-header checksum of an IPv6 header.
  *
-- 
1.8.3.1

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

* [PATCH 2/2] net/mlx5: fix IPv6 header fields
  2017-12-31  7:34 [PATCH 1/2] lib/net: add IPv6 header fields macros Shachar Beiser
@ 2017-12-31  7:34 ` Shachar Beiser
  2018-01-02 19:56   ` Yongseok Koh
  2017-12-31 17:37 ` [PATCH 1/2] lib/net: add IPv6 header fields macros Stephen Hemminger
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Shachar Beiser @ 2017-12-31  7:34 UTC (permalink / raw)
  To: dev; +Cc: Shachar Beiser, Adrien Mazarguil, Nelio Laranjeiro, stable

There are parameters that are not copy from
spec to verbs structure in the vtc_label

Fixes: 43e9d97 ("net/mlx5: support upstream rdma-core")
Cc: stable@dpdk.org

Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 6605cfd..3209be8 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -48,6 +48,7 @@
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
 #include <rte_malloc.h>
+#include <rte_ip.h>
 
 #include "mlx5.h"
 #include "mlx5_prm.h"
@@ -1399,6 +1400,8 @@ struct ibv_spec_header {
 		parser->layer = HASH_RXQ_IPV6;
 	if (spec) {
 		unsigned int i;
+		uint32_t vtc_flow_val;
+		uint32_t vtc_flow_mask;
 
 		if (!mask)
 			mask = default_mask;
@@ -1410,7 +1413,20 @@ struct ibv_spec_header {
 		       RTE_DIM(ipv6.mask.src_ip));
 		memcpy(&ipv6.mask.dst_ip, mask->hdr.dst_addr,
 		       RTE_DIM(ipv6.mask.dst_ip));
-		ipv6.mask.flow_label = mask->hdr.vtc_flow;
+		vtc_flow_val = rte_be_to_cpu_32(spec->hdr.vtc_flow);
+		vtc_flow_mask = rte_be_to_cpu_32(mask->hdr.vtc_flow);
+		ipv6.val.flow_label =
+			rte_cpu_to_be_32((vtc_flow_val & IPV6_HDR_FL_MASK) >>
+					 IPV6_HDR_FL_SHIFT);
+		ipv6.val.traffic_class = (vtc_flow_val & IPV6_HDR_TC_MASK) >>
+					 IPV6_HDR_TC_SHIFT;
+		ipv6.val.next_hdr = spec->hdr.proto;
+		ipv6.val.hop_limit = spec->hdr.hop_limits;
+		ipv6.mask.flow_label =
+			rte_cpu_to_be_32((vtc_flow_mask & IPV6_HDR_FL_MASK) >>
+					 IPV6_HDR_FL_SHIFT);
+		ipv6.mask.traffic_class = (vtc_flow_mask & IPV6_HDR_TC_MASK) >>
+					  IPV6_HDR_TC_SHIFT;
 		ipv6.mask.next_hdr = mask->hdr.proto;
 		ipv6.mask.hop_limit = mask->hdr.hop_limits;
 		/* Remove unwanted bits from values. */
@@ -1419,6 +1435,7 @@ struct ibv_spec_header {
 			ipv6.val.dst_ip[i] &= ipv6.mask.dst_ip[i];
 		}
 		ipv6.val.flow_label &= ipv6.mask.flow_label;
+		ipv6.val.traffic_class &= ipv6.mask.traffic_class;
 		ipv6.val.next_hdr &= ipv6.mask.next_hdr;
 		ipv6.val.hop_limit &= ipv6.mask.hop_limit;
 	}
-- 
1.8.3.1

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

* Re: [PATCH 1/2] lib/net: add IPv6 header fields macros
  2017-12-31  7:34 [PATCH 1/2] lib/net: add IPv6 header fields macros Shachar Beiser
  2017-12-31  7:34 ` [PATCH 2/2] net/mlx5: fix IPv6 header fields Shachar Beiser
@ 2017-12-31 17:37 ` Stephen Hemminger
  2018-01-16  9:17 ` [PATCH v2 " Shahaf Shuler
  2018-01-16  9:17 ` [PATCH v2 2/2] net/mlx5: fix IPv6 header fields Shahaf Shuler
  3 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2017-12-31 17:37 UTC (permalink / raw)
  To: Shachar Beiser; +Cc: dev, Adrien Mazarguil, Nelio Laranjeiro

On Sun, 31 Dec 2017 07:34:29 +0000
Shachar Beiser <shacharbe@mellanox.com> wrote:

> +/* IPv6 vtc_flow: IPv / TC / flow_label */
> +#define IPV6_HDR_FL_SHIFT (0)
> +#define IPV6_HDR_TC_SHIFT (20)

No parenthesis needed around simple numeric values.

> +#define IPV6_HDR_FL_MASK ((1 << IPV6_HDR_TC_SHIFT) - 1)

If you use ((1u << IPV6_HDR_TC_SHFIT - 1)
then the mask will be unsigned which probably what you want.

> +#define IPV6_HDR_TC_MASK (0xf << IPV6_HDR_TC_SHIFT)

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

* Re: [PATCH 2/2] net/mlx5: fix IPv6 header fields
  2017-12-31  7:34 ` [PATCH 2/2] net/mlx5: fix IPv6 header fields Shachar Beiser
@ 2018-01-02 19:56   ` Yongseok Koh
  0 siblings, 0 replies; 9+ messages in thread
From: Yongseok Koh @ 2018-01-02 19:56 UTC (permalink / raw)
  To: Shachar Beiser; +Cc: dev, Adrien Mazarguil, Nélio Laranjeiro, stable


> On Dec 30, 2017, at 11:34 PM, Shachar Beiser <shacharbe@mellanox.com> wrote:
> 
> There are parameters that are not copy from
> spec to verbs structure in the vtc_label
> 
> Fixes: 43e9d97 ("net/mlx5: support upstream rdma-core")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
> ---
Acked-by: Yongseok Koh <yskoh@mellanox.com>
 
Thanks

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

* [PATCH v2 1/2] lib/net: add IPv6 header fields macros
  2017-12-31  7:34 [PATCH 1/2] lib/net: add IPv6 header fields macros Shachar Beiser
  2017-12-31  7:34 ` [PATCH 2/2] net/mlx5: fix IPv6 header fields Shachar Beiser
  2017-12-31 17:37 ` [PATCH 1/2] lib/net: add IPv6 header fields macros Stephen Hemminger
@ 2018-01-16  9:17 ` Shahaf Shuler
  2018-01-17 16:53   ` Ferruh Yigit
  2018-01-16  9:17 ` [PATCH v2 2/2] net/mlx5: fix IPv6 header fields Shahaf Shuler
  3 siblings, 1 reply; 9+ messages in thread
From: Shahaf Shuler @ 2018-01-16  9:17 UTC (permalink / raw)
  To: olivier.matz, stephen, yskoh, nelio.laranjeiro, adrien.mazarguil
  Cc: dev, Shachar Beiser

From: Shachar Beiser <shacharbe@mellanox.com>

Support IPv6 header vtc_flow fields : tc , flow_label

Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
---
Sending on behalf of Shachar.

On v2:
 - Addressed Stephen comments on the coding style.

---
 lib/librte_net/rte_ip.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index 9a62ff667..f32684c66 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -344,6 +344,12 @@ struct ipv6_hdr {
 	uint8_t  dst_addr[16]; /**< IP address of destination host(s). */
 } __attribute__((__packed__));
 
+/* IPv6 vtc_flow: IPv / TC / flow_label */
+#define IPV6_HDR_FL_SHIFT 0
+#define IPV6_HDR_TC_SHIFT 20
+#define IPV6_HDR_FL_MASK ((1u << IPV6_HDR_TC_SHIFT) - 1)
+#define IPV6_HDR_TC_MASK (0xf << IPV6_HDR_TC_SHIFT)
+
 /**
  * Process the pseudo-header checksum of an IPv6 header.
  *
-- 
2.12.0

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

* [PATCH v2 2/2] net/mlx5: fix IPv6 header fields
  2017-12-31  7:34 [PATCH 1/2] lib/net: add IPv6 header fields macros Shachar Beiser
                   ` (2 preceding siblings ...)
  2018-01-16  9:17 ` [PATCH v2 " Shahaf Shuler
@ 2018-01-16  9:17 ` Shahaf Shuler
  3 siblings, 0 replies; 9+ messages in thread
From: Shahaf Shuler @ 2018-01-16  9:17 UTC (permalink / raw)
  To: olivier.matz, stephen, yskoh, nelio.laranjeiro, adrien.mazarguil
  Cc: dev, Shachar Beiser, stable

From: Shachar Beiser <shacharbe@mellanox.com>

There are parameters that are not copy from
spec to verbs structure in the vtc_label

Fixes: 43e9d97 ("net/mlx5: support upstream rdma-core")
Cc: stable@dpdk.org

Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
Sending on behalf of Shachar.

On v2:
 - No changes.

---
 drivers/net/mlx5/mlx5_flow.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index ff9fd78d5..4396ea852 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -48,6 +48,7 @@
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
 #include <rte_malloc.h>
+#include <rte_ip.h>
 
 #include "mlx5.h"
 #include "mlx5_defs.h"
@@ -1410,6 +1411,8 @@ mlx5_flow_create_ipv6(const struct rte_flow_item *item,
 		parser->layer = HASH_RXQ_IPV6;
 	if (spec) {
 		unsigned int i;
+		uint32_t vtc_flow_val;
+		uint32_t vtc_flow_mask;
 
 		if (!mask)
 			mask = default_mask;
@@ -1421,7 +1424,20 @@ mlx5_flow_create_ipv6(const struct rte_flow_item *item,
 		       RTE_DIM(ipv6.mask.src_ip));
 		memcpy(&ipv6.mask.dst_ip, mask->hdr.dst_addr,
 		       RTE_DIM(ipv6.mask.dst_ip));
-		ipv6.mask.flow_label = mask->hdr.vtc_flow;
+		vtc_flow_val = rte_be_to_cpu_32(spec->hdr.vtc_flow);
+		vtc_flow_mask = rte_be_to_cpu_32(mask->hdr.vtc_flow);
+		ipv6.val.flow_label =
+			rte_cpu_to_be_32((vtc_flow_val & IPV6_HDR_FL_MASK) >>
+					 IPV6_HDR_FL_SHIFT);
+		ipv6.val.traffic_class = (vtc_flow_val & IPV6_HDR_TC_MASK) >>
+					 IPV6_HDR_TC_SHIFT;
+		ipv6.val.next_hdr = spec->hdr.proto;
+		ipv6.val.hop_limit = spec->hdr.hop_limits;
+		ipv6.mask.flow_label =
+			rte_cpu_to_be_32((vtc_flow_mask & IPV6_HDR_FL_MASK) >>
+					 IPV6_HDR_FL_SHIFT);
+		ipv6.mask.traffic_class = (vtc_flow_mask & IPV6_HDR_TC_MASK) >>
+					  IPV6_HDR_TC_SHIFT;
 		ipv6.mask.next_hdr = mask->hdr.proto;
 		ipv6.mask.hop_limit = mask->hdr.hop_limits;
 		/* Remove unwanted bits from values. */
@@ -1430,6 +1446,7 @@ mlx5_flow_create_ipv6(const struct rte_flow_item *item,
 			ipv6.val.dst_ip[i] &= ipv6.mask.dst_ip[i];
 		}
 		ipv6.val.flow_label &= ipv6.mask.flow_label;
+		ipv6.val.traffic_class &= ipv6.mask.traffic_class;
 		ipv6.val.next_hdr &= ipv6.mask.next_hdr;
 		ipv6.val.hop_limit &= ipv6.mask.hop_limit;
 	}
-- 
2.12.0

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

* Re: [PATCH v2 1/2] lib/net: add IPv6 header fields macros
  2018-01-16  9:17 ` [PATCH v2 " Shahaf Shuler
@ 2018-01-17 16:53   ` Ferruh Yigit
  2018-01-18 13:57     ` Olivier Matz
  0 siblings, 1 reply; 9+ messages in thread
From: Ferruh Yigit @ 2018-01-17 16:53 UTC (permalink / raw)
  To: olivier.matz, yskoh, nelio.laranjeiro, adrien.mazarguil
  Cc: Shahaf Shuler, stephen, dev, Shachar Beiser

On 1/16/2018 9:17 AM, Shahaf Shuler wrote:
> From: Shachar Beiser <shacharbe@mellanox.com>
> 
> Support IPv6 header vtc_flow fields : tc , flow_label
> 
> Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
> ---
> Sending on behalf of Shachar.
> 
> On v2:
>  - Addressed Stephen comments on the coding style.

Hi Olivier,

Any objection to the patch?

Thanks,
ferruh

> 
> ---
>  lib/librte_net/rte_ip.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
> index 9a62ff667..f32684c66 100644
> --- a/lib/librte_net/rte_ip.h
> +++ b/lib/librte_net/rte_ip.h
> @@ -344,6 +344,12 @@ struct ipv6_hdr {
>  	uint8_t  dst_addr[16]; /**< IP address of destination host(s). */
>  } __attribute__((__packed__));
>  
> +/* IPv6 vtc_flow: IPv / TC / flow_label */
> +#define IPV6_HDR_FL_SHIFT 0
> +#define IPV6_HDR_TC_SHIFT 20
> +#define IPV6_HDR_FL_MASK ((1u << IPV6_HDR_TC_SHIFT) - 1)
> +#define IPV6_HDR_TC_MASK (0xf << IPV6_HDR_TC_SHIFT)
> +
>  /**
>   * Process the pseudo-header checksum of an IPv6 header.
>   *
> 

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

* Re: [PATCH v2 1/2] lib/net: add IPv6 header fields macros
  2018-01-17 16:53   ` Ferruh Yigit
@ 2018-01-18 13:57     ` Olivier Matz
  2018-01-18 15:07       ` Ferruh Yigit
  0 siblings, 1 reply; 9+ messages in thread
From: Olivier Matz @ 2018-01-18 13:57 UTC (permalink / raw)
  To: Ferruh Yigit
  Cc: yskoh, nelio.laranjeiro, adrien.mazarguil, Shahaf Shuler,
	stephen, dev, Shachar Beiser

On Wed, Jan 17, 2018 at 04:53:25PM +0000, Ferruh Yigit wrote:
> On 1/16/2018 9:17 AM, Shahaf Shuler wrote:
> > From: Shachar Beiser <shacharbe@mellanox.com>
> > 
> > Support IPv6 header vtc_flow fields : tc , flow_label
> > 
> > Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
> > ---
> > Sending on behalf of Shachar.
> > 
> > On v2:
> >  - Addressed Stephen comments on the coding style.
> 
> Hi Olivier,
> 
> Any objection to the patch?

Sorry, I missed it.

Acked-by: Olivier Matz <olivier.matz@6wind.com>


> 
> Thanks,
> ferruh
> 
> > 
> > ---
> >  lib/librte_net/rte_ip.h | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
> > index 9a62ff667..f32684c66 100644
> > --- a/lib/librte_net/rte_ip.h
> > +++ b/lib/librte_net/rte_ip.h
> > @@ -344,6 +344,12 @@ struct ipv6_hdr {
> >  	uint8_t  dst_addr[16]; /**< IP address of destination host(s). */
> >  } __attribute__((__packed__));
> >  
> > +/* IPv6 vtc_flow: IPv / TC / flow_label */
> > +#define IPV6_HDR_FL_SHIFT 0
> > +#define IPV6_HDR_TC_SHIFT 20
> > +#define IPV6_HDR_FL_MASK ((1u << IPV6_HDR_TC_SHIFT) - 1)
> > +#define IPV6_HDR_TC_MASK (0xf << IPV6_HDR_TC_SHIFT)
> > +
> >  /**
> >   * Process the pseudo-header checksum of an IPv6 header.
> >   *
> > 
> 

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

* Re: [PATCH v2 1/2] lib/net: add IPv6 header fields macros
  2018-01-18 13:57     ` Olivier Matz
@ 2018-01-18 15:07       ` Ferruh Yigit
  0 siblings, 0 replies; 9+ messages in thread
From: Ferruh Yigit @ 2018-01-18 15:07 UTC (permalink / raw)
  To: Olivier Matz
  Cc: yskoh, nelio.laranjeiro, adrien.mazarguil, Shahaf Shuler,
	stephen, dev, Shachar Beiser

On 1/18/2018 1:57 PM, Olivier Matz wrote:
> On Wed, Jan 17, 2018 at 04:53:25PM +0000, Ferruh Yigit wrote:
>> On 1/16/2018 9:17 AM, Shahaf Shuler wrote:
>>> From: Shachar Beiser <shacharbe@mellanox.com>
>>>
>>> Support IPv6 header vtc_flow fields : tc , flow_label
>>>
>>> Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>

> Acked-by: Olivier Matz <olivier.matz@6wind.com>

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

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

end of thread, other threads:[~2018-01-18 15:07 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-31  7:34 [PATCH 1/2] lib/net: add IPv6 header fields macros Shachar Beiser
2017-12-31  7:34 ` [PATCH 2/2] net/mlx5: fix IPv6 header fields Shachar Beiser
2018-01-02 19:56   ` Yongseok Koh
2017-12-31 17:37 ` [PATCH 1/2] lib/net: add IPv6 header fields macros Stephen Hemminger
2018-01-16  9:17 ` [PATCH v2 " Shahaf Shuler
2018-01-17 16:53   ` Ferruh Yigit
2018-01-18 13:57     ` Olivier Matz
2018-01-18 15:07       ` Ferruh Yigit
2018-01-16  9:17 ` [PATCH v2 2/2] net/mlx5: fix IPv6 header fields Shahaf Shuler

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.