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=209&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'. 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. Best regards, Georgios Katsikas