2017-06-30 15:44:39

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] [net-next] net/mlx5: include wq.o in non-ethernet build for FPGA

Both the ethernet and FPGA portions of MLX5 now require the wq functions,
and we get a link error when CONFIG_MLX5_CORE_EN is disabled:

drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.o: In function `mlx5_fpga_conn_create_cq':
conn.c:(.text+0x10b3): undefined reference to `mlx5_cqwq_create'
conn.c:(.text+0x10c6): undefined reference to `mlx5_cqwq_get_size'
conn.c:(.text+0x12bc): undefined reference to `mlx5_cqwq_destroy'

This includes the library in the core driver also when only the fpga
support is enabled.

Fixes: 537a50574175 ("net/mlx5: FPGA, Add high-speed connection routines")
Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
index ca367445f864..50fe9e3c5dc2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
@@ -9,7 +9,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o pagealloc.o \
mlx5_core-$(CONFIG_MLX5_ACCEL) += accel/ipsec.o

mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o fpga/sdk.o \
- fpga/ipsec.o
+ fpga/ipsec.o wq.o

mlx5_core-$(CONFIG_MLX5_CORE_EN) += wq.o eswitch.o eswitch_offloads.o \
en_main.o en_common.o en_fs.o en_ethtool.o en_tx.o \
--
2.9.0


2017-06-30 18:58:25

by Ilan Tayari

[permalink] [raw]
Subject: RE: [PATCH] [net-next] net/mlx5: include wq.o in non-ethernet build for FPGA

> -----Original Message-----
> From: Arnd Bergmann [mailto:[email protected]]
> Subject: [PATCH] [net-next] net/mlx5: include wq.o in non-ethernet build
> for FPGA
>
> Both the ethernet and FPGA portions of MLX5 now require the wq functions,
> and we get a link error when CONFIG_MLX5_CORE_EN is disabled:
>
> drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.o: In function
> `mlx5_fpga_conn_create_cq':
> conn.c:(.text+0x10b3): undefined reference to `mlx5_cqwq_create'
> conn.c:(.text+0x10c6): undefined reference to `mlx5_cqwq_get_size'
> conn.c:(.text+0x12bc): undefined reference to `mlx5_cqwq_destroy'
>
> This includes the library in the core driver also when only the fpga
> support is enabled.
>
> Fixes: 537a50574175 ("net/mlx5: FPGA, Add high-speed connection routines")
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
> b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
> index ca367445f864..50fe9e3c5dc2 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
> @@ -9,7 +9,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o
> pagealloc.o \
> mlx5_core-$(CONFIG_MLX5_ACCEL) += accel/ipsec.o
>
> mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o
> fpga/sdk.o \
> - fpga/ipsec.o
> + fpga/ipsec.o wq.o

I believe we would prefer to move wq.o to mlx5_core-y.
Otherwise you might build it twice.

>
> mlx5_core-$(CONFIG_MLX5_CORE_EN) += wq.o eswitch.o eswitch_offloads.o \
> en_main.o en_common.o en_fs.o en_ethtool.o en_tx.o \
> --
> 2.9.0


2017-06-30 19:25:16

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] [net-next] net/mlx5: include wq.o in non-ethernet build for FPGA

On Fri, Jun 30, 2017 at 8:58 PM, Ilan Tayari <[email protected]> wrote:

>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>> b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>> index ca367445f864..50fe9e3c5dc2 100644
>> --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>> @@ -9,7 +9,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o
>> pagealloc.o \
>> mlx5_core-$(CONFIG_MLX5_ACCEL) += accel/ipsec.o
>>
>> mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o
>> fpga/sdk.o \
>> - fpga/ipsec.o
>> + fpga/ipsec.o wq.o
>
> I believe we would prefer to move wq.o to mlx5_core-y.
> Otherwise you might build it twice.

That's not a problem, Kbuild is smart enough to drop duplicate object files
that get built into the same module.

If you think it's less confusing to readers of this file if it gets
put into core,
that's fine though, the only downside would be adding a little bit of
code bloat for users that want neither the ethernet nor the fpga code
(if that is a realistic use case).

Arnd

2017-07-02 08:45:46

by Saeed Mahameed

[permalink] [raw]
Subject: Re: [PATCH] [net-next] net/mlx5: include wq.o in non-ethernet build for FPGA

On Fri, Jun 30, 2017 at 10:25 PM, Arnd Bergmann <[email protected]> wrote:
> On Fri, Jun 30, 2017 at 8:58 PM, Ilan Tayari <[email protected]> wrote:
>
>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>> b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>> index ca367445f864..50fe9e3c5dc2 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>> @@ -9,7 +9,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o
>>> pagealloc.o \
>>> mlx5_core-$(CONFIG_MLX5_ACCEL) += accel/ipsec.o
>>>
>>> mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o
>>> fpga/sdk.o \
>>> - fpga/ipsec.o
>>> + fpga/ipsec.o wq.o
>>
>> I believe we would prefer to move wq.o to mlx5_core-y.
>> Otherwise you might build it twice.
>
> That's not a problem, Kbuild is smart enough to drop duplicate object files
> that get built into the same module.
>
> If you think it's less confusing to readers of this file if it gets
> put into core,
> that's fine though, the only downside would be adding a little bit of
> code bloat for users that want neither the ethernet nor the fpga code
> (if that is a realistic use case).

Hi Arnd,

Thanks for the patch, your solution is good enough, but let's avoid
confusing developers with such duplications.
since the Makefile might get messy if we will keep using this method.

I suggest to move wq.o to core or make MLX5_FPGA depend on MLX5_CORE_EN.
I will discuss this with Ilan and we will provide the fix ASAP.

Thanks,
Saeed.


>
> Arnd
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2017-07-03 07:21:58

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] [net-next] net/mlx5: include wq.o in non-ethernet build for FPGA

On Sun, Jul 2, 2017 at 10:45 AM, Saeed Mahameed
<[email protected]> wrote:
> On Fri, Jun 30, 2017 at 10:25 PM, Arnd Bergmann <[email protected]> wrote:
>> On Fri, Jun 30, 2017 at 8:58 PM, Ilan Tayari <[email protected]> wrote:
>>
>>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>>> b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>>> index ca367445f864..50fe9e3c5dc2 100644
>>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>>>> @@ -9,7 +9,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o
>>>> pagealloc.o \
>>>> mlx5_core-$(CONFIG_MLX5_ACCEL) += accel/ipsec.o
>>>>
>>>> mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o
>>>> fpga/sdk.o \
>>>> - fpga/ipsec.o
>>>> + fpga/ipsec.o wq.o
>>>
>>> I believe we would prefer to move wq.o to mlx5_core-y.
>>> Otherwise you might build it twice.
>>
>> That's not a problem, Kbuild is smart enough to drop duplicate object files
>> that get built into the same module.
>>
>> If you think it's less confusing to readers of this file if it gets
>> put into core,
>> that's fine though, the only downside would be adding a little bit of
>> code bloat for users that want neither the ethernet nor the fpga code
>> (if that is a realistic use case).
>
> Hi Arnd,
>
> Thanks for the patch, your solution is good enough, but let's avoid
> confusing developers with such duplications.
> since the Makefile might get messy if we will keep using this method.
>
> I suggest to move wq.o to core or make MLX5_FPGA depend on MLX5_CORE_EN.
> I will discuss this with Ilan and we will provide the fix ASAP.

Ok, sounds good. Thanks!

Arnd