[dpdk-dev] ConnectX4 100GbE - Compilation problem

george.dit at gmail.com george.dit at gmail.com
Sun Dec 18 17:06:07 CET 2016


Hi again,

I have a follow up question. I noticed that when I compile DPDK with
CONFIG_RTE_LIBRTE_MLX5_PMD=y, the compilation fate depends upon the OFED
version that I have.
To become more clear, with DPDK 16.11 and OFED 3.4-2.0.0.0 it compiles, but
DPDK 16.07 and the same OFED fails with:

== Build drivers/net/mlx5
  CC mlx5.o
  PMDINFO mlx5.o.pmd.c
  CC mlx5.o.pmd.o
  LD mlx5.o
  CC mlx5_rxq.o
  CC mlx5_txq.o
  CC mlx5_rxtx.o
In file included from /opt/dpdk/drivers/net/mlx5/mlx5.h:41:0,
                 from /opt/dpdk/drivers/net/mlx5/mlx5_rxtx.c:65:
/opt/dpdk/drivers/net/mlx5/mlx5_rxtx.c: In function ‘mlx5_mpw_new’:
/opt/dpdk/drivers/net/mlx5/mlx5_rxtx.c:911:9: error: ‘MLX5_OPCODE_LSO_MPW’
undeclared (first use in this function)
         MLX5_OPCODE_LSO_MPW);
         ^
/opt/dpdk/drivers/net/mlx5/mlx5_rxtx.c:911:9: note: each undeclared
identifier is reported only once for each function it appears in
/opt/dpdk/drivers/net/mlx5/mlx5_rxtx.c: In function ‘mlx5_mpw_inline_new’:
/opt/dpdk/drivers/net/mlx5/mlx5_rxtx.c:1110:13: error:
‘MLX5_OPCODE_LSO_MPW’ undeclared (first use in this function)
             MLX5_OPCODE_LSO_MPW);
             ^
/opt/dpdk/mk/internal/rte.compile-pre.mk:138: recipe for target
'mlx5_rxtx.o' failed
make[6]: *** [mlx5_rxtx.o] Error 1
/opt/dpdk/mk/rte.subdir.mk:61: recipe for target 'mlx5' failed
make[5]: *** [mlx5] Error 2
/opt/dpdk/mk/rte.subdir.mk:61: recipe for target 'net' failed
make[4]: *** [net] Error 2
/opt/dpdk/mk/rte.sdkbuild.mk:78: recipe for target 'drivers' failed
make[3]: *** [drivers] Error 2
/opt/dpdk/mk/rte.sdkroot.mk:123: recipe for target 'all' failed
make[2]: *** [all] Error 2
/opt/dpdk/mk/rte.sdkinstall.mk:84: recipe for target 'pre_install' failed
make[1]: *** [pre_install] Error 2
/opt/dpdk/mk/rte.sdkroot.mk:98: recipe for target 'install' failed
make: *** [install] Error 2

Is there a way to have DPDK compiled with MLX5 support across a variety of
DPDK versions (i.e, from 2.2.0 up to 16.11)?

Thanks in advance and best regards,
Georgios




On Sun, Dec 18, 2016 at 8:58 AM, <george.dit at gmail.com> wrote:

> Hi Olga,
>
> That was the issue indeed, thank you very much!
>
> Best regards,
> Georgios
>
> On Sat, Dec 17, 2016 at 10:26 PM, Olga Shern <olgas at mellanox.com> wrote:
>
>> Hi Georgios,
>>
>> Did you install MLNX_OFED?
>> You probably missing libmlx5-devel package
>>
>> Best Regards,
>> Olga
>>
>> -----Original Message-----
>> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of george.dit at gmail.com
>> Sent: Friday, December 16, 2016 4:46 PM
>> To: Georgios Katsikas <george.dit at gmail.com>; dev at dpdk.org
>> Subject: Re: [dpdk-dev] ConnectX4 100GbE - Compilation problem
>>
>> Hi all,
>>
>> I am coming back to you regarding the Mellanox Connectx4 100Gbps DPDK
>> driver.
>> We exchanged some e-mails last summer and I managed to compile the
>> DPDK-based Mellanox driver using DPDK 16.07 on top of Ubuntu server
>> 16.04.01.
>>
>> A few days ago, I installed a fresh Ubuntu server 16.04.1 on my machine
>> and attempted to re-install DPDK.
>> This time, DPDK does not compile because of the following error:
>> \== Build drivers/net/mlx5
>>   CC mlx5.o
>> In file included from /opt/dpdk/drivers/net/mlx5/mlx5.h:67:0,
>>                  from /opt/dpdk/drivers/net/mlx5/mlx5.c:66:
>> /opt/dpdk/drivers/net/mlx5/mlx5_rxtx.h:46:32: fatal error:
>> infiniband/mlx5_hw.h: No such file or directory compilation terminated.
>> /opt/dpdk/mk/internal/rte.compile-pre.mk:138: recipe for target 'mlx5.o'
>> failed
>> make[6]: *** [mlx5.o] Error 1
>> /opt/dpdk/mk/rte.subdir.mk:61: recipe for target 'mlx5' failed
>> make[5]: *** [mlx5] Error 2
>> /opt/dpdk/mk/rte.subdir.mk:61: recipe for target 'net' failed
>> make[4]: *** [net] Error 2
>> /opt/dpdk/mk/rte.sdkbuild.mk:78: recipe for target 'drivers' failed
>> make[3]: *** [drivers] Error 2
>> /opt/dpdk/mk/rte.sdkroot.mk:126: recipe for target 'all' failed
>> make[2]: *** [all] Error 2
>> /opt/dpdk/mk/rte.sdkinstall.mk:85: recipe for target 'pre_install' failed
>> make[1]: *** [pre_install] Error 2
>> /opt/dpdk/mk/rte.sdkroot.mk:101: recipe for target 'install' failed
>> make: *** [install] Error 2
>> [ ERROR] [      CheckStatus] Command make install failed
>>
>> I tried 2 different kernels (4.4 and 4.8) both compiled from sources and
>> I also tried 3 different DPDk versions (16.04/07/11) but they all get stuck
>> to this point.
>> The way I configure DPDK is via config/common_base, where I set
>> CONFIG_RTE_LIBRTE_MLX5_PMD=y.
>> The file infiniband/mlx5_hw.h does not exist in my system although I have
>> installed libmlx5.
>>
>> Do you know why does this happen now?
>>
>> Thanks in advance and best regards,
>> Georgios
>>
>> On Thu, Aug 18, 2016 at 7:35 PM, <george.dit at gmail.com> wrote:
>>
>> > Hi Adrien,
>> >
>> > Thanks for the prompt reply!
>> > You are right, I didn't go via the DPDK route, in the hope that
>> > Mellanox will provide the exact source and configuration.
>> > DPDK 16.07 from dpdk.org works like a charm and my NIC is in PMD mode,
>> > thanks a lot for your guidance!
>> >
>> > Best regards,
>> > Georgios
>> >
>> > On Thu, Aug 18, 2016 at 6:05 PM, Adrien Mazarguil <
>> > adrien.mazarguil at 6wind.com> wrote:
>> >
>> >> Hi George,
>> >>
>> >> On Thu, Aug 18, 2016 at 05:41:38PM +0200, george.dit at gmail.com wrote:
>> >> > Hi,
>> >> >
>> >> > I have a single port Mellanox ConnectX 4 100GbE NIC and I want to
>> >> > test
>> >> its
>> >> > Rx/Tx capabilites  using DPDK.
>> >> > My system runs a Linux kernel 4.4 compiled from sources.
>> >> >
>> >> > I found the PMD driver for this NIC as provided by Mellanox here
>> >> > <http://www.mellanox.com/page/products_dyn?product_family=20
>> >> 9&mtag=pmd_for_dpdk>
>> >> > .
>> >> > Following this
>> >> > <http://www.mellanox.com/related-docs/prod_software/MLNX_
>> >> DPDK_Quick_Start_Guide_v2.2_2.7.pdf>
>> >> > guideline, I put my NIC in Ethernet mode, configured the 3 options
>> >> > regarding mlx5 in the config/common_linuxapp file and applied 'make
>> >> install
>> >> > T=x86_64-native-linuxapp-gcc'.
>> >>
>> >> Please note this is a third party package maintained by Mellanox,
>> >> therefore this mailing list is not the right place to discuss related
>> >> errors, unless they can be reproduced with a version downloaded from
>> >> dpdk.org.
>> >>
>> >> > Then, I stumbled upon a compilation problem in the mlx4 module.
>> >> > The compiler's output is as follows:
>> >> >
>> >> > == Build drivers/net/mlx4
>> >> >   CC mlx4.o
>> >> > In file included from /usr/include/linux/if.h:31:0,
>> >> >                  from /opt/MLNX_DPDK_2.2_2.7/drivers
>> >> /net/mlx4/mlx4.c:57:
>> >> > /usr/include/linux/hdlc/ioctl.h:73:14: error: ‘IFNAMSIZ’ undeclared
>> >> here
>> >> > (not in a function)
>> >> >   char master[IFNAMSIZ]; /* Name of master FRAD device */
>> >> >               ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:612:53: error:
>> >> > ‘struct ifreq’ declared inside parameter list [-Werror]
>> >> > priv_ifreq(const struct priv *priv, int req, struct ifreq *ifr)
>> >> >                                                      ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:612:53: error: its
>> >> scope is
>> >> > only this definition or declaration, which is probably not what you
>> >> > want [-Werror]
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> ‘priv_ifreq’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:619:32: error:
>> >> dereferencing
>> >> > pointer to incomplete type ‘struct ifreq’
>> >> >   if (priv_get_ifname(priv, &ifr->ifr_name) == 0)
>> >> >                                 ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> ‘rxq_setup’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:3735:29: error:
>> >> > unused parameter ‘inactive’ [-Werror=unused-parameter]
>> >> >     unsigned int socket, int inactive, const struct rte_eth_rxconf
>> >> *conf,
>> >> >                              ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> > ‘mlx4_link_update_unlocked’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4712:15: error:
>> >> > storage
>> >> size
>> >> > of ‘ifr’ isn’t known
>> >> >   struct ifreq ifr;
>> >> >                ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4724:43: error:
>> ‘IFF_UP’
>> >> > undeclared (first use in this function)
>> >> >   dev_link.link_status = ((ifr.ifr_flags & IFF_UP) &&
>> >> >                                            ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4724:43: note: each
>> >> > undeclared identifier is reported only once for each function it
>> >> appears in
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4725:22: error:
>> >> > ‘IFF_RUNNING’ undeclared (first use in this function)
>> >> >      (ifr.ifr_flags & IFF_RUNNING));
>> >> >                       ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4712:15: error:
>> >> > unused variable ‘ifr’ [-Werror=unused-variable]
>> >> >   struct ifreq ifr;
>> >> >                ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> > ‘mlx4_dev_get_flow_ctrl’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4880:15: error:
>> >> > storage
>> >> size
>> >> > of ‘ifr’ isn’t known
>> >> >   struct ifreq ifr;
>> >> >                ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4880:15: error:
>> >> > unused variable ‘ifr’ [-Werror=unused-variable]
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> > ‘mlx4_dev_set_flow_ctrl’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4930:15: error:
>> >> > storage
>> >> size
>> >> > of ‘ifr’ isn’t known
>> >> >   struct ifreq ifr;
>> >> >                ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:4930:15: error:
>> >> > unused variable ‘ifr’ [-Werror=unused-variable]
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> ‘priv_get_mac’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:5184:15: error:
>> >> > storage
>> >> size
>> >> > of ‘request’ isn’t known
>> >> >   struct ifreq request;
>> >> >                ^
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:5184:15: error:
>> >> > unused variable ‘request’ [-Werror=unused-variable]
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c: In function
>> >> > ‘mlx4_pci_devinit’:
>> >> > /opt/MLNX_DPDK_2.2_2.7/drivers/net/mlx4/mlx4.c:5725:25: error:
>> ‘IFF_UP’
>> >> > undeclared (first use in this function)
>> >> >    priv_set_flags(priv, ~IFF_UP, IFF_UP);
>> >> >                          ^
>> >> > cc1: all warnings being treated as errors
>> >> > /opt/MLNX_DPDK_2.2_2.7/mk/internal/rte.compile-pre.mk:126: recipe
>> >> > for target 'mlx4.o' failed
>> >> >
>> >> > Iwould appreciate any suggestions and guidance.
>> >>
>> >> Well fortunately these errors are also present in v2.2.0 and should
>> >> have been addressed since v16.07 by the following commit:
>> >>
>> >>  http://dpdk.org/browse/dpdk/commit/?id=d06c608c013c36711e7a
>> >> 693b3fece68a93ae4369
>> >>
>> >> You can either upgrade to v16.07, back-port this commit yourself or
>> >> wait for an update from Mellanox.
>> >>
>> >> --
>> >> Adrien Mazarguil
>> >> 6WIND
>> >>
>> >
>> >
>> >
>> > --
>> >    Georgios Katsikas
>> >    Ph.D. Student and Research Assistant
>> >    Network Systems Lab (NSL)
>> >
>> >
>> >
>> >        *E-Mail:*  george <george.katsikas at imdea.org>.dit at gmail.com
>> >    *Web Site:*  http://www.di.uoa.gr/~katsikas/
>> > <http://people.networks.imdea.org/~george_katsikas/index.html>
>> >
>>
>>
>>
>> --
>>    Georgios Katsikas
>>    Ph.D. Student and Research Assistant
>>    Network Systems Lab (NSL)
>>
>>
>>
>>        *E-Mail:*  george <george.katsikas at imdea.org>.dit at gmail.com
>>    *Web Site:*  http://www.di.uoa.gr/~katsikas/ <
>> http://people.networks.imdea.org/~george_katsikas/index.html>
>>
>
>
>
> --
>    Georgios Katsikas
>    Ph.D. Student and Research Assistant
>    Network Systems Lab (NSL)
>
>
>
>        *E-Mail:*  george <george.katsikas at imdea.org>.dit at gmail.com
>    *Web Site:*  http://www.di.uoa.gr/~katsikas/
> <http://people.networks.imdea.org/~george_katsikas/index.html>
>



-- 
   Georgios Katsikas
   Ph.D. Student and Research Assistant
   Network Systems Lab (NSL)



       *E-Mail:*  george <george.katsikas at imdea.org>.dit at gmail.com
   *Web Site:*  http://www.di.uoa.gr/~katsikas/
<http://people.networks.imdea.org/~george_katsikas/index.html>


More information about the dev mailing list