A Question on MEMNIC/PMD on DPDK
From: Royce Niu <hidden>
Date: 2016-01-19 09:01:47
Dear all, I am so sorry to send this question in dev mailing list. I sent this to users' mailing list, but no one response and that list is not so active. So, may I ask this question in this list? If it is not ok, I say sorry in advance. ----------------------------------------------------------------------------------------------------------------- I want to install an OVS/memnic software in a KVM virtual machine. For the higher speed, I install memnic/pmd (SR-IOV) instead of virtio, since I believe SR-IOV is faster than virtio. But, I meet some trouble when I build the memnic following the doc ( http://dpdk.org/doc/memnic-pmd) I download the most updated software DPDK 2.2.0 and memnic 1.3. My system is : 1. 2 VCPU 2G Mem 2. Ubuntu 14.04 64bit 3. Updated packages I build DPDK successfully, but when I build memnic in VM according to the doc. A lot of error message displays: -------------------------------------------------------------------------------------------------------------------- #... (So many lines of errors) ... ... ... In file included from /home/niuroy/dpdk-2.2.0/build/include/rte_ether.h:50:0, from /home/niuroy/dpdk-2.2.0/build/include/rte_ethdev.h:185, from pmd_memnic.c:32: /home/niuroy/dpdk-2.2.0/build/include/rte_memcpy.h:625:2: error: incompatible type for argument 2 of ‘_mm_storeu_si128’ MOVEUNALIGNED_LEFT47(dst, src, n, srcofs); ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.8/include/xmmintrin.h:1246:0, from /usr/lib/gcc/x86_64-linux-gnu/4.8/include/x86intrin.h:34, from /home/niuroy/dpdk-2.2.0/build/include/rte_vect.h:67, from /home/niuroy/dpdk-2.2.0/build/include/rte_memcpy.h:46, from /home/niuroy/dpdk-2.2.0/build/include/rte_ether.h:50, from /home/niuroy/dpdk-2.2.0/build/include/rte_ethdev.h:185, from pmd_memnic.c:32: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/emmintrin.h:700:1: note: expected ‘__m128i’ but argument is of type ‘int’ _mm_storeu_si128 (__m128i *__P, __m128i __B) ^ pmd_memnic.c: In function ‘memnic_queue_alloc’: pmd_memnic.c:81:35: error: ‘CACHE_LINE_SIZE’ undeclared (first use in this function) q = rte_zmalloc(buf, sizeof(*q), CACHE_LINE_SIZE); ^ pmd_memnic.c:81:35: note: each undeclared identifier is reported only once for each function it appears in pmd_memnic.c: In function ‘memnic_dev_stats_get’: pmd_memnic.c:182:3: error: ‘fdirmatch’ is deprecated (declared at /home/niuroy/dpdk-2.2.0/build/include/rte_ethdev.h:212) [-Werror=deprecated-declarations] stats->fdirmatch += st->fdirmatch; ^ pmd_memnic.c:182:3: error: ‘fdirmatch’ is deprecated (declared at /home/niuroy/dpdk-2.2.0/build/include/rte_ethdev.h:212) [-Werror=deprecated-declarations] pmd_memnic.c:183:3: error: ‘fdirmiss’ is deprecated (declared at /home/niuroy/dpdk-2.2.0/build/include/rte_ethdev.h:214) [-Werror=deprecated-declarations] stats->fdirmiss += st->fdirmiss; ^ pmd_memnic.c:183:3: error: ‘fdirmiss’ is deprecated (declared at /home/niuroy/dpdk-2.2.0/build/include/rte_ethdev.h:214) [-Werror=deprecated-declarations] pmd_memnic.c: In function ‘memnic_recv_pkts’: pmd_memnic.c:315:5: error: ‘struct rte_mbuf’ has no member named ‘pkt’ mb->pkt.in_port = q->port_id; ^ pmd_memnic.c: In function ‘memnic_xmit_pkts’: pmd_memnic.c:398:37: error: ‘struct rte_mbuf’ has no member named ‘pkt’ for (sg = tx_pkts[nr]; sg; sg = sg->pkt.next) { ^ pmd_memnic.c: At top level: pmd_memnic.c:496:2: error: initialization from incompatible pointer type [-Werror] .eth_dev_init = eth_memnic_dev_init, ^ pmd_memnic.c:496:2: error: (near initialization for ‘rte_memnic_pmd.eth_dev_init’) [-Werror] cc1: all warnings being treated as errors make: *** [librte_pmd_memnic_copy.so] Error 1 ------------------------------------------------------------------------------------------------------------------ Then, I tried DPDK 2.0 and 1.8. with both of these version, I still meet a lot of errors just like 2.2 So, I want to ask 1. How to solve the problems? 2. Can I install OVS with SR-IOV feature by other ways? Thanks! -- Regards, Royce Niu