AgeCommit message (Collapse)Author
2014-12-11version: 1.8.0-rc4v1.8.0-rc4Thomas Monjalon
Signed-off-by: Thomas Monjalon <>
2014-12-11app/test: fix memory needsPablo de Lara
Since commit b91c67e5a693211862aa7dc3b78630b4e856c2af, maximum number of cores is 128, which has increase the total memory necessary for a rte_mempool structure, as the per-lcore local cache has been doubled in size. Therefore, eal_flags unit test was broken since it needed to use more hugepages. Increased memory to 18MB, as that is the actual minimum memory necessary (depending on the physical memory segments, DPDK may need less memory) Signed-off-by: Pablo de Lara <>
2014-12-11examples/l3fwd-vf: fix race conditionDaniel Mrzyglod
When the routing is through the same queue, the app crashed. Signed-off-by: Daniel Mrzyglod <> Acked-by: Neil Horman <>
2014-12-11examples/vhost: fix hard forward of jumbo framesOuyang Changchun
Search the right segment to increase its data length, rather than wrongly early return and exit the tx function, which leads to drop all jumbo frame packets when vm2vm is in hard forward mode. Signed-off-by: Changchun Ouyang <>
2014-12-11examples/vhost: increase maximum queue numberHuawei Xie
Increase MAX_QUEUES from 256 to 512. In vhost example, MAX_QUEUES macro should be the maximum possible queue number of the port. Theoretically we should only set up the queues that are used, i.e., first rx queue of each pool, or at most queues from 0 to MAX_QUEUES. Before we revise the implementation and are certain all NICs support this well, add a remind message to user. Signed-off-by: Huawei Xie <>
2014-12-11i40e: fix RSS RETA queryHelin Zhang
There is a bug in querying reta, of storing the data to the correct entry. Signed-off-by: Helin Zhang <>
2014-12-11enic: fix build with gcc 4.7.2Helin Zhang
Compile warnings/errors was found on gcc 4.7.2 as follows. Variables was reported of being used but uninitialized. Assigning an initial value to it is needed. lib/librte_pmd_enic/vnic/vnic_dev.c: In function vnic_dev_get_mac_addr: lib/librte_pmd_enic/vnic/vnic_dev.c:393:16: error: a1 may be used uninitialized in this function [-Werror=uninitialized] lib/librte_pmd_enic/vnic/vnic_dev.c:629:10: note: a1 was declared here lib/librte_pmd_enic/vnic/vnic_dev.c: In function vnic_dev_set_mac_addr: lib/librte_pmd_enic/vnic/vnic_dev.c:393:16: error: a1 may be used uninitialized in this function [-Werror=uninitialized] lib/librte_pmd_enic/vnic/vnic_dev.c:980:10: note: a1 was declared here Signed-off-by: Helin Zhang <> Acked-by: Thomas Monjalon <>
2014-12-11bond: fix mac assignment to slavesDeclan Doherty
Adding call to mac_address_slaves_update from the lsc handler when the first slave become active to propagate any mac changes made while devices are inactive Changed removing slave logic to use memmove instead of memcpy to move data within the same array, as this was corrupting the slave array. Adding unit test to cover failing assignment scenarios Test report: Signed-off-by: Declan Doherty <> Acked-by: Pawel Wodkowski <> Tested-by: SunX Jiajia <>
2014-12-11xen: fix build with kernel 3.18Jincheng Miao
From upstream kernel commit 3db2e9cd, strict_strto* serial functions are removed. So that we should directly used kstrtoul instead. Add xen_dom0/compat.h to be compatible with older kernel. Signed-off-by: Jincheng Miao <> Acked-by: Thomas Monjalon <>
2014-12-11kni: fix build with kernel 3.18Jincheng Miao
From upstream kernel commit 3db2e9cd, strict_strto* serial functions are removed. So that we should directly used kstrtoul instead. Add kni/compat.h to be compatible with older kernel. Signed-off-by: Jincheng Miao <> Acked-by: Thomas Monjalon <>
2014-12-11igb_uio: fix build with kernel 3.18Jincheng Miao
From upstream kernel commit 3db2e9cd, strict_strto* serial functions are removed. So that we should directly used kstrtoul instead. kstrtoul exists from RHEL6.4, so for compatibility with old kernel and RHEL, add some logic to igb_uio/compat.h. Signed-off-by: Jincheng Miao <> Acked-by: Thomas Monjalon <>
2014-12-11igb_uio: fix build with long term kernel and RHELJincheng Miao
Function pci_num_vf() is introduced from upstream linux-2.6.34. So this patch make compatible with longterm kernel linux- For RHEL, function pci_num_vf() begins from RHEL5 update9. And it is stub-defined when CONFIG_PCI_IOV is not enabled. So dropped the CONFIG_PCI_IOV checking of commit 11ba0426. For other distro like RHEL behaved to pci_num_vf(), we could simply append following condition macro: (!(defined(OTHER_RELEASE_CODE) && \ OTHER_RELEASE_CODE >= OTHER_RELEASE_VERSION(X, Y))) Signed-off-by: Jincheng Miao <> Acked-by: Thomas Monjalon <>
2014-12-11ethdev: fix build with libc ip6 headerMark Kavanagh
The name of the rte_eth_fdir_flow's rte_eth_ipv6_flow attribute, 'ip6_flow', clashes with a macro defined in /usr/include/netinet/ip6.h, such that when DPDK is linked with an application that uses the afforementioned header, the macro is expanded within the DPDK struct, causing a compilation error. Rename the relevant attribute in DPDK to resolve this. Signed-off-by: Mark Kavanagh <> Acked-by: Neil Horman <>
2014-12-11net: fix build with gcc 4.4.7 and strict aliasingMichael Qiu
include/rte_ip.h:161: error: dereferencing pointer ‘u16’ does break strict-aliasing rules include/rte_ip.h:157: note: initialized from here ... The root cause is that, compile enable strict aliasing by default, while in function rte_raw_cksum() try to convert 'const char *' to 'const uint16_t *'. This workaround is to solve the compile issue of GCC strict-aliasing (two different type pointers should not be point to the same memory address). For GCC 4.4.7 it will definitely occurs if flags "-fstrict-aliasing" and "-Wall" used. Signed-off-by: Michael Qiu <> [Thomas: add workaround comment] Acked-by: Thomas Monjalon <>
2014-12-11eal: fix build with iccMichael Qiu
lib/librte_eal/linuxapp/eal/eal.c(461): error #2259: non-pointer conversion from "long long" to "void *" may lose significant bits RTE_PTR_ALIGN_CEIL((uintptr_t)addr, RTE_PGSIZE_16M); The root cause is that "RTE_PGSIZE_16M" is defined as unsigned long long. But in i686 platform "void *" is 32-bit. It is safe to cast to size_t and make it works in both 32 & 64-bit platform. Signed-off-by: Michael Qiu <> Acked-by: Thomas Monjalon <>
2014-12-11eal: fix build for 32-bit systemMichael Qiu
lib/librte_eal/linuxapp/eal/eal_memory.c:324:4: error: comparison is always false due to limited range of data type [-Werror=type-limits] || (hugepage_sz == RTE_PGSIZE_16G)) { ^ This was introuduced by commit b77b5639: mem: add huge page sizes for IBM Power The root cause is that size_t is 32-bit in i686 platform, but RTE_PGSIZE_16M and RTE_PGSIZE_16G are always 64-bit. Force hugepage_sz to always 64-bit to avoid this issue. Signed-off-by: Michael Qiu <> Suggested-by: Neil Horman <> Acked-by: Thomas Monjalon <>
2014-12-11lib: fix cache alignment of structuresJia Yu
Include rte_memory.h for lib files that use __rte_cache_aligned attribute. Consider the following code: struct per_core_foo { ... } __rte_cache_aligned; struct global_foo { struct per_core_foo foo[RTE_MAX_CORE]; }; If __rte_cache_aligned is not defined (rte_memory.h is not included), the code compiles but the structure is not aligned... it defines the structure and creates a global variable called __rte_cache_aligned. And this can lead to really bad things if this code is in a .h that is included by files that may or may not include rte_memory.h Signed-off-by: Jia Yu <> Acked-by: Thomas Monjalon <>
2014-12-11mk: fix build 32-bits shared libraries with 64-bits systemSergio Gonzalez Monroy
Incompatible libraries error when building shared libraries for 32bits on a 64bits system. Fix issue by passing CPU_CFLAGS to CC when LINK_USING_CC is enabled. Signed-off-by: Sergio Gonzalez Monroy <> Acked-by: Pablo de Lara <> Acked-by: Neil Horman <>
2014-12-11mk: fix build shared librariesHiroshi Shimamoto
Only CPU_LDFLAGS is used in mk/ It should be LDFLAGS to build the library with correct linkage options. Signed-off-by: Hiroshi Shimamoto <> Reviewed-by: Hayato Momma <>
2014-12-06version: 1.8.0-rc3v1.8.0-rc3Thomas Monjalon
Signed-off-by: Thomas Monjalon <>
2014-12-06examples/vhost: use factorized default Rx/Tx configurationHuawei Xie
Refer to Pablo's commit (81f7ecd934372fc): "use factorized default Rx/Tx configuration For apps that were using default rte_eth_rxconf and rte_eth_txconf structures, these have been removed and now they are obtained by calling rte_eth_dev_info_get, just before setting up RX/TX queues." Move zero copy's deferred start set up ahead. Signed-off-by: Huawei Xie <>
2014-12-06examples/vhost: support new VMDQ API for i40eHuawei Xie
In Niantic, if VMDQ mode is set, all queues are allocated to VMDQ in DPDK. In I40E, only configured part of continous queues are allocated to VMDQ. The rte_eth_dev_info structure is extended to provide VMDQ queue base, queue number, and VMDQ pool base information. This patch support the new VMDQ API in vhost example. FIXME in PMD: * added mac address will be flushed at rte_eth_dev_start. * we don't support selectively setting up queues well. Test report: Signed-off-by: Huawei Xie <> Acked-by: Jing Chen <> Tested-by: Jingguo Fu <>
2014-12-06i40e: use macros for vlan filtering registersHuawei Xie
Add two macros I40E_VFTA_IDX and I40E_VFTA_BIT for vlan filter search and set. Add vlan_id check in vlan filter search and set function. Signed-off-by: Huawei Xie <> Acked-by: Helin Zhang <> Acked-by: Jing Chen <>
2014-12-06i40e: fix vlan filteringHuawei Xie
">> 5" rather than ">> 4" vlan id is a 12 bit value. VFTA is 128 x 32 bit array (128 double word array) which could store 2^12 vlan bits. Each bit represents whether corresponding vlan tag is set in the VSI. Use high 7 bits as the index for the double word array. Signed-off-by: Huawei Xie <> Acked-by: Helin Zhang <> Acked-by: Jing Chen <>
2014-12-05ixgbe: do not override buffer lengthKonstantin Ananyev
The template mbuf_initializer is hard coded with a buflen which might have been set differently by the application at the time of mbuf pool creation. - move buf_len fields out of rearm_data marker. - make ixgbe_recv_pkts_vec() not touch buf_len field at all (as all other RX functions behave). Signed-off-by: Konstantin Ananyev <> Acked-by: Jean-Mickael Guerin <>
2014-12-05ixgbe: fix setup of mbuf initializer templateJean-Mickael Guerin
Add a compiler barrier to make sure all fields covered by the marker rearm_data are assigned before the read. Fixes: 0ff3324da2 ("ixgbe: rework vector pmd following mbuf changes") Signed-off-by: Jean-Mickael Guerin <> Acked-by: David Marchand <> Acked-by: Bruce Richardson <>
2014-12-05enic: fix uninitialized variableBruce Richardson
The variable notify_pa is only initialized inside one branch of an if statement, triggering a compiler error with clang 3.3 on FreeBSD. CC vnic/vnic_dev.o lib/librte_pmd_enic/vnic/vnic_dev.c:777:6: fatal error: variable 'notify_pa' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (!vnic_dev_in_reset(vdev)) { Fix this issue by adding "= 0" to the variable definition. Signed-off-by: Bruce Richardson <> Acked-by: Thomas Monjalon <>
2014-12-05enic: fix initialization error with clangBruce Richardson
This patch fixes the following compiler error raised by clang 3.3 on FreeBSD 10: CC enic_clsf.o lib/librte_pmd_enic/enic_clsf.c:99:25: fatal error: missing field 'u' initializer [-Wmissing-field-initializers] struct filter fltr = {0}; It fixes it by changing the initializer to set a named field to zero, thereby automatically setting the rest of the unnamed fields also to zero. Signed-off-by: Bruce Richardson <> Acked-by: Thomas Monjalon <>
2014-12-05af_packet: add compile-time checks for kernel-specific optionsJohn W. Linville
This allows the PMD to compile with kernels that don't support the options in question. The "#if defined(...)" lines are a bit ugly, but I don't know of any better way to accomplish the task. Signed-off-by: John W. Linville <> Acked-by: Neil Horman <>
2014-12-05doc: add freebsd portsBruce Richardson
Since the DPDK is now part of the BSD ports collection, we should recommend installing from ports as the best way to get it up and running. In order to achieve this, while still keeping the document readable, the chapter on system requirements has been moved to instead be a section within the chapter on compiling the DPDK outside of the ports collection. This move is necessary, since it covered a lot of detail on installing other ports required to build DPDK. These steps are not needed when installing DPDK itself from ports. Signed-off-by: Bruce Richardson <> Acked-by: Bernard Iremonger <>
2014-12-05doc: adjust line lengths in freebsd guideBruce Richardson
The FreeBSD GSG rst files had very inconsistent line lengths for text within paragraph blocks. Sometimes a line would be very short, while often lines would be quite long. This patch adjusts the formatting of the rst files so that lines break at approx the 80-character mark, as is standard in the DPDK source code. Signed-off-by: Bruce Richardson <> Acked-by: Bernard Iremonger <>
2014-12-05doc: auto-generate date in guidesBruce Richardson
The index.html file for each of the "guide" docs had a hard-coded date value in them of June 2014. Rather than update each of these for each revision, just use the |today| directive to insert the date at which the document was generated. Signed-off-by: Bruce Richardson <> Acked-by: Bernard Iremonger <>
2014-12-05doc: fix testpmd guidePablo de Lara
Signed-off-by: Pablo de Lara <> Acked-by: Bernard Iremonger <>
2014-12-05doc: reorder testpmd commandsPablo de Lara
Moved commands in testpmd UG to set queue rates to match order in testpmd command help. Created new section "Filters" to match that same section in testpmd UG, and moved all commands related to it there. Signed-off-by: Pablo de Lara <> Acked-by: Bernard Iremonger <>
2014-12-05doc: fix testpmd commandsPablo de Lara
tx_checksum set function does not use bitmask anymore, but strings Signed-off-by: Pablo de Lara <> Acked-by: Bernard Iremonger <>
2014-12-05doc: new testpmd commandsPablo de Lara
Added info in testpmd functions section for the following commands: - tunnel_filter add - tunnel_filter rm - rx_vxlan_port add - rx_vxlan_port rm - port stop/start queue - set port mac address filter (for VF) - tx_checksum set - tso set - tso show Signed-off-by: Pablo de Lara <> Acked-by: Bernard Iremonger <>
2014-12-05doc: add vhost librarySiobhan Butler
As Vhost will be a library in DPDK 1.8, adding a new section to Programmer's Guide to describe its use. Signed-off-by: Siobhan Butler <> Signed-off-by: Huawei Xie <> Acked-by: Bernard Iremonger <>
2014-12-05doc: add distributor applicationSiobhan Butler
New distributor sample app user guide section for sample app user guide. Signed-off-by: Siobhan Butler <> Acked-by: Bernard Iremonger <>
2014-12-05doc: update bondingDeclan Doherty
Adding details for link status interrupts and link status polling. Adding details for mode 4 / mode 5 Tidying up rst document to conform to 80 character line limit Adding diagrams to explain bonding modes Removed link_bonding.png file Signed-off-by: Declan Doherty <> Acked-by: Bernard Iremonger <>
2014-12-05examples/multi_process: fix resilience by enabling Rx dropBruce Richardson
The symmetric_mp example app is set up to allow two processes to share a NIC port, with each pulling packets from one queue. In order to have the app continue working when one of the process dies, the drop_en bit should be set in the NIC configuration. Without this bit set, the NIC will stall once any queue fills. With the bit set, once a queue fills, all subsequent packets for that queue are discarded allowing other queues to continue operating as normal. Signed-off-by: Bruce Richardson <>
2014-12-05table: fix lookup with incomplete bitmaskBruce Richardson
When a lookup was done on a table_array structure with an incomplete bitmask, the results was always zero hits. This was because the pkts_mask value was cleared as we process each entry, and the result was assigned at the end of the loop, when pkts_mask was zero. Changing the assignment to occur at the start, before the pkts_mask gets cleared, fixes this issue. Signed-off-by: Bruce Richardson <> Acked by: Cristian Dumitrescu <>
2014-12-05i40e: setup flow director only if enabledJingjing Wu
In order not to affect the FVL's performance by default setting, this patch moves the flow director initialization from i40e_pf_setup to i40e_dev_configure according to the mode in fdir configure info. Then the resources used for flow director will be only setup if it is enabled. Signed-off-by: Jingjing Wu <> Acked-by: Konstantin Ananyev <> Acked-by: Helin Zhang <>
2014-12-05mbuf: replace inner fields by outer fields semanticJijiang Liu
Replace the inner_l2_len and the inner_l3_len field with the outer_l2_len and outer_l3_len field, and rework csum forward engine and i40e PMD due to these changes. Signed-off-by: Jijiang Liu <> Acked-by: Konstantin Ananyev <> Acked-by: Olivier Matz <>
2014-12-05mbuf: add Tx offloading flags for tunnelsJijiang Liu
Replace PKT_TX_VXLAN_CKSUM with PKT_TX_UDP_TUNNEL_PKT in order to indicate a packet is an UDP tunneling packet, and introduce 3 TX offload flags for outer IP TX checksum, which are PKT_TX_OUTER_IP_CKSUM, PKT_TX_OUTER_IPV4 and PKT_TX_OUTER_IPV6 respectively. Rework csum forward engine and i40e PMD due to these changes. Signed-off-by: Jijiang Liu <> Acked-by: Konstantin Ananyev <> Acked-by: Olivier Matz <>
2014-12-05mbuf: remove aliasing of Tx offloading flags with Rx onesJijiang Liu
The reason of redefining the PKT_TX_IPV4 and the PKT_TX_IPV6 is listed below, It will avoid to send a packet with a bad info: - we receive a Ether/IP6/IP4/L4/data packet - the driver sets PKT_RX_IPV6_HDR - the stack decapsulates IP6 - the stack sends the packet, it has the PKT_TX_IPV6 flag but it's an IPv4 packet. Signed-off-by: Jijiang Liu <> Acked-by: Konstantin Ananyev <> Acked-by: Olivier Matz <>
2014-12-05app/testpmd: fix endianness detectionThomas Monjalon
Use endianness detection factorized in EAL. The comment about arpa/inet.h is not valid anymore since commit d07180f211c08 ("net: fix conflict with libc"). The macro _htons could also be moved in rte_byteorder.h by providing some constant byte swapping. Signed-off-by: Thomas Monjalon <> Acked-by: Chao Zhu <>
2014-12-05eal: detect endiannessThomas Monjalon
There is no standard to check endianness. So we need to try different checks. Previous trials were done in testpmd (see commits 51f694dd40f56 and 64741f237cf29) without full success. This one is not guaranteed to work everywhere so it could evolve when exceptions are found. If endianness is not detected, there is a fallback on x86 to little endian. It could be forced before doing detection but it would add some arch-dependent code in the generic header. The option CONFIG_RTE_ARCH_BIG_ENDIAN introduced for IBM Power only (commit a982ec81d84d53) can be removed. A compile-time check is better. Signed-off-by: Thomas Monjalon <> Acked-by: Chao Zhu <> Acked-by: Michael Qiu <>
2014-12-05cmdline: fix overflow on bsdAlan Carew
When using test-pmd with flow director in FreeBSD, the application will segfault/Bus error while parsing the command-line. This is due to how each commands result structure is represented during parsing, where the offsets for each tokens value is stored in a character array(char result_buf[BUFSIZ]) in cmdline_parse()(./lib/librte_cmdline/cmdline_parse.c). The overflow occurs where BUFSIZ is less than the size of a commands result structure, in this case "struct cmd_pkt_filter_result" (app/test-pmd/cmdline.c) is 1088 bytes and BUFSIZ on FreeBSD is 1024 bytes as opposed to 8192 bytes on Linux. The problem can be reproduced by running test-pmd on FreeBSD: ./testpmd -c 0x3 -n 4 -- -i --portmask=0x3 --pkt-filter-mode=perfect And adding a filter: add_perfect_filter 0 udp src 1024 dst 1024 flexbytes 0x800 vlan 0 queue 0 soft 0x17 This patch removes the OS dependency on BUFSIZ and defines and uses a library #define CMDLINE_PARSE_RESULT_BUFSIZE 8192 Added boundary checking to ensure this buffer size cannot overflow, with an error message being produced. Suggested-by: Olivier Matz <>;a=commitdiff;h=b1d5b169352e57df3fc14c51ffad4b83f3e5613f Signed-off-by: Alan Carew <> Signed-off-by: Olivier Matz <> Tested-by: Bruce Richardson <>
2014-12-04cmdline: revert fix overflow on bsdThomas Monjalon
Revert commit a0547e0a751100 because it is an old version of the patch and was applied by error. Signed-off-by: Thomas Monjalon <>
2014-12-04enic: fix warningsThomas Monjalon
A lot of warnings were not seen because $(WERROR_FLAGS) was not set in the Makefile. But they appear with toolchains that enforce more checks. -Wno-deprecated seems useless. -Wno-strict-aliasing is added to avoid false positives. This patch cleans up unused variable, unused functions, wrong types, static declarations, etc. A lot of functions have unused parameters; it suggests that more clean-up could be needed. Signed-off-by: Thomas Monjalon <> Acked-by: Sujith Sankar <>