diff mbox

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

Message ID 20170630154412.3575760-1-arnd@arndb.de
State New
Headers show

Commit Message

Arnd Bergmann June 30, 2017, 3:43 p.m. UTC
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 <arnd@arndb.de>

---
 drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.9.0

Comments

Ilan Tayari June 30, 2017, 6:58 p.m. UTC | #1
> -----Original Message-----

> From: Arnd Bergmann [mailto:arnd@arndb.de]

> 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 <arnd@arndb.de>

> ---

>  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
Arnd Bergmann June 30, 2017, 7:25 p.m. UTC | #2
On Fri, Jun 30, 2017 at 8:58 PM, Ilan Tayari <ilant@mellanox.com> 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
Saeed Mahameed July 2, 2017, 8:45 a.m. UTC | #3
On Fri, Jun 30, 2017 at 10:25 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Fri, Jun 30, 2017 at 8:58 PM, Ilan Tayari <ilant@mellanox.com> 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 majordomo@vger.kernel.org

> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnd Bergmann July 3, 2017, 7:21 a.m. UTC | #4
On Sun, Jul 2, 2017 at 10:45 AM, Saeed Mahameed
<saeedm@dev.mellanox.co.il> wrote:
> On Fri, Jun 30, 2017 at 10:25 PM, Arnd Bergmann <arnd@arndb.de> wrote:

>> On Fri, Jun 30, 2017 at 8:58 PM, Ilan Tayari <ilant@mellanox.com> 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
diff mbox

Patch

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 \