common/mlx5: redefine Netlink include
Checks
Commit Message
The new RDMA-CORE versions may have the same sub-path to include the
linux Netlink header file.
It uses the pre-proccessor command #include_next what breaks the PMD gcc
compilation of common/mlx5_netlink.h file in debug mode.
Use specific include for linux/netlink.h to be taken from
/usr/include/linux.
Signed-off-by: Matan Azrad <matan@mellanox.com>
---
drivers/common/mlx5/mlx5_nl.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
> -----Original Message-----
> From: Matan Azrad <matan@mellanox.com>
> Sent: Sunday, February 2, 2020 17:59
> To: Slava Ovsiienko <viacheslavo@mellanox.com>
> Cc: dev@dpdk.org
> Subject: [PATCH] common/mlx5: redefine Netlink include
>
> The new RDMA-CORE versions may have the same sub-path to include the
> linux Netlink header file.
>
> It uses the pre-proccessor command #include_next what breaks the PMD gcc
> compilation of common/mlx5_netlink.h file in debug mode.
>
> Use specific include for linux/netlink.h to be taken from /usr/include/linux.
>
> Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
> drivers/common/mlx5/mlx5_nl.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/common/mlx5/mlx5_nl.h
> b/drivers/common/mlx5/mlx5_nl.h index 2c3f837..ebaa655 100644
> --- a/drivers/common/mlx5/mlx5_nl.h
> +++ b/drivers/common/mlx5/mlx5_nl.h
> @@ -5,7 +5,7 @@
> #ifndef RTE_PMD_MLX5_NL_H_
> #define RTE_PMD_MLX5_NL_H_
>
> -#include <linux/netlink.h>
> +#include "/usr/include/linux/netlink.h"
>
> #include <rte_ether.h>
>
> --
> 1.8.3.1
Hi,
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Matan Azrad
> Sent: Sunday, February 2, 2020 5:59 PM
> To: Slava Ovsiienko <viacheslavo@mellanox.com>
> Cc: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] common/mlx5: redefine Netlink include
>
> The new RDMA-CORE versions may have the same sub-path to include the
> linux Netlink header file.
>
> It uses the pre-proccessor command #include_next what breaks the PMD
> gcc compilation of common/mlx5_netlink.h file in debug mode.
>
> Use specific include for linux/netlink.h to be taken from /usr/include/linux.
>
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
> drivers/common/mlx5/mlx5_nl.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/common/mlx5/mlx5_nl.h
> b/drivers/common/mlx5/mlx5_nl.h index 2c3f837..ebaa655 100644
> --- a/drivers/common/mlx5/mlx5_nl.h
> +++ b/drivers/common/mlx5/mlx5_nl.h
> @@ -5,7 +5,7 @@
> #ifndef RTE_PMD_MLX5_NL_H_
> #define RTE_PMD_MLX5_NL_H_
>
> -#include <linux/netlink.h>
> +#include "/usr/include/linux/netlink.h"
>
> #include <rte_ether.h>
>
> --
> 1.8.3.1
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
On 2/2/2020 3:59 PM, Matan Azrad wrote:
> The new RDMA-CORE versions may have the same sub-path to include the
> linux Netlink header file.
>
> It uses the pre-proccessor command #include_next what breaks the PMD gcc
> compilation of common/mlx5_netlink.h file in debug mode.
>
> Use specific include for linux/netlink.h to be taken from
> /usr/include/linux.
>
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
> drivers/common/mlx5/mlx5_nl.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/common/mlx5/mlx5_nl.h b/drivers/common/mlx5/mlx5_nl.h
> index 2c3f837..ebaa655 100644
> --- a/drivers/common/mlx5/mlx5_nl.h
> +++ b/drivers/common/mlx5/mlx5_nl.h
> @@ -5,7 +5,7 @@
> #ifndef RTE_PMD_MLX5_NL_H_
> #define RTE_PMD_MLX5_NL_H_
>
> -#include <linux/netlink.h>
> +#include "/usr/include/linux/netlink.h"
It is odd to change the include to the exact path, can't this be fixed other
way, can you please give more details on the issue and the macro etc..?
From: Ferruh Yigit
> On 2/2/2020 3:59 PM, Matan Azrad wrote:
> > The new RDMA-CORE versions may have the same sub-path to include the
> > linux Netlink header file.
> >
> > It uses the pre-proccessor command #include_next what breaks the PMD
> > gcc compilation of common/mlx5_netlink.h file in debug mode.
> >
> > Use specific include for linux/netlink.h to be taken from
> > /usr/include/linux.
> >
> > Signed-off-by: Matan Azrad <matan@mellanox.com>
> > ---
> > drivers/common/mlx5/mlx5_nl.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/common/mlx5/mlx5_nl.h
> > b/drivers/common/mlx5/mlx5_nl.h index 2c3f837..ebaa655 100644
> > --- a/drivers/common/mlx5/mlx5_nl.h
> > +++ b/drivers/common/mlx5/mlx5_nl.h
> > @@ -5,7 +5,7 @@
> > #ifndef RTE_PMD_MLX5_NL_H_
> > #define RTE_PMD_MLX5_NL_H_
> >
> > -#include <linux/netlink.h>
> > +#include "/usr/include/linux/netlink.h"
>
> It is odd to change the include to the exact path, can't this be fixed other
> way, can you please give more details on the issue and the macro etc..?
I tried to find other solution but didn't find.
As I wrote in commit log, the #include_next (from RDMA-CORE) is not compiled when we compile with mlx5 debug mode (pedantic).
The error is " error: #include_next is a GCC extension [-Werror]"
Even If I wrap the relevant include line to disable pedantic it is not compiled with gcc.
So, I changed to include specific path from the linux headers.
Do you have other suggestion?
Matan
On 2/3/2020 3:02 PM, Matan Azrad wrote:
>
>
> From: Ferruh Yigit
>> On 2/2/2020 3:59 PM, Matan Azrad wrote:
>>> The new RDMA-CORE versions may have the same sub-path to include the
>>> linux Netlink header file.
>>>
>>> It uses the pre-proccessor command #include_next what breaks the PMD
>>> gcc compilation of common/mlx5_netlink.h file in debug mode.
>>>
>>> Use specific include for linux/netlink.h to be taken from
>>> /usr/include/linux.
>>>
>>> Signed-off-by: Matan Azrad <matan@mellanox.com>
>>> ---
>>> drivers/common/mlx5/mlx5_nl.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/common/mlx5/mlx5_nl.h
>>> b/drivers/common/mlx5/mlx5_nl.h index 2c3f837..ebaa655 100644
>>> --- a/drivers/common/mlx5/mlx5_nl.h
>>> +++ b/drivers/common/mlx5/mlx5_nl.h
>>> @@ -5,7 +5,7 @@
>>> #ifndef RTE_PMD_MLX5_NL_H_
>>> #define RTE_PMD_MLX5_NL_H_
>>>
>>> -#include <linux/netlink.h>
>>> +#include "/usr/include/linux/netlink.h"
>>
>> It is odd to change the include to the exact path, can't this be fixed other
>> way, can you please give more details on the issue and the macro etc..?
>
> I tried to find other solution but didn't find.
>
> As I wrote in commit log, the #include_next (from RDMA-CORE) is not compiled when we compile with mlx5 debug mode (pedantic).
> The error is " error: #include_next is a GCC extension [-Werror]"
> Even If I wrap the relevant include line to disable pedantic it is not compiled with gcc.
>
> So, I changed to include specific path from the linux headers.
Is there another "linux/netlink.h" in the rdma-core? In which version, I can't
find it.
Isn't rdma libraries/header installed into system folders? Are you providing -I
to include a custom path, does it work if you provide it as '-idirafter' instead?
Please provide more details than commit log...
>
> Do you have other suggestion?
drop 'pedantic'? Why mlx drivers are using it?
Hi
From: Ferruh Yigit
> On 2/3/2020 3:02 PM, Matan Azrad wrote:
> >
> >
> > From: Ferruh Yigit
> >> On 2/2/2020 3:59 PM, Matan Azrad wrote:
> >>> The new RDMA-CORE versions may have the same sub-path to include
> the
> >>> linux Netlink header file.
> >>>
> >>> It uses the pre-proccessor command #include_next what breaks the
> PMD
> >>> gcc compilation of common/mlx5_netlink.h file in debug mode.
> >>>
> >>> Use specific include for linux/netlink.h to be taken from
> >>> /usr/include/linux.
> >>>
> >>> Signed-off-by: Matan Azrad <matan@mellanox.com>
> >>> ---
> >>> drivers/common/mlx5/mlx5_nl.h | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/common/mlx5/mlx5_nl.h
> >>> b/drivers/common/mlx5/mlx5_nl.h index 2c3f837..ebaa655 100644
> >>> --- a/drivers/common/mlx5/mlx5_nl.h
> >>> +++ b/drivers/common/mlx5/mlx5_nl.h
> >>> @@ -5,7 +5,7 @@
> >>> #ifndef RTE_PMD_MLX5_NL_H_
> >>> #define RTE_PMD_MLX5_NL_H_
> >>>
> >>> -#include <linux/netlink.h>
> >>> +#include "/usr/include/linux/netlink.h"
> >>
> >> It is odd to change the include to the exact path, can't this be
> >> fixed other way, can you please give more details on the issue and the
> macro etc..?
> >
> > I tried to find other solution but didn't find.
> >
> > As I wrote in commit log, the #include_next (from RDMA-CORE) is not
> compiled when we compile with mlx5 debug mode (pedantic).
> > The error is " error: #include_next is a GCC extension [-Werror]"
> > Even If I wrap the relevant include line to disable pedantic it is not compiled
> with gcc.
> >
> > So, I changed to include specific path from the linux headers.
> Is there another "linux/netlink.h" in the rdma-core? In which version, I can't
> find it.
>
> Isn't rdma libraries/header installed into system folders? Are you providing -I
> to include a custom path, does it work if you provide it as '-idirafter' instead?
Yes you right, -idirafter is working, thanks.
You can drop this patch.
On Sun, 2 Feb 2020 15:59:13 +0000
Matan Azrad <matan@mellanox.com> wrote:
> The new RDMA-CORE versions may have the same sub-path to include the
> linux Netlink header file.
>
> It uses the pre-proccessor command #include_next what breaks the PMD gcc
> compilation of common/mlx5_netlink.h file in debug mode.
>
> Use specific include for linux/netlink.h to be taken from
> /usr/include/linux.
>
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
> drivers/common/mlx5/mlx5_nl.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/common/mlx5/mlx5_nl.h b/drivers/common/mlx5/mlx5_nl.h
> index 2c3f837..ebaa655 100644
> --- a/drivers/common/mlx5/mlx5_nl.h
> +++ b/drivers/common/mlx5/mlx5_nl.h
> @@ -5,7 +5,7 @@
> #ifndef RTE_PMD_MLX5_NL_H_
> #define RTE_PMD_MLX5_NL_H_
>
> -#include <linux/netlink.h>
> +#include "/usr/include/linux/netlink.h"
I think this should be fixed with CFLAGS, not hard coding path to netlink.h
Doing it this way is sure to break some cross build environments.
@@ -5,7 +5,7 @@
#ifndef RTE_PMD_MLX5_NL_H_
#define RTE_PMD_MLX5_NL_H_
-#include <linux/netlink.h>
+#include "/usr/include/linux/netlink.h"
#include <rte_ether.h>