DPDK is a set of libraries and drivers for fast packet processing. It supports many processor architectures and both FreeBSD and Linux. The DPDK uses the Open Source BSD-3-Clause license for the core libraries and drivers. The kernel components are GPL-2.0 licensed. Please check the doc directory for release notes, API documentation, and sample application information. For questions and usage discussions, subscribe to: [email protected] Report bugs and issues to the development mailing list: [email protected]
Data Plane Development Kit
Hi. We are working on a project with C and C++ source code. This change allows all the Makefile infrastructure to correctly work with C++ source files too. Please include it. Much thanks!
The current netvsc driver does not really support the IPv4 UDP RSS mode, as it does not handle the NDIS_HASH_UDP_IPV4 constant. Therefore trying to use that mode fails:
hn_rndis_set(): RNDIS set 0x10204 failed: status 0xc000000d hn_rndis_conf_rss(): RSS config num queues=8 failed: 5 hn_rss_hash_update(): rss reconfig failed (RSS disabled)
This change aims at defining the NDIS constant and using it so that the RSS update can work properly.
Problem: Cannot initialize tailq: UIO_RESOURCE_LIST the terminal output is as follow:
[[email protected] helloworld]# build/helloworld -l 0-3 -n 2 EAL: Detected CPU lcores: 32 EAL: Detected NUMA nodes: 1 EAL: Detected shared linkage of DPDK EAL: UIO_RESOURCE_LIST tailq is already registered PANIC in tailqinitfn_rte_uio_tailq(): Cannot initialize tailq: UIO_RESOURCE_LIST 16: [build/helloworld() [0x400770]] 15: [/lib64/libc.so.6(__libc_start_main+0xf5) [0x7f04d7d1f555]] 14: [build/helloworld() [0x4006c6]] 13: [librte_eal.so.22(rte_eal_init+0x726) [0x7f04d80f8476]] 12: [librte_eal.so.22(+0x19628) [0x7f04d80e4628]] 11: [/lib64/libdl.so.2(dlopen+0x31) [0x7f04d77f8041]] 10: [/lib64/libdl.so.2(+0x15ad) [0x7f04d77f85ad]] 9: [/lib64/ld-linux-x86-64.so.2(+0xf7d4) [0x7f04d83e27d4]] 8: [/lib64/libdl.so.2(+0xfab) [0x7f04d77f7fab]] 7: [/lib64/ld-linux-x86-64.so.2(+0x13b8b) [0x7f04d83e6b8b]] 6: [/lib64/ld-linux-x86-64.so.2(+0xf7d4) [0x7f04d83e27d4]] 5: [/lib64/ld-linux-x86-64.so.2(+0x1459e) [0x7f04d83e759e]] 4: [/lib64/ld-linux-x86-64.so.2(+0xf9c3) [0x7f04d83e29c3]] 3: [/usr/local/lib64/dpdk/pmds-22.1/librte_bus_pci.so.22.1(+0x2a9c) [0x7f04c94a6a9c]] 2: [librte_eal.so.22(__rte_panic+0xba) [0x7f04d80d807a]] 1: [librte_eal.so.22(rte_dump_stack+0x1a) [0x7f04d80f9fea]] Aborted
I search the problem online, and find the solution, but still confused about the operation: -> 把静态链接librte_.a都改成动态链接librte_.so. I wonder if there are some more specific operations ? Thanks!
Hello. Memory will be cleared incorrectly when working with a pointer. The pointer is zeroed, not the structure it points to. Working with null pointers is not possible. An emergency exit from the program will occur. These changes correct this situation.
The rte_hash_lookup_data function can return ZERO which is not a positive value.
// code to print the return vlaue ret = rte_hash_lookup_data(flow_hash_table, key, (void **) &data); zlog_debug(zc, "packet(%u)(%d): %s", m->pkt_len,ret, pkt_info); // the log of my code //worker | DEBUG [packet_processing.c:90] packet(74)(-2): - src_ip=184.108.40.206:33080 - dst_ip=220.127.116.11:443 - queue=0x0 //worker | DEBUG [packet_processing.c:98] success add a flow to flow hash table //worker | DEBUG [packet_processing.c:90] packet(74)(-2): - src_ip=18.104.22.168:33082 - dst_ip=22.214.171.124:443 - queue=0x0 //worker | DEBUG [packet_processing.c:98] success add a flow to flow hash table //worker | DEBUG [packet_processing.c:90] packet(74)(-2): - src_ip=126.96.36.199:443 - dst_ip=188.8.131.52:33080 - queue=0x0 //worker | DEBUG [packet_processing.c:98] success add a flow to flow hash table //worker | DEBUG [packet_processing.c:90] packet(66)(0): - src_ip=184.108.40.206:33080 - dst_ip=220.127.116.11:443 - queue=0x0 //worker | ERROR [packet_processing.c:105] unhandled error occur
The DSA device supports both Dedicated Work Queues and Shared Work Queues. Currently, config script hardcodes some values i.e. mode, priority, so it is impossible to choose Work Queue mode. This patch extends script functionality so WQs may be configured in a more specific manner. Now, it is possible to:
- choose between shared and dedicated WQ mode
- specify WQ priority
- specify threshold value for Shared WQ
- specify the type of WQ
Signed-off-by: Klimowicz, PatrykX [email protected]
in case of interface bonding the "check device names in routing table" will not match. this change adds all interfaces used in bonds as active.
The len variable, used in the computation of max_pkt_len could overflow, if used to store the result of the following computation:
ICE_SUPPORT_CHAIN_NUM * rxq->rx_buf_len
Since, we could define the mbuf size to have a large value (i.e 13312), and ICE_SUPPORT_CHAIN_NUM is defined as 5, the computation mentioned above, could potentially result in a value which might be bigger than MAX_USHORT.
The result will be that Jumbo Frames will not work properly
There are couple of issues when building with Clang:
- vector is a keyword and should not be used in code. I undefined it, but it would probably be better to just change the variable name.
- vector long is deprecated by Clang and should not be used. I switched here to vector int.
- Additionally, sys/platform/ppc.h is glibc-dependant and is not available in other libc's. Use the portable method of reading TBR when glibc is not used. Taken from https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/powerpc/sys/platform/ppc.h
This was tested with Clang 11.0.1 on FreeBSD 13.0-RC1 on POWER9 box.
In case rte_eth_dma_zone_reserve fails in ice_tx_queue_setup ice_tx_queue_release is called on 0 allocated but not initialized txq struct. This may happen on ENOMEM condition, size exhaustion of memconfig->memzones array as well as some others.
Without this type def we get a compiler error: error: expected ')' before 'PRId64' Similar to the errors here: http://mails.dpdk.org/archives/test-report/2022-February/256520.html
This is when being compiled on Cent7 using gcc version 4.8.5