* [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS
@ 2020-04-27 13:23 David Marchand
2020-04-27 13:23 ` [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum David Marchand
` (3 more replies)
0 siblings, 4 replies; 20+ messages in thread
From: David Marchand @ 2020-04-27 13:23 UTC (permalink / raw)
To: dev
Couple of fixes caught while checking OVS integration.
Extra bonus points for reviewers that will review the OVS series :-)
https://patchwork.ozlabs.org/project/openvswitch/list/?series=172917
--
David Marchand
David Marchand (3):
ring: fix build with -Wswitch-enum
eal: fix typo in endian conversion macros
ethdev: fix build warning on 64-bit value
lib/librte_eal/include/generic/rte_byteorder.h | 6 +++---
lib/librte_ethdev/rte_flow.h | 2 +-
lib/librte_ring/rte_ring_peek.h | 8 ++++++++
3 files changed, 12 insertions(+), 4 deletions(-)
--
2.23.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum
2020-04-27 13:23 [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
@ 2020-04-27 13:23 ` David Marchand
2020-04-27 14:55 ` Ananyev, Konstantin
2020-04-27 13:23 ` [dpdk-dev] [PATCH 2/3] eal: fix typo in endian conversion macros David Marchand
` (2 subsequent siblings)
3 siblings, 1 reply; 20+ messages in thread
From: David Marchand @ 2020-04-27 13:23 UTC (permalink / raw)
To: dev; +Cc: Honnappa Nagarahalli, Konstantin Ananyev
Some popular vswitch implementation might use a gcc option that
complains about missing enums in switch statements.
Fix this by listing all possible values.
Fixes: 664ff4b1729b ("ring: introduce peek style API")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/librte_ring/rte_ring_peek.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/librte_ring/rte_ring_peek.h b/lib/librte_ring/rte_ring_peek.h
index 9e7f4db323..d5e6ea1cf3 100644
--- a/lib/librte_ring/rte_ring_peek.h
+++ b/lib/librte_ring/rte_ring_peek.h
@@ -68,6 +68,8 @@ __rte_ring_do_enqueue_start(struct rte_ring *r, uint32_t n,
n = __rte_ring_hts_move_prod_head(r, n, behavior,
&head, &free);
break;
+ case RTE_RING_SYNC_MT:
+ case RTE_RING_SYNC_MT_RTS:
default:
/* unsupported mode, shouldn't be here */
RTE_ASSERT(0);
@@ -217,6 +219,8 @@ rte_ring_enqueue_elem_finish(struct rte_ring *r, const void *obj_table,
__rte_ring_enqueue_elems(r, tail, obj_table, esize, n);
__rte_ring_hts_set_head_tail(&r->hts_prod, tail, n, 1);
break;
+ case RTE_RING_SYNC_MT:
+ case RTE_RING_SYNC_MT_RTS:
default:
/* unsupported mode, shouldn't be here */
RTE_ASSERT(0);
@@ -263,6 +267,8 @@ __rte_ring_do_dequeue_start(struct rte_ring *r, void *obj_table,
n = __rte_ring_hts_move_cons_head(r, n, behavior,
&head, &avail);
break;
+ case RTE_RING_SYNC_MT:
+ case RTE_RING_SYNC_MT_RTS:
default:
/* unsupported mode, shouldn't be here */
RTE_ASSERT(0);
@@ -414,6 +420,8 @@ rte_ring_dequeue_elem_finish(struct rte_ring *r, unsigned int n)
n = __rte_ring_hts_get_tail(&r->hts_cons, &tail, n);
__rte_ring_hts_set_head_tail(&r->hts_cons, tail, n, 0);
break;
+ case RTE_RING_SYNC_MT:
+ case RTE_RING_SYNC_MT_RTS:
default:
/* unsupported mode, shouldn't be here */
RTE_ASSERT(0);
--
2.23.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH 2/3] eal: fix typo in endian conversion macros
2020-04-27 13:23 [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
2020-04-27 13:23 ` [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum David Marchand
@ 2020-04-27 13:23 ` David Marchand
2020-04-27 13:35 ` Bruce Richardson
2020-04-27 13:23 ` [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value David Marchand
2020-04-28 9:53 ` [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
3 siblings, 1 reply; 20+ messages in thread
From: David Marchand @ 2020-04-27 13:23 UTC (permalink / raw)
To: dev; +Cc: stable, Adrien Mazarguil
Caught by code inspection, for little endian, RTE_LEXX macros should
provide rte_leXX_t type values.
Fixes: b75667ef9f7e ("eal: add static endianness conversion macros")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/librte_eal/include/generic/rte_byteorder.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/librte_eal/include/generic/rte_byteorder.h b/lib/librte_eal/include/generic/rte_byteorder.h
index 38e8cfd32b..9ca960932f 100644
--- a/lib/librte_eal/include/generic/rte_byteorder.h
+++ b/lib/librte_eal/include/generic/rte_byteorder.h
@@ -93,9 +93,9 @@
#define RTE_BE16(v) (rte_be16_t)(RTE_STATIC_BSWAP16(v))
#define RTE_BE32(v) (rte_be32_t)(RTE_STATIC_BSWAP32(v))
#define RTE_BE64(v) (rte_be64_t)(RTE_STATIC_BSWAP64(v))
-#define RTE_LE16(v) (rte_be16_t)(v)
-#define RTE_LE32(v) (rte_be32_t)(v)
-#define RTE_LE64(v) (rte_be64_t)(v)
+#define RTE_LE16(v) (rte_le16_t)(v)
+#define RTE_LE32(v) (rte_le32_t)(v)
+#define RTE_LE64(v) (rte_le64_t)(v)
#else
#error Unsupported endianness.
#endif
--
2.23.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:23 [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
2020-04-27 13:23 ` [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum David Marchand
2020-04-27 13:23 ` [dpdk-dev] [PATCH 2/3] eal: fix typo in endian conversion macros David Marchand
@ 2020-04-27 13:23 ` David Marchand
2020-04-27 13:33 ` Andrew Rybchenko
2020-04-27 13:34 ` Bruce Richardson
2020-04-28 9:53 ` [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
3 siblings, 2 replies; 20+ messages in thread
From: David Marchand @ 2020-04-27 13:23 UTC (permalink / raw)
To: dev; +Cc: Ori Kam, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko, Xiao Zhang
Building OVS with dpdk, sparse complains about 64-bit constant being
passed as a normal integer that can't fit it:
error: constant 0xffffffffffffffff is so big it is unsigned long
Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/librte_ethdev/rte_flow.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
index 132b44edc6..1fb94f35e8 100644
--- a/lib/librte_ethdev/rte_flow.h
+++ b/lib/librte_ethdev/rte_flow.h
@@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
#ifndef __cplusplus
static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
.s_field = 0x01,
- .seid = RTE_BE64(0xffffffffffffffff),
+ .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
};
#endif
--
2.23.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:23 ` [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value David Marchand
@ 2020-04-27 13:33 ` Andrew Rybchenko
2020-04-27 13:34 ` Bruce Richardson
1 sibling, 0 replies; 20+ messages in thread
From: Andrew Rybchenko @ 2020-04-27 13:33 UTC (permalink / raw)
To: David Marchand, dev
Cc: Ori Kam, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko, Xiao Zhang
On 4/27/20 4:23 PM, David Marchand wrote:
> Building OVS with dpdk, sparse complains about 64-bit constant being
> passed as a normal integer that can't fit it:
> error: constant 0xffffffffffffffff is so big it is unsigned long
>
> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/librte_ethdev/rte_flow.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index 132b44edc6..1fb94f35e8 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> #ifndef __cplusplus
> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> .s_field = 0x01,
> - .seid = RTE_BE64(0xffffffffffffffff),
> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> };
> #endif
>
>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:23 ` [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value David Marchand
2020-04-27 13:33 ` Andrew Rybchenko
@ 2020-04-27 13:34 ` Bruce Richardson
2020-04-27 13:36 ` David Marchand
2020-04-27 13:39 ` Andrew Rybchenko
1 sibling, 2 replies; 20+ messages in thread
From: Bruce Richardson @ 2020-04-27 13:34 UTC (permalink / raw)
To: David Marchand
Cc: dev, Ori Kam, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko,
Xiao Zhang
On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> Building OVS with dpdk, sparse complains about 64-bit constant being
> passed as a normal integer that can't fit it:
> error: constant 0xffffffffffffffff is so big it is unsigned long
>
> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/librte_ethdev/rte_flow.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index 132b44edc6..1fb94f35e8 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> #ifndef __cplusplus
> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> .s_field = 0x01,
> - .seid = RTE_BE64(0xffffffffffffffff),
> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
Rather than cast, why not put "ULL" at the end. If we are going to cast,
why not just put "-1" in to save some digits.
/Bruce
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 2/3] eal: fix typo in endian conversion macros
2020-04-27 13:23 ` [dpdk-dev] [PATCH 2/3] eal: fix typo in endian conversion macros David Marchand
@ 2020-04-27 13:35 ` Bruce Richardson
0 siblings, 0 replies; 20+ messages in thread
From: Bruce Richardson @ 2020-04-27 13:35 UTC (permalink / raw)
To: David Marchand; +Cc: dev, stable, Adrien Mazarguil
On Mon, Apr 27, 2020 at 03:23:40PM +0200, David Marchand wrote:
> Caught by code inspection, for little endian, RTE_LEXX macros should
> provide rte_leXX_t type values.
>
> Fixes: b75667ef9f7e ("eal: add static endianness conversion macros")
> Cc: stable@dpdk.org
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:34 ` Bruce Richardson
@ 2020-04-27 13:36 ` David Marchand
2020-04-27 13:46 ` Ananyev, Konstantin
2020-04-27 13:39 ` Andrew Rybchenko
1 sibling, 1 reply; 20+ messages in thread
From: David Marchand @ 2020-04-27 13:36 UTC (permalink / raw)
To: Bruce Richardson
Cc: dev, Ori Kam, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko,
Xiao Zhang
On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
<bruce.richardson@intel.com> wrote:
>
> On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> > Building OVS with dpdk, sparse complains about 64-bit constant being
> > passed as a normal integer that can't fit it:
> > error: constant 0xffffffffffffffff is so big it is unsigned long
> >
> > Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> >
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > ---
> > lib/librte_ethdev/rte_flow.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> > index 132b44edc6..1fb94f35e8 100644
> > --- a/lib/librte_ethdev/rte_flow.h
> > +++ b/lib/librte_ethdev/rte_flow.h
> > @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> > #ifndef __cplusplus
> > static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> > .s_field = 0x01,
> > - .seid = RTE_BE64(0xffffffffffffffff),
> > + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
>
> Rather than cast, why not put "ULL" at the end. If we are going to cast,
> why not just put "-1" in to save some digits.
I preferred this form in the hope future developers who want
0x0fffffffffffffff will copy/paste this.
--
David Marchand
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:34 ` Bruce Richardson
2020-04-27 13:36 ` David Marchand
@ 2020-04-27 13:39 ` Andrew Rybchenko
2020-04-27 13:40 ` David Marchand
1 sibling, 1 reply; 20+ messages in thread
From: Andrew Rybchenko @ 2020-04-27 13:39 UTC (permalink / raw)
To: Bruce Richardson, David Marchand
Cc: dev, Ori Kam, Thomas Monjalon, Ferruh Yigit, Xiao Zhang
On 4/27/20 4:34 PM, Bruce Richardson wrote:
> On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
>> Building OVS with dpdk, sparse complains about 64-bit constant being
>> passed as a normal integer that can't fit it:
>> error: constant 0xffffffffffffffff is so big it is unsigned long
>>
>> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
>>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>> ---
>> lib/librte_ethdev/rte_flow.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
>> index 132b44edc6..1fb94f35e8 100644
>> --- a/lib/librte_ethdev/rte_flow.h
>> +++ b/lib/librte_ethdev/rte_flow.h
>> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
>> #ifndef __cplusplus
>> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
>> .s_field = 0x01,
>> - .seid = RTE_BE64(0xffffffffffffffff),
>> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> Rather than cast, why not put "ULL" at the end.
It is not a cast as far as I can see, it is exactly ULL (or UL):
/usr/include/stdint.h
# if __WORDSIZE == 64
# define UINT64_C(c) c ## UL
# else
# define UINT64_C(c) c ## ULL
# endif
> If we are going to cast, why not just put "-1" in to save some digits.
>
> /Bruce
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:39 ` Andrew Rybchenko
@ 2020-04-27 13:40 ` David Marchand
2020-04-27 13:43 ` Bruce Richardson
0 siblings, 1 reply; 20+ messages in thread
From: David Marchand @ 2020-04-27 13:40 UTC (permalink / raw)
To: Andrew Rybchenko
Cc: Bruce Richardson, dev, Ori Kam, Thomas Monjalon, Ferruh Yigit,
Xiao Zhang
On Mon, Apr 27, 2020 at 3:39 PM Andrew Rybchenko
<arybchenko@solarflare.com> wrote:
>
> On 4/27/20 4:34 PM, Bruce Richardson wrote:
> > On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> >> Building OVS with dpdk, sparse complains about 64-bit constant being
> >> passed as a normal integer that can't fit it:
> >> error: constant 0xffffffffffffffff is so big it is unsigned long
> >>
> >> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> >>
> >> Signed-off-by: David Marchand <david.marchand@redhat.com>
> >> ---
> >> lib/librte_ethdev/rte_flow.h | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> >> index 132b44edc6..1fb94f35e8 100644
> >> --- a/lib/librte_ethdev/rte_flow.h
> >> +++ b/lib/librte_ethdev/rte_flow.h
> >> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> >> #ifndef __cplusplus
> >> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> >> .s_field = 0x01,
> >> - .seid = RTE_BE64(0xffffffffffffffff),
> >> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> > Rather than cast, why not put "ULL" at the end.
>
> It is not a cast as far as I can see, it is exactly ULL (or UL):
> /usr/include/stdint.h
> # if __WORDSIZE == 64
> # define UINT64_C(c) c ## UL
> # else
> # define UINT64_C(c) c ## ULL
> # endif
Yes.
--
David Marchand
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:40 ` David Marchand
@ 2020-04-27 13:43 ` Bruce Richardson
0 siblings, 0 replies; 20+ messages in thread
From: Bruce Richardson @ 2020-04-27 13:43 UTC (permalink / raw)
To: David Marchand
Cc: Andrew Rybchenko, dev, Ori Kam, Thomas Monjalon, Ferruh Yigit,
Xiao Zhang
On Mon, Apr 27, 2020 at 03:40:30PM +0200, David Marchand wrote:
> On Mon, Apr 27, 2020 at 3:39 PM Andrew Rybchenko
> <arybchenko@solarflare.com> wrote:
> >
> > On 4/27/20 4:34 PM, Bruce Richardson wrote:
> > > On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> > >> Building OVS with dpdk, sparse complains about 64-bit constant being
> > >> passed as a normal integer that can't fit it:
> > >> error: constant 0xffffffffffffffff is so big it is unsigned long
> > >>
> > >> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> > >>
> > >> Signed-off-by: David Marchand <david.marchand@redhat.com>
> > >> ---
> > >> lib/librte_ethdev/rte_flow.h | 2 +-
> > >> 1 file changed, 1 insertion(+), 1 deletion(-)
> > >>
> > >> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> > >> index 132b44edc6..1fb94f35e8 100644
> > >> --- a/lib/librte_ethdev/rte_flow.h
> > >> +++ b/lib/librte_ethdev/rte_flow.h
> > >> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> > >> #ifndef __cplusplus
> > >> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> > >> .s_field = 0x01,
> > >> - .seid = RTE_BE64(0xffffffffffffffff),
> > >> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> > > Rather than cast, why not put "ULL" at the end.
> >
> > It is not a cast as far as I can see, it is exactly ULL (or UL):
> > /usr/include/stdint.h
> > # if __WORDSIZE == 64
> > # define UINT64_C(c) c ## UL
> > # else
> > # define UINT64_C(c) c ## ULL
> > # endif
>
> Yes.
>
Thanks. I'd prefer just sticking on the "ULL" myself as it's shorter, but
this is ok.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:36 ` David Marchand
@ 2020-04-27 13:46 ` Ananyev, Konstantin
2020-04-27 14:00 ` David Marchand
0 siblings, 1 reply; 20+ messages in thread
From: Ananyev, Konstantin @ 2020-04-27 13:46 UTC (permalink / raw)
To: David Marchand, Richardson, Bruce
Cc: dev, Ori Kam, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko,
Zhang, Xiao
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
> Sent: Monday, April 27, 2020 2:37 PM
> To: Richardson, Bruce <bruce.richardson@intel.com>
> Cc: dev <dev@dpdk.org>; Ori Kam <orika@mellanox.com>; Thomas Monjalon <thomas@monjalon.net>; Yigit, Ferruh
> <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; Zhang, Xiao <xiao.zhang@intel.com>
> Subject: Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
>
> On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
> <bruce.richardson@intel.com> wrote:
> >
> > On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> > > Building OVS with dpdk, sparse complains about 64-bit constant being
> > > passed as a normal integer that can't fit it:
> > > error: constant 0xffffffffffffffff is so big it is unsigned long
> > >
> > > Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> > >
> > > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > > ---
> > > lib/librte_ethdev/rte_flow.h | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> > > index 132b44edc6..1fb94f35e8 100644
> > > --- a/lib/librte_ethdev/rte_flow.h
> > > +++ b/lib/librte_ethdev/rte_flow.h
> > > @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> > > #ifndef __cplusplus
> > > static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> > > .s_field = 0x01,
> > > - .seid = RTE_BE64(0xffffffffffffffff),
> > > + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> >
> > Rather than cast, why not put "ULL" at the end. If we are going to cast,
> > why not just put "-1" in to save some digits.
>
> I preferred this form in the hope future developers who want
> 0x0fffffffffffffff will copy/paste this.
>
As I remember there should be UINT64_MAX in stdint.h.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 13:46 ` Ananyev, Konstantin
@ 2020-04-27 14:00 ` David Marchand
2020-04-27 14:07 ` Ferruh Yigit
2020-04-28 9:27 ` Thomas Monjalon
0 siblings, 2 replies; 20+ messages in thread
From: David Marchand @ 2020-04-27 14:00 UTC (permalink / raw)
To: Ananyev, Konstantin
Cc: Richardson, Bruce, dev, Ori Kam, Thomas Monjalon, Yigit, Ferruh,
Andrew Rybchenko, Zhang, Xiao
On Mon, Apr 27, 2020 at 3:47 PM Ananyev, Konstantin
<konstantin.ananyev@intel.com> wrote:
>
>
>
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
> > Sent: Monday, April 27, 2020 2:37 PM
> > To: Richardson, Bruce <bruce.richardson@intel.com>
> > Cc: dev <dev@dpdk.org>; Ori Kam <orika@mellanox.com>; Thomas Monjalon <thomas@monjalon.net>; Yigit, Ferruh
> > <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; Zhang, Xiao <xiao.zhang@intel.com>
> > Subject: Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
> >
> > On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
> > <bruce.richardson@intel.com> wrote:
> > >
> > > On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> > > > Building OVS with dpdk, sparse complains about 64-bit constant being
> > > > passed as a normal integer that can't fit it:
> > > > error: constant 0xffffffffffffffff is so big it is unsigned long
> > > >
> > > > Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> > > >
> > > > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > > > ---
> > > > lib/librte_ethdev/rte_flow.h | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> > > > index 132b44edc6..1fb94f35e8 100644
> > > > --- a/lib/librte_ethdev/rte_flow.h
> > > > +++ b/lib/librte_ethdev/rte_flow.h
> > > > @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> > > > #ifndef __cplusplus
> > > > static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> > > > .s_field = 0x01,
> > > > - .seid = RTE_BE64(0xffffffffffffffff),
> > > > + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> > >
> > > Rather than cast, why not put "ULL" at the end. If we are going to cast,
> > > why not just put "-1" in to save some digits.
> >
> > I preferred this form in the hope future developers who want
> > 0x0fffffffffffffff will copy/paste this.
> >
>
> As I remember there should be UINT64_MAX in stdint.h.
Yes, we could go with:
+ .seid = RTE_BE64(UINT64_MAX),
And then next time, for any value like 0x0fff ffff ffff ffff (had to
group the digits of what I had written), pretty sure we will miss this
and I will catch it only when building ovs.
--
David Marchand
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 14:00 ` David Marchand
@ 2020-04-27 14:07 ` Ferruh Yigit
2020-04-27 14:12 ` David Marchand
2020-04-28 9:27 ` Thomas Monjalon
1 sibling, 1 reply; 20+ messages in thread
From: Ferruh Yigit @ 2020-04-27 14:07 UTC (permalink / raw)
To: David Marchand, Ananyev, Konstantin
Cc: Richardson, Bruce, dev, Ori Kam, Thomas Monjalon,
Andrew Rybchenko, Zhang, Xiao
On 4/27/2020 3:00 PM, David Marchand wrote:
> On Mon, Apr 27, 2020 at 3:47 PM Ananyev, Konstantin
> <konstantin.ananyev@intel.com> wrote:
>>
>>
>>
>>> -----Original Message-----
>>> From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
>>> Sent: Monday, April 27, 2020 2:37 PM
>>> To: Richardson, Bruce <bruce.richardson@intel.com>
>>> Cc: dev <dev@dpdk.org>; Ori Kam <orika@mellanox.com>; Thomas Monjalon <thomas@monjalon.net>; Yigit, Ferruh
>>> <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; Zhang, Xiao <xiao.zhang@intel.com>
>>> Subject: Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
>>>
>>> On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
>>> <bruce.richardson@intel.com> wrote:
>>>>
>>>> On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
>>>>> Building OVS with dpdk, sparse complains about 64-bit constant being
>>>>> passed as a normal integer that can't fit it:
>>>>> error: constant 0xffffffffffffffff is so big it is unsigned long
>>>>>
>>>>> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
>>>>>
>>>>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>>>>> ---
>>>>> lib/librte_ethdev/rte_flow.h | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
>>>>> index 132b44edc6..1fb94f35e8 100644
>>>>> --- a/lib/librte_ethdev/rte_flow.h
>>>>> +++ b/lib/librte_ethdev/rte_flow.h
>>>>> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
>>>>> #ifndef __cplusplus
>>>>> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
>>>>> .s_field = 0x01,
>>>>> - .seid = RTE_BE64(0xffffffffffffffff),
>>>>> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
>>>>
>>>> Rather than cast, why not put "ULL" at the end. If we are going to cast,
>>>> why not just put "-1" in to save some digits.
>>>
>>> I preferred this form in the hope future developers who want
>>> 0x0fffffffffffffff will copy/paste this.
>>>
>>
>> As I remember there should be UINT64_MAX in stdint.h.
>
> Yes, we could go with:
> + .seid = RTE_BE64(UINT64_MAX),
This is something else but if the value is 'UINT64_MAX', do we need 'RTE_BE64'
macro?
>
> And then next time, for any value like 0x0fff ffff ffff ffff (had to
> group the digits of what I had written), pretty sure we will miss this
> and I will catch it only when building ovs.
>
>
> --
> David Marchand
>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 14:07 ` Ferruh Yigit
@ 2020-04-27 14:12 ` David Marchand
2020-04-27 14:14 ` Ferruh Yigit
0 siblings, 1 reply; 20+ messages in thread
From: David Marchand @ 2020-04-27 14:12 UTC (permalink / raw)
To: Ferruh Yigit
Cc: Ananyev, Konstantin, Richardson, Bruce, dev, Ori Kam,
Thomas Monjalon, Andrew Rybchenko, Zhang, Xiao
On Mon, Apr 27, 2020 at 4:07 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 4/27/2020 3:00 PM, David Marchand wrote:
> > On Mon, Apr 27, 2020 at 3:47 PM Ananyev, Konstantin
> > <konstantin.ananyev@intel.com> wrote:
> >>
> >>
> >>
> >>> -----Original Message-----
> >>> From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
> >>> Sent: Monday, April 27, 2020 2:37 PM
> >>> To: Richardson, Bruce <bruce.richardson@intel.com>
> >>> Cc: dev <dev@dpdk.org>; Ori Kam <orika@mellanox.com>; Thomas Monjalon <thomas@monjalon.net>; Yigit, Ferruh
> >>> <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; Zhang, Xiao <xiao.zhang@intel.com>
> >>> Subject: Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
> >>>
> >>> On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
> >>> <bruce.richardson@intel.com> wrote:
> >>>>
> >>>> On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> >>>>> Building OVS with dpdk, sparse complains about 64-bit constant being
> >>>>> passed as a normal integer that can't fit it:
> >>>>> error: constant 0xffffffffffffffff is so big it is unsigned long
> >>>>>
> >>>>> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> >>>>>
> >>>>> Signed-off-by: David Marchand <david.marchand@redhat.com>
> >>>>> ---
> >>>>> lib/librte_ethdev/rte_flow.h | 2 +-
> >>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> >>>>> index 132b44edc6..1fb94f35e8 100644
> >>>>> --- a/lib/librte_ethdev/rte_flow.h
> >>>>> +++ b/lib/librte_ethdev/rte_flow.h
> >>>>> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
> >>>>> #ifndef __cplusplus
> >>>>> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> >>>>> .s_field = 0x01,
> >>>>> - .seid = RTE_BE64(0xffffffffffffffff),
> >>>>> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> >>>>
> >>>> Rather than cast, why not put "ULL" at the end. If we are going to cast,
> >>>> why not just put "-1" in to save some digits.
> >>>
> >>> I preferred this form in the hope future developers who want
> >>> 0x0fffffffffffffff will copy/paste this.
> >>>
> >>
> >> As I remember there should be UINT64_MAX in stdint.h.
> >
> > Yes, we could go with:
> > + .seid = RTE_BE64(UINT64_MAX),
>
> This is something else but if the value is 'UINT64_MAX', do we need 'RTE_BE64'
> macro?
In OVS case, sparse validates that a rte_be64_t value (mapped to
ovs_be64_t) is passed to .seid.
.../build/install/usr/local/include/rte_flow.h:1537:17: error:
incorrect type in initializer (different base types)
.../build/install/usr/local/include/rte_flow.h:1537:17: expected
restricted ovs_be64 [usertype] seid
.../build/install/usr/local/include/rte_flow.h:1537:17: got unsigned long
--
David Marchand
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 14:12 ` David Marchand
@ 2020-04-27 14:14 ` Ferruh Yigit
0 siblings, 0 replies; 20+ messages in thread
From: Ferruh Yigit @ 2020-04-27 14:14 UTC (permalink / raw)
To: David Marchand
Cc: Ananyev, Konstantin, Richardson, Bruce, dev, Ori Kam,
Thomas Monjalon, Andrew Rybchenko, Zhang, Xiao
On 4/27/2020 3:12 PM, David Marchand wrote:
> On Mon, Apr 27, 2020 at 4:07 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>>
>> On 4/27/2020 3:00 PM, David Marchand wrote:
>>> On Mon, Apr 27, 2020 at 3:47 PM Ananyev, Konstantin
>>> <konstantin.ananyev@intel.com> wrote:
>>>>
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
>>>>> Sent: Monday, April 27, 2020 2:37 PM
>>>>> To: Richardson, Bruce <bruce.richardson@intel.com>
>>>>> Cc: dev <dev@dpdk.org>; Ori Kam <orika@mellanox.com>; Thomas Monjalon <thomas@monjalon.net>; Yigit, Ferruh
>>>>> <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; Zhang, Xiao <xiao.zhang@intel.com>
>>>>> Subject: Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
>>>>>
>>>>> On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
>>>>> <bruce.richardson@intel.com> wrote:
>>>>>>
>>>>>> On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
>>>>>>> Building OVS with dpdk, sparse complains about 64-bit constant being
>>>>>>> passed as a normal integer that can't fit it:
>>>>>>> error: constant 0xffffffffffffffff is so big it is unsigned long
>>>>>>>
>>>>>>> Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
>>>>>>>
>>>>>>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>>>>>>> ---
>>>>>>> lib/librte_ethdev/rte_flow.h | 2 +-
>>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
>>>>>>> index 132b44edc6..1fb94f35e8 100644
>>>>>>> --- a/lib/librte_ethdev/rte_flow.h
>>>>>>> +++ b/lib/librte_ethdev/rte_flow.h
>>>>>>> @@ -1534,7 +1534,7 @@ struct rte_flow_item_pfcp {
>>>>>>> #ifndef __cplusplus
>>>>>>> static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
>>>>>>> .s_field = 0x01,
>>>>>>> - .seid = RTE_BE64(0xffffffffffffffff),
>>>>>>> + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
>>>>>>
>>>>>> Rather than cast, why not put "ULL" at the end. If we are going to cast,
>>>>>> why not just put "-1" in to save some digits.
>>>>>
>>>>> I preferred this form in the hope future developers who want
>>>>> 0x0fffffffffffffff will copy/paste this.
>>>>>
>>>>
>>>> As I remember there should be UINT64_MAX in stdint.h.
>>>
>>> Yes, we could go with:
>>> + .seid = RTE_BE64(UINT64_MAX),
>>
>> This is something else but if the value is 'UINT64_MAX', do we need 'RTE_BE64'
>> macro?
>
> In OVS case, sparse validates that a rte_be64_t value (mapped to
> ovs_be64_t) is passed to .seid.
>
> .../build/install/usr/local/include/rte_flow.h:1537:17: error:
> incorrect type in initializer (different base types)
> .../build/install/usr/local/include/rte_flow.h:1537:17: expected
> restricted ovs_be64 [usertype] seid
> .../build/install/usr/local/include/rte_flow.h:1537:17: got unsigned long
>
>
Got it, thanks for clarification.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum
2020-04-27 13:23 ` [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum David Marchand
@ 2020-04-27 14:55 ` Ananyev, Konstantin
0 siblings, 0 replies; 20+ messages in thread
From: Ananyev, Konstantin @ 2020-04-27 14:55 UTC (permalink / raw)
To: David Marchand, dev; +Cc: Honnappa Nagarahalli
>
> Some popular vswitch implementation might use a gcc option that
> complains about missing enums in switch statements.
> Fix this by listing all possible values.
>
> Fixes: 664ff4b1729b ("ring: introduce peek style API")
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/librte_ring/rte_ring_peek.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/lib/librte_ring/rte_ring_peek.h b/lib/librte_ring/rte_ring_peek.h
> index 9e7f4db323..d5e6ea1cf3 100644
> --- a/lib/librte_ring/rte_ring_peek.h
> +++ b/lib/librte_ring/rte_ring_peek.h
> @@ -68,6 +68,8 @@ __rte_ring_do_enqueue_start(struct rte_ring *r, uint32_t n,
> n = __rte_ring_hts_move_prod_head(r, n, behavior,
> &head, &free);
> break;
> + case RTE_RING_SYNC_MT:
> + case RTE_RING_SYNC_MT_RTS:
> default:
> /* unsupported mode, shouldn't be here */
> RTE_ASSERT(0);
> @@ -217,6 +219,8 @@ rte_ring_enqueue_elem_finish(struct rte_ring *r, const void *obj_table,
> __rte_ring_enqueue_elems(r, tail, obj_table, esize, n);
> __rte_ring_hts_set_head_tail(&r->hts_prod, tail, n, 1);
> break;
> + case RTE_RING_SYNC_MT:
> + case RTE_RING_SYNC_MT_RTS:
> default:
> /* unsupported mode, shouldn't be here */
> RTE_ASSERT(0);
> @@ -263,6 +267,8 @@ __rte_ring_do_dequeue_start(struct rte_ring *r, void *obj_table,
> n = __rte_ring_hts_move_cons_head(r, n, behavior,
> &head, &avail);
> break;
> + case RTE_RING_SYNC_MT:
> + case RTE_RING_SYNC_MT_RTS:
> default:
> /* unsupported mode, shouldn't be here */
> RTE_ASSERT(0);
> @@ -414,6 +420,8 @@ rte_ring_dequeue_elem_finish(struct rte_ring *r, unsigned int n)
> n = __rte_ring_hts_get_tail(&r->hts_cons, &tail, n);
> __rte_ring_hts_set_head_tail(&r->hts_cons, tail, n, 0);
> break;
> + case RTE_RING_SYNC_MT:
> + case RTE_RING_SYNC_MT_RTS:
> default:
> /* unsupported mode, shouldn't be here */
> RTE_ASSERT(0);
> --
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
> 2.23.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-27 14:00 ` David Marchand
2020-04-27 14:07 ` Ferruh Yigit
@ 2020-04-28 9:27 ` Thomas Monjalon
2020-05-06 14:37 ` Morten Brørup
1 sibling, 1 reply; 20+ messages in thread
From: Thomas Monjalon @ 2020-04-28 9:27 UTC (permalink / raw)
To: David Marchand
Cc: Ananyev, Konstantin, dev, Richardson, Bruce, Ori Kam, Yigit,
Ferruh, Andrew Rybchenko, Zhang, Xiao
27/04/2020 16:00, David Marchand:
> On Mon, Apr 27, 2020 at 3:47 PM Ananyev, Konstantin wrote:
> > From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
> > > On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
> > > <bruce.richardson@intel.com> wrote:
> > > > On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> > > > > Building OVS with dpdk, sparse complains about 64-bit constant being
> > > > > passed as a normal integer that can't fit it:
> > > > > error: constant 0xffffffffffffffff is so big it is unsigned long
> > > > >
> > > > > Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> > > > >
> > > > > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > > > > ---
> > > > > --- a/lib/librte_ethdev/rte_flow.h
> > > > > +++ b/lib/librte_ethdev/rte_flow.h
> > > > > static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
> > > > > .s_field = 0x01,
> > > > > - .seid = RTE_BE64(0xffffffffffffffff),
> > > > > + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> > > >
> > > > Rather than cast, why not put "ULL" at the end. If we are going to cast,
> > > > why not just put "-1" in to save some digits.
> > >
> > > I preferred this form in the hope future developers who want
> > > 0x0fffffffffffffff will copy/paste this.
> > >
> >
> > As I remember there should be UINT64_MAX in stdint.h.
>
> Yes, we could go with:
> + .seid = RTE_BE64(UINT64_MAX),
>
> And then next time, for any value like 0x0fff ffff ffff ffff (had to
> group the digits of what I had written), pretty sure we will miss this
> and I will catch it only when building ovs.
I agree with David (in general and especially here).
RTE_BE64 is required for static analyzers and is an explicit info.
UINT64_C is better than ULL suffix because it
- is generic
- gives size explicitly
UINT64_C(0xffffffffffffffff) is better than UINT64_MAX because
- rte_flow.h has a lot of bitmasks
- it is copy/paste safe
Acked-by: Thomas Monjalon <thomas@monjalon.net>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS
2020-04-27 13:23 [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
` (2 preceding siblings ...)
2020-04-27 13:23 ` [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value David Marchand
@ 2020-04-28 9:53 ` David Marchand
3 siblings, 0 replies; 20+ messages in thread
From: David Marchand @ 2020-04-28 9:53 UTC (permalink / raw)
To: dev
On Mon, Apr 27, 2020 at 3:24 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> Couple of fixes caught while checking OVS integration.
>
> David Marchand (3):
> ring: fix build with -Wswitch-enum
> eal: fix typo in endian conversion macros
> ethdev: fix build warning on 64-bit value
>
> lib/librte_eal/include/generic/rte_byteorder.h | 6 +++---
> lib/librte_ethdev/rte_flow.h | 2 +-
> lib/librte_ring/rte_ring_peek.h | 8 ++++++++
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
Series applied.
--
David Marchand
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value
2020-04-28 9:27 ` Thomas Monjalon
@ 2020-05-06 14:37 ` Morten Brørup
0 siblings, 0 replies; 20+ messages in thread
From: Morten Brørup @ 2020-05-06 14:37 UTC (permalink / raw)
To: Thomas Monjalon, David Marchand
Cc: Ananyev, Konstantin, dev, Richardson, Bruce, Ori Kam, Yigit,
Ferruh, Andrew Rybchenko, Zhang, Xiao
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon
> Sent: Tuesday, April 28, 2020 11:28 AM
>
> 27/04/2020 16:00, David Marchand:
> > On Mon, Apr 27, 2020 at 3:47 PM Ananyev, Konstantin wrote:
> > > From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
> > > > On Mon, Apr 27, 2020 at 3:34 PM Bruce Richardson
> > > > <bruce.richardson@intel.com> wrote:
> > > > > On Mon, Apr 27, 2020 at 03:23:41PM +0200, David Marchand wrote:
> > > > > > Building OVS with dpdk, sparse complains about 64-bit
> constant being
> > > > > > passed as a normal integer that can't fit it:
> > > > > > error: constant 0xffffffffffffffff is so big it is unsigned
> long
> > > > > >
> > > > > > Fixes: ecbc8570131d ("ethdev: add PFCP header to flow API")
> > > > > >
> > > > > > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > > > > > ---
> > > > > > --- a/lib/librte_ethdev/rte_flow.h
> > > > > > +++ b/lib/librte_ethdev/rte_flow.h
> > > > > > static const struct rte_flow_item_pfcp
> rte_flow_item_pfcp_mask = {
> > > > > > .s_field = 0x01,
> > > > > > - .seid = RTE_BE64(0xffffffffffffffff),
> > > > > > + .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
> > > > >
> > > > > Rather than cast, why not put "ULL" at the end. If we are going
> to cast,
> > > > > why not just put "-1" in to save some digits.
> > > >
> > > > I preferred this form in the hope future developers who want
> > > > 0x0fffffffffffffff will copy/paste this.
> > > >
> > >
> > > As I remember there should be UINT64_MAX in stdint.h.
> >
> > Yes, we could go with:
> > + .seid = RTE_BE64(UINT64_MAX),
> >
> > And then next time, for any value like 0x0fff ffff ffff ffff (had to
> > group the digits of what I had written), pretty sure we will miss
> this
> > and I will catch it only when building ovs.
>
> I agree with David (in general and especially here).
>
> RTE_BE64 is required for static analyzers and is an explicit info.
>
> UINT64_C is better than ULL suffix because it
> - is generic
> - gives size explicitly
Certainly. Explicit is preferred in code for embedded systems.
"unsigned long long" means 64 bit or more, which also applies to the "ULL" postfix.
"uint64_t" and "UINT64_C" means exactly 64 bit.
>
> UINT64_C(0xffffffffffffffff) is better than UINT64_MAX because
> - rte_flow.h has a lot of bitmasks
> - it is copy/paste safe
>
> Acked-by: Thomas Monjalon <thomas@monjalon.net>
>
And shouldn't the struct rte_flow_item_pfcp be packed? I would expect the compiler to add 32 bit padding before seid to ensure its 64 bit alignment.
Med venlig hilsen / kind regards
- Morten Brørup
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2020-05-06 14:37 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-27 13:23 [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
2020-04-27 13:23 ` [dpdk-dev] [PATCH 1/3] ring: fix build with -Wswitch-enum David Marchand
2020-04-27 14:55 ` Ananyev, Konstantin
2020-04-27 13:23 ` [dpdk-dev] [PATCH 2/3] eal: fix typo in endian conversion macros David Marchand
2020-04-27 13:35 ` Bruce Richardson
2020-04-27 13:23 ` [dpdk-dev] [PATCH 3/3] ethdev: fix build warning on 64-bit value David Marchand
2020-04-27 13:33 ` Andrew Rybchenko
2020-04-27 13:34 ` Bruce Richardson
2020-04-27 13:36 ` David Marchand
2020-04-27 13:46 ` Ananyev, Konstantin
2020-04-27 14:00 ` David Marchand
2020-04-27 14:07 ` Ferruh Yigit
2020-04-27 14:12 ` David Marchand
2020-04-27 14:14 ` Ferruh Yigit
2020-04-28 9:27 ` Thomas Monjalon
2020-05-06 14:37 ` Morten Brørup
2020-04-27 13:39 ` Andrew Rybchenko
2020-04-27 13:40 ` David Marchand
2020-04-27 13:43 ` Bruce Richardson
2020-04-28 9:53 ` [dpdk-dev] [PATCH 0/3] 20.05-rc1 fixes for OVS David Marchand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).