summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk
AgeCommit message (Collapse)AuthorFilesLines
2024-09-09dpdk: add support to disable interrupt modeMohsin Kazmi2-0/+8
Type: improvement Change-Id: I4864dc2af808aa76ecbc9ade0e86e1a781e6b704 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2024-08-21dpdk: Move file-prefix flag processing into linux only blockTom Jones1-1/+3
Type: improvement Change-Id: I01a228618db72f8db4e439c6ad636defe79a695a Signed-off-by: Tom Jones <thj@freebsd.org>
2024-06-19dpdk: xstats vecor stuck at 0 elementsOle Troan1-7/+19
Fixes: dd6fb60f1794fc08ec40598a67dc70f942c200d1 Type: fix Change-Id: I2429715a954361ceea969191493c15bef21e2040 Signed-off-by: Ole Troan <otroan@employees.org>
2024-06-18dpdk: expose xstats in stats segmentOle Troan3-12/+90
Expose DPDK xstats in the stat segment. Represented as a 2D array. Thread by sw_if_index. Each counter has the same name as the corresponding xstats counter, under /if/<driver-name>/<xstats-name> Type: improvement Change-Id: Icd34b46e2b4d708f1c9a7063d6afd4ced3dfa4f5 Signed-off-by: Ole Troan <otroan@employees.org>
2024-05-14dpdk: Only prealloc huge pages on LinuxTom Jones1-1/+9
Type: improvement Change-Id: I4d9c0f96d81c8b510086a54990b3fcd3d5fdb695 Signed-off-by: Tom Jones <thj@freebsd.org>
2024-05-06dpdk: Only use --file-prefix flag on LinuxTom Jones1-0/+2
--file-prefix is only supported by DPDK on Linux currently. Type: improvement Change-Id: I47765ea666b7d14011804e7cc90d9035bce1bc93 Signed-off-by: Tom Jones <thj@freebsd.org>
2024-05-06dpdk: Only reconfigure max pipe size on linuxTom Jones1-1/+8
FreeBSD dynmically grows pipes based on usage and available system memory. Don't try to resize pipes on FreeBSD for now. Type: improvement Change-Id: I78b06dead5d42a3a7bdf634a67b43ef854e510f8 Signed-off-by: Tom Jones <thj@freebsd.org>
2024-04-24dpdk: remove unnecessary includesDamjan Marion1-7/+0
Type: improvement Change-Id: Idf3d440ee9763b54c973e6d87394b786eb66e307 Signed-off-by: Damjan Marion <damarion@cisco.com>
2024-04-24dpdk: remove dead codeDamjan Marion1-9/+0
Type: improvement Change-Id: I888f29e1ff15c5aa59a2a74dc0b2a818baf0bfde Signed-off-by: Damjan Marion <damarion@cisco.com>
2024-04-24dpdk: Use FreeBSD specific values for network interface classesTom Jones1-0/+10
The PCI class values used to identify devices are different between platforms. Add a selector for the values used on FreeBSD. Type: improvement Change-Id: I981f0dc24954457068fc94bcc4681b120ee253db Signed-off-by: Tom Jones <thj@freebsd.org>
2024-04-24dpdk: Only use vmbus on LinuxTom Jones1-1/+5
Type: improvement Change-Id: If181c4bfd7fc93583a608d478bd070930c853f52 Signed-off-by: Tom Jones <thj@freebsd.org>
2024-04-24dpdk: Only use vmbus on LinuxTom Jones2-0/+6
Type: improvement Change-Id: Iba3e287f420c0bdc8d248695163e7dfe1acd24d8 Signed-off-by: Tom Jones <thj@freebsd.org>
2024-04-24dpdk: Only require libnuma on LinuxTom Jones1-2/+4
On FreeBSD the numa APIs are always available. Type: improvement Change-Id: I34b8f6b0a81bc3d73f9b95b10d3a788dcdd71b65 Signed-off-by: Tom Jones <thj@freebsd.org>
2024-03-22dpdk-cryptodev: fix coverity issuesDmitry Valter1-1/+1
Copy v23.10-rc0-154-gfeda2ff64 fix to the unbatched path Type: fix Signed-off-by: Dmitry Valter <d-valter@yandex-team.com> Change-Id: I2f58ed9a39439b22918946f328f96e676c68add9
2024-03-12misc: remove GNU Indent directivesDamjan Marion7-32/+0
Type: refactor Change-Id: I5235bf3e9aff58af6ba2c14e8c6529c4fc9ec86c Signed-off-by: Damjan Marion <damarion@cisco.com>
2024-03-05dpdk: correct waiting timesGeorgy Borodin2-9/+53
When link state interval is 3 and stats interval is 10, updates for stats will be made every 12 seconds (next number after 10, that divisible by 3). And if you get counters every 30 secs, you will get ideal "saw"-line instead of real smooth chart. This commit makes smooth line on stats intervals that are divisors of the charts update interval (regardless of link state interval), and makes it possible to configure them. Type: fix Fixes: cb9cadad578297ffd78fa8a33670bdf1ab669e7e Change-Id: Ia4350467be2b0ec0c1be37c7fda63f43b3330f44 Signed-off-by: Georgy Borodin <bor1-go@yandex-team.ru>
2024-03-05vnet: fix format of deleted sw interfacesVladislav Grishenko1-6/+4
As similar 535364e90459566b603661c3dbe360c72f59ad71 is merged, printing possibly deleted interfaces by index only in all the rest cases. Type: improvement Signed-off-by: Vladislav Grishenko <themiron@yandex-team.ru> Change-Id: I4fa58b382c0279ff893523ba0188fdb9b09e10af
2024-01-16dpdk: add ID for QAT 4xxx series VF supportKai Ji1-1/+2
Type: feature Enable use of 4th gen QAT series devices. Change-Id: I890c1f1d305ff9b996322c29e9510cfe89d88d97 Signed-off-by: Kai Ji <kai.ji@intel.com>
2024-01-16dpdk: fix log_debug message formatGeorgy Borodin1-1/+1
debug+asan build will fail on initialisation when log level==debug Type: fix Fixes: 549838c81bd0d995f2b8569955afc33132582c77 Change-Id: Ic64b376727d49f89790fb29bd03a0a2520625cdc Signed-off-by: Georgy Borodin <bor1-go@yandex-team.ru>
2023-12-08dpdk: never override devname if set via configPeter Morrow1-5/+6
Even if the device name is specified in the startup config it may be appended to if the device is a switch domain member. This leads to unexpected device naming if an explicit device name was requested. Type: fix Change-Id: Ib56b4ac41c17008db55dc69497721e3cb7d540c1 Signed-off-by: Peter Morrow <pdmorrow@gmail.com>
2023-12-07dpdk-cryptodev: fix crypto-dispatch node statsPiotr Bronowski2-11/+7
This patch introduces a fix for correcting a counter for the number of processed vectors in the crypto-dispatch node. Type: fix Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: Icaeb925a352a9ac766652f43c4e752f6727cdeb9
2023-11-20dpdk: fix description for mlx5_pci driverNobuhiro MIKI1-1/+1
This is because mlx5_pci is also compatible with another series of NICs such as ConnectX-5 and ConnectX-6. Type: fix Change-Id: I10f0468bbe36ab61c72fb3dc0aa898f8e2f9e88c Signed-off-by: Nobuhiro MIKI <nmiki@yahoo-corp.jp>
2023-11-06dpdk: correct the printing of Rx offloading flagsJieqiang Wang1-1/+1
DPDK added new Rx checksum flags[1] to handle cases like the virtual drivers. Current check of flags is not strict enough for flags like RTE_MBUF_F_RX_IP_CKSUM_NONE and will always be true no matter the checksum in packet is good or bad. Fix this issue by comparing the result of AND operation with the correspinding Rx checksum flags. Before this patch, packet trace prints the offload flags as below: Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_IP_CKSUM_NONE (0x0090) no IP cksum of RX pkt. PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid PKT_RX_L4_CKSUM_NONE (0x0108) no L4 cksum of RX pkt. After this patch, packet offload flags would be like: Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid Type: fix [1] https://github.com/DPDK/dpdk/commit/5842289a546ceb0072bd7faccb93821e21848e07 Signed-off-by: Jieqiang Wang <jieqiang.wang@arm.com> Change-Id: I3182022d9ccd46b2fc55bb3edfbfac9062ed7c89
2023-10-17buffers: introduce vlib_buffer_template_tDamjan Marion1-10/+10
Type: improvement Change-Id: Ie86a5edf2ada21355543e9a0382052b16ff86927 Signed-off-by: Damjan Marion <damarion@cisco.com>
2023-10-14feature: remove unused codeDamjan Marion1-1/+1
Type: improvement Change-Id: If775b1d145e462346de562a3c893f302e8c7b814 Signed-off-by: Damjan Marion <damarion@cisco.com>
2023-10-12dpdk: add Mellanox BlueField NICsAlexander Kozyrev1-0/+12
List BlueField NICs as a supported PCI devices. Type: feature Change-Id: Ida2300df516ab9cd2fcde1f816bbdc081016039a Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
2023-10-01flow dpdk avf: add support for using l2tpv3 as RSS typeXinyao Cai1-0/+1
This patch adds support for using l2tpv3 as RSS type Type: feature Signed-off-by: Xinyao Cai <xinyao.cai@intel.com> Change-Id: Ic3e0935a4754d084184f1cc38ea9531ddfd9e7bc
2023-09-28dpdk-cryptodev: improve dequeue behavior, fix cache stats loggingPiotr Bronowski4-76/+88
This patch provides minor improvements to the logic governing dequeuing from the ring. Previously whenever a frame was dequeued we've been trying to dequeue from the ring another one till inflight == 0. Now threshold is set for 8 frames pending in the cache to be consumed by the vnet. This threshold has been chosen based on cache ring stats observation in the system under load. Some unnecessary logic for setting deq_tail has been removed. Also logging has been corrected, and cache ring logic simplied. Type: improvement Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I19f3daf5913006e9cb23e142a163f596e85f5bda
2023-09-28dpdk: add ConnectX-6LX and ConnectX-7 supportAlexander Kozyrev1-3/+9
List Mellanox ConnectX-6LX and ConnectX-7 as a supported PCI devices. Type: feature Change-Id: Ieeca3f214d08f29238c387354055ac1320cab75f Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
2023-09-07dpdk-cryptodev: fix cache ring stats cli commandPiotr Bronowski1-14/+12
The logic for calcuating processed elements in the cache ring was broken. In case tail and deq_tail equals and frame element pointed by the tile is not NULL it means there is exactly one processed element in the ring. Type: fix Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I69c978334fc952049393214ccc9cc5245351f7f7
2023-08-22dpdk-cryptodev: fix coverity issuesPiotr Bronowski2-5/+8
This patch addresses coverity issues CID 322716 and CID 322717. Type: fix Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I59d6f40c1af8e829d8cb3c042a52e144aeaf1e6b
2023-08-18dpdk-cryptodev: improve cryptodev cache ring implementationPiotr Bronowski4-239/+353
Sw ring is renamed to the cache ring. This name better reflects the puropse of this ring. We've introduced push/pop functions, as well as other utility functions which remove code repetition. Error handlig is improved: previously in case of an error all frame elements were marked as bad, now only these for which errors occured have the error status set. Unnecessary stats counters have been removed. Type: improvement Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I2fd42a529ac84ce5ad260611d6b35a861d441c79
2023-07-25dpdk: fix signed single bit fieldTianyu Li1-8/+8
clang-16 complains about signed one-bit bitfield value changes from 1 to -1. Use unsigned type instead. Type: fix Signed-off-by: Tianyu Li <tianyu.li@arm.com> Change-Id: I84f8cf314d36183a5e6f544cd756c01d1d10a1a5
2023-07-06dpdk-cryptodev: introduce sw_ring to the crypto op data pathPiotr Bronowski2-124/+235
This patch introduces sw_ring to the crypto op data path implementation, so that raw data path and crypto op data path use same mechanism of processing async frames. Crypto op ring has been removed from the implementation. Type: improvement Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: Id823f80a88cfa0ff40252616a36de8bb044c7f45
2023-06-29dpdk-cryptodev: sync mbuf length with corresponding vlib bufferPiotr Bronowski1-12/+21
When vlib buffer is processed on vnet side its length is corrected by cipher padding and icv_sz. These changes need to be reflected in the mbuf internals. Type: fix Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I0aa03f67f556dfc8f9a577ca1967210527221e02
2023-06-19dpdk-cryptodev: enq/deq scheme reworkPiotr Bronowski4-223/+210
This rework tries to address issues found on SPR QAT, for traffic reaching max possible throughoutput for single QAT PF packet drops were observed. Fix changes enq/deq scheme by utilizing software ring in enq call from VNET but enq and deq to QAT happens only in deq callback function what should enable better utlization of hardware resources. Type: improvement Signed-off-by: Dastin Wilski <dastin.wilski@gmail.com> Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I2e8c473d20a269fd5e93f0c8d1f8c8aa193712bd
2023-06-13dpdk-cryptodev: introduce sw_ringPiotr Bronowski2-0/+66
This patch introduces sw_ring. This ring is used in next set of patchas and plays role of a buffer for QAT, allowing collecting frame elements in case QAT queue is fully utilized, and assembling frame from QAT dequeued elements. Type: improvement Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Signed-off-by: Dastin Wilski <dastin.wilski@gmail.com> Change-Id: I20718e200986ab4dba5cbc31c05a904072a6981a
2023-06-01crypto: make crypto-dispatch node working in adaptive modeXiaoming Jiang1-2/+1
This patch can make crypto dispatch node adaptively switching between pooling and interrupt mode, and improve vpp overall performance. Type: improvement Signed-off-by: Xiaoming Jiang <jiangxiaoming@outlook.com> Change-Id: I845ed1d29ba9f3c507ea95a337f6dca7f8d6e24e
2023-05-19dpdk: fix compatibility with DPDK < 21.11Andrew Ying2-2/+1
Signed-off-by: Andrew Ying <hi@andrewying.com> Type: fix Change-Id: I3c428c90146387ad9ce291c7f646d74f06952b40
2023-05-19dpdk: fix format device name using wrong indexDaniel Ding1-10/+10
When I setup vpp by netvsc driver, occurs the following crash: (format_dpdk_device_name) assertion `(i) < vec_len (dm->devices)' fails vnet[100166]: #6 0x00007f434d651f6a _clib_error + 0x2da vnet[100166]: #7 0x00007f430b4bef64 format_dpdk_device_name + 0xf4 vnet[100166]: #8 0x00007f434d6555f3 do_percent + 0xee3 vnet[100166]: #9 0x00007f434d654359 va_format + 0xb9 vnet[100166]: #10 0x00007f434d7ac16e vlib_log + 0x3ce vnet[100166]: #11 0x00007f430b49ebe3 dpdk_device_start + 0x193 vnet[100166]: #12 0x00007f430b4aa233 dpdk_interface_admin_up_down + 0x163 vnet[100166]: #13 0x00007f434d988fc8 vnet_sw_interface_set_flags_helper + 0x378 vnet[100166]: #14 0x00007f434d989338 vnet_sw_interface_set_flags + 0x48 This patch fix it by device_index as a index for devices vec, and not dpdk port_id. Type: fix Change-Id: I84c46616d06117c9ae3b2c7d0473050f1b8ded5f Signed-off-by: Daniel Ding <danieldin95@163.com>
2023-05-16dpdk: fix format rx/tx burst function name failedXiaoming Jiang1-8/+9
Type: fix Signed-off-by: Xiaoming Jiang <jiangxiaoming@outlook.com> Change-Id: I9971e69135e0652a36e4b4754774a43ea1d92e8b
2023-05-15dpdk: Be wary of the return value from rte_eth_dev_socket_idSteven Luong1-1/+7
Prior to dpdk-22.11, VPP can count on rte_eth_dev_socket_id to return numa node 0 if the device didn't set it. Ever since below patch is committed in dpdk https://patchwork.dpdk.org/project/dpdk/patch/20220929120512.480-1-olivier.matz@6wind.com/#152498 the aforementioned assumption is no longer true. If the device didn't set the numa node, VPP gets -1 from the aforementioned API call. This causes VPP to crash. This fix is to set the numa node to 0 if the API returns -1, or SOCKET_ID_ANY Type: fix Change-Id: I2fde2870e5a3eb98473fe8d119fef594bfba9a8d Signed-off-by: Steven Luong <sluong@cisco.com>
2023-04-25dpdk: code preparation for bumping to DPDK 22.11Xinyao Cai9-34/+147
This patch prepares code for bumping DPDK version to 22.11, but the DPDK version of this patch keeps at 22.07 for compatibility. the "no-dsa" parameter in DPDK configuration is removed, the "blacklist" parameter can be used to block the related DSA devices. Type: feature Signed-off-by: Xinyao Cai <xinyao.cai@intel.com> Change-Id: I08787c6584bba66383fc0a784963f33171196910
2023-03-29dpdk-cryptodev: fix name formatting of session poolsGabriel Oginski1-2/+2
Originally the name for each session pool is incorrectly prepared. It doesn't have right length. It is not null terminated. The fix corrects the name formatting for each session pool. Type: fix Signed-off-by: Gabriel Oginski <gabrielx.oginski@intel.com> Change-Id: I67da3d64702ccb27a5907825528f8c95d91040bb
2023-03-24dpdk-cryptodev: fix formatting name of poolsGabriel Oginski1-2/+2
Originally the name for each session pool can be incorrect prepared. The fix changes formatting for name for each session pool. Type: fix Signed-off-by: Gabriel Oginski <gabrielx.oginski@intel.com> Change-Id: I42e0752f9f46c5a42524ec7b863a7c9dd3c23110
2023-03-14dpdk: enable Google Virtual EthernetMarvin Liu2-0/+7
Recognize and drive google virtual ethernet (gve) in google cloud. Type: feature Signed-off-by: Marvin Liu <yong.liu@intel.com> Change-Id: Ia559615ac059cabbca5d10bcd4049e87beaad638
2023-03-06dpdk: plugin init should be protect by thread barrierXiaoming Jiang1-0/+2
Witout thread barrier, when dpdk_process_node initiating dpdk lib, workers thread may also be initiating. Main and workers threads may both setting error_main info, that will cause memory ASAN issue. Type: fix Signed-off-by: Xiaoming Jiang <jiangxiaoming@outlook.com> Change-Id: I87b73b310730719035d4985a2cff2e3308120ec2
2023-03-06flow dpdk: introduce IP in IP support for flowXinyao Cai1-20/+149
This patch introduces IP in IP packet support for flow cli and dpdk plugin. Specifically, the following IP in IP packet types are supported: MAC-IPv4-IPv4-TCP/UDP/None, MAC-IPv4-IPv6-TCP/UDP/None, MAC-IPv6-IPv4-TCP/UDP/None, MAC-IPv6-IPv6-TCP/UDP/None, IP in IP flow rules can be created by using the following new keywords in vppctl: in-src-ip, in-dst-ip : to provide information for inner IPv4 header in-ip6-src-ip, in-ip6-dst-ip: to provide information for inner IPv6 header in-proto : to specify inner transport layer protocol type (TCP or UDP) in-src-port, in-dst-port : to provide information for inner TCP/UDP header An example to create flow rule for MAC-IPv6-IPv6-TCP: test flow add index 0 ip6-src-ip any ip6-dst-ip any in-ip6-src-ip any in-ip6-dst-ip any in-proto tcp in-src-port 1234 in-dst-port any rss function default Another example to create flow rule for MAC-IPv6-IPv6: test flow add index 0 ip6-src-ip any in-ip6-src-ip any rss function default Type: feature Signed-off-by: Xinyao Cai <xinyao.cai@intel.com> Change-Id: I6a1ca36d47eb65b9cb5a4b8d874b2a7f017c35cd
2023-02-08avf dpdk: fix incorrect handling of IPv6 src address in flowTing Xu1-1/+2
In current flow creating process in native avf and dpdk-plugins, when parsing the input arguments, it does not copy IPv6 src address correctly, so that IPv6 src address will not be configured in any flow rule, and any packet with the same address will not be matched. Type: fix Signed-off-by: Ting Xu <ting.xu@intel.com> Change-Id: Ic957c57e3e1488b74e6281f4ed1df7fd491af35c
2023-01-26dpdk: add intf tag to dev{} subinputNathan Skrzypczak2-0/+6
This patch allows to pass a tag when specifying the dpdk `dev { }` interface configuration. It allows a control plane generating a vpp.conf file to retreive the resulting mapping between dpdk interfaces & sw_if_indices in VPP without having to change the interface name exposed to the user. Type: feature Change-Id: I55907417de0083b82d4a127172816cec3459acf3 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>