summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk
AgeCommit message (Collapse)AuthorFilesLines
2021-05-06vlib: fix the offload flags sizeMohsin Kazmi1-1/+2
Type: fix Change-Id: I433fe3799975fe3ba00fa30226f6e8dae34e88fc Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-05-05vlib: move offload flags to 1st cacheline in vlib_buffer_tMohsin Kazmi1-1/+1
Type: improvement Some tests i.e. ipsec see performance regression when offload flags are moved to 2nd cacheline. This patch moves them back to 1st cacheline. Change-Id: I6ead45ff6d2c467b0d248f409e27c2ba31758741 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-05-04dpdk: allow configuration of max-simd-bitwidthRay Kinsella2-2/+34
Enable configuration of DPDK's max-simd-bitwidth through the startup.conf Type: improvement Change-Id: I455148714ffc7caa257931526f310dbefd7ab01c Signed-off-by: Ray Kinsella <mdr@ashroe.eu>
2021-05-01vlib: refactor trajectory trace debug featureBenoît Ganne2-15/+0
trajectory trace has been broken for a while because we used to save the buffer trajectory in a vector pointed to in opaque2. This does not work well when opaque2 is copied (eg. because of a clone) as 2 buffers end up sharing the same vector. This dedicates a full cacheline in the buffer metadata instead when trajectory is compiled in. No dynamic allocation, no sharing, no tears. Type: refactor Change-Id: I6a028ca1b48d38f393a36979e5e452c2dd48ad3f Signed-off-by: Benoît Ganne <bganne@cisco.com>
2021-04-30build: declare some CMake variables as advancedDamjan Marion1-1/+1
Type: make Change-Id: I780c1c81a50cb92bc89c05856efd8ef88479c0ab Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-04-23dpdk: support md5 async handler in dpdk cryptodevAlexander Chernavin1-0/+3
With this change, enable MD5 with AES-CBC support in dpdk cryptodev. Type: improvement Signed-off-by: Alexander Chernavin <achernavin@netgate.com> Change-Id: Ic587aaa1fa0dc102e36eb34f329ef21a16156f26
2021-04-20dpdk: fix mlx4 mlx5 detection in plugin buildMohammed Hawari1-1/+1
Since the move to DPDK 21.02, compatibility build symbols were depreca- ted, breaking the static linkage of the DPDK plugin to libibverbs. Change-Id: I2fec0807e4c0eb00268618f1495af862eede9081 Type: fix Fixes: 5f35a185d5afee2c364fe84f33922bac1a808113 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
2021-04-15avf: remove the vxlan flow supportChenmin Sun1-0/+1
This patch fixes a vxlan flow type checking bug which is introduced in commit 7a016e87e473. It is the native avf instead of dpdk that doesn't support vxlan flow offloading. So this patch removes Vxlan flow supporting in native avf_plugin and adds the vxlan flow back to dpdk_plugin. Type: fix Signed-off-by: Chenmin Sun <chenmin.sun@intel.com> Change-Id: I1a72629cee462b890327c589c846f6d532b2d61d
2021-04-14dpdk: add RSS capability flag to iavf PMD in dpdk_pluginChenmin Sun1-4/+4
Type: fix Signed-off-by: Chenmin Sun <chenmin.sun@intel.com> Change-Id: I215b660a466e0579918e49de543163fd28f95c22
2021-04-12avf: avf flow bug fixChenmin Sun1-1/+0
This patch fixes the below bugs in avf flow: 1. remove the VXLAN flow as it is not yet supported 2. fix a typo in IPv6 flow 3. fix the wrong type of the AH flows Also did some cleanup in this patch Type: fix Signed-off-by: Chenmin Sun <chenmin.sun@intel.com> Change-Id: I5eae131f1e89071364a41b7006a00e8425089a4f
2021-04-09dpdk: selection of cryptodev engine data-pathFan Zhang6-2731/+2078
Type: improvement This patch combined cryptodev op and cryptodev raw API data paths into one and makes the engine run-timely select which data path is used: if all cryptodev devices support RTE_CRYPTODEV_FF_SYM_RAW_DP feature flag, the raw data path API is used, otherwise the traditional data path is used. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: Ibbd7c4405288bd9a48a34878954fd3040df7b4ad
2021-03-31dpdk: fix packet offset for GCM crypto opsRobert Shearman1-0/+1
The crypto op data offset passed into DPDK is relative to the mbuf buffer address plus the mbuf data offset, therefore the mbuf data offset needs to be set rather than left at whatever previous value it was at, which is likely to be incorrect and result in the wrong portion of the packet being encrypted/decrypted for GCM. The fe->crypto_start_offset field is relative to the start of the vlib buffer (as opposed to the current data pointer), so set the mbuf data_off field to VLIB_BUFFER_PRE_DATA_SIZE when performing a GCM crypto op enqueue to match the crypto_start_offset semantics. This then matches the behaviour in the non-GCM case. Type: fix Change-Id: I0ac2a44139387158765a3e04cfcaa5ee6f11d395 Signed-off-by: Robert Shearman <robertshearman@gmail.com>
2021-03-26vlib: introduce vlib_get_elog_main()Damjan Marion1-5/+2
Type: improvement Change-Id: I73383eb15186021cd6527d112da8443a0082f129 Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-26vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()Damjan Marion1-1/+1
Type: improvement Change-Id: If3da7d4338470912f37ff1794620418d928fb77f Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-19interface: add capabilities flagsMohsin Kazmi2-9/+13
Type: improvement This patch adds flags to represent the modern NICs capabilities. Change-Id: I96d38d9ab7eac55974d72795cd100d8337168e1e Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-03-18dpdk: don't mask interrupts for some driversMohammed Hawari4-9/+38
It is well known that for some NICs, masking interrupts results in delaying desc writebacks, which breaks poll mode. This fix introduces an "int-unmaskable" dpdk device flag to identify such devices (typically Intel FVL). For such devices, interrupts are masked by a call to file_update(...,UNIX_FILE_UPDATE_DELETE) instead of rte_eth_dev_rx_intr_disable (...) Change-Id: Ifbc701aebe8572319b7aae19382bd683a47fc3cf Type: fix Fixes: 19ff0c3699342b512c03362b3815df684a661f49 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
2021-03-17dpdk: cryptodev session managementpibr1-108/+377
Ensure that dpdk_cryptodev engine async handlers are registered for the set of algorithms supported by all cryptodevices in the system. Type: improvement Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com> Change-Id: I8293d87c6f07e935a1a0637704f24918cd3e132a
2021-03-15dpdk: implement interrupt modeMohammed Hawari4-12/+116
Change-Id: I6ababc99ecf559327a4370914580c98d32680175 Type: feature Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
2021-03-05dpdk: fix rte mempool for rx_queuesVladimir Ratnikov1-1/+9
Change dpdk_ops_vpp_get_count() return value from 0 to actual available pool size; For some drivers/envs(azure,vmbus) rx_queue size will be zero and the only 1 element will be created (0 + 1) When more than one packet will arrive, it will cause SEGFAULT Type: fix Signed-off-by: Vladimir Ratnikov <vratnikov@netgate.com> Change-Id: Ibe7da6acc91200bec33d99f580044456d8984110
2021-03-04dpdk: fix include directories with system dpdkRobert Shearman1-0/+1
Add the DPDK_INCLUDE_DIRS variable which is set by pkg_check_modules to the include directories to allow use of system DPDK where the headers aren't under standard include directories. Type: fix Fixes: f15a5791ba870a98a2ab7dec101bbbb9b6e266c1 Change-Id: Ifd4b4170572911b6e0580cdf114ad87cfa771931 Signed-off-by: Robert Shearman <robertshearman@gmail.com>
2021-03-04dpdk: enable AVX-512 on ICLRay Kinsella1-0/+5
Enable DPDK AVX-512 Vector PMDs on Intel Icelake Type: improvement Signed-off-by: Ray Kinsella <mdr@ashroe.eu> Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> Change-Id: Ie5d5bf54ccaa65c1d053d56a2f2973fe8625193b
2021-03-04dpdk: deprecate ipsec backendFan Zhang11-4533/+578
Type: refactor DPDK crypto devices are now accessible via the async infra, so there is no need for the DPDK ipsec plugin. In addition this patch fixes the problem that cryptodev backend not working when master core and worker cores lies in different numa nodes. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: Ie8516bea706248c7bc25abac53a9c656bb8247d9
2021-02-26ipsec: move the IPSec SA pool out of ipsec_mainNeale Ranns3-8/+4
Type: refactor this allows the ipsec_sa_get funtion to be moved from ipsec.h to ipsec_sa.h where it belongs. Also use ipsec_sa_get throughout the code base. Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: I2dce726c4f7052b5507dd8dcfead0ed5604357df
2021-02-19dpdk: fix cryptodev offset updateFan Zhang1-11/+8
Type: fix This patch fixes the missed crypto and integ offset update for every packet. Previously the offset is updated only when the key is changed. This is ok for encryption but not always true for decryption. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: Iccd0011f4ae488746ce487a14b94ddd24fb0c07c
2021-02-15vlib: refactor checksum offload supportMohsin Kazmi1-12/+9
Type: refactor This patch refactors the offload flags in vlib_buffer_t. There are two main reasons behind this refactoring. First, offload flags are insufficient to represent outer and inner headers offloads. Second, room for these flags in first cacheline of vlib_buffer_t is also limited. This patch introduces a generic offload flag in first cacheline. And detailed offload flags in 2nd cacheline of the structure for performance optimization. Change-Id: Icc363a142fb9208ec7113ab5bbfc8230181f6004 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-02-12dpdk: use whole vmbus address as hash key for devconfVladimir Ratnikov2-21/+22
u32[0] is not enough unique for some platforms like azure where several devices(not only network) can have almost the same addresses and this can cause collisions. Change hash to mhash type for vmbus devices with key of whole 16 bytes of vmbus address. Type: improvement Signed-off-by: Vladimir Ratnikov <vratnikov@netgate.com> Change-Id: Ic6c6a657ae29f45beddd0c69d8e785e702349460
2021-02-10ipsec: Use the new tunnel API types to add flow label and TTL copyNeale Ranns1-6/+6
support Type: feature attmpet 2. this includes changes in ah_encrypt that don't use uninitialised memory when doing tunnel mode fixups. Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: Ie3cb776f5c415c93b8a5ee22f22586fd0181110d
2021-02-09Revert "ipsec: Use the new tunnel API types to add flow label and TTL copy"Matthew Smith1-6/+6
This reverts commit c7eaa711f3e25580687df0618e9ca80d3dc85e5f. Reason for revert: The jenkins job named 'vpp-merge-master-ubuntu1804-x86_64' had 2 IPv6 AH tests fail after the change was merged. Those 2 tests also failed the next time that job ran after an unrelated change was merged. Change-Id: I0e2c3ee895114029066c82624e79807af575b6c0 Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2021-02-08ipsec: Use the new tunnel API types to add flow label and TTL copyNeale Ranns1-6/+6
support Type: feature Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: I6d4a9b187daa725d4b2cbb66e11616802d44d2d3
2021-01-21dpdk: do not use TSO for small packetsSomnath Kotur1-2/+5
Asking for TSO (TCP Segmentation Offload) on packets that are already smaller than (headers + MSS) does not make sense and may not work on some HW. Fix to only set the TSO flag when a segmentation offload is really required, i.e when packet is large enough. Type: improvement Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com> Change-Id: I7830ae8474581c8e518fb4910f7863e10346bb62 Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
2021-01-21interface: rx queue infra rework, part oneDamjan Marion4-19/+28
Type: improvement Change-Id: I4008cadfd5141f921afbdc09a3ebcd1dcf88eb29 Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-01-21dpdk: terminate device devargs stringMatthew Smith1-1/+2
Type: fix When a device is whitelisted with devargs arguments specified, the string that is generated and added to conf->eal_init_args is not explicitly terminated with 0. If the formatted string takes up all of the memory allocated to the vector which stores it and it is used later as a string in a format() or printf() call, any nonzero characters stored in memory at the address immediately following the memory allocated for the vector will be erroneously appended to the string. Terminate the string with 0 to ensure that this does not happen. Change-Id: I20a78d994daad93bf5aecab5c03d705022e882ec Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2021-01-21dpdk: add support for system libdpdkNathan Moos1-85/+96
Type: improvement This patch enables dynamically linking the dpdk plugin against a system-wide packaged version of dpdk. Change-Id: I2276d125f39986b0e1788c7b52b94485cdbcd855 Signed-off-by: Nathan Moos <nmoos@cisco.com>
2021-01-18ipsec: Support MPLS over IPSec[46] interfaceNeale Ranns1-13/+6
Type: feature Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I89dc3815eabfee135cd5b3c910dea5e2e2ef1333
2021-01-11dpdk: allow configure individual VMBUS devicesVladimir Ratnikov3-48/+220
now startup.conf supports confuguration for VMBUS devices as for PCI devices for whitelisting/blacklisting dpdk { dev fa5a6e7a-cf3a-4b98-9569-addb479b84bc } with sub-configuration as for PCI devices dpdk { blacklist fa5a6e7a-cf3a-4b98-9569-addb479b84bc } where fa5a6e7a-cf3a-4b98-9569-addb479b84bc - example of UUID struct vlib_vmbus_addr_t changed to union with UUID described fields Added device_config_index_by_vmbus_addr blacklist_by_vmbus_addr to enumerate available device configs hash_key is as_u32[0] field(last 4 bytes of UUID) Lost of precision against full UUID, but 2^32 is enough to handle all the devices available Added is_blacklisted check while creating vnet devices in order to supress creation of dev if it's blacklisted Type: feature Signed-off-by: Vladimir Ratnikov <vratnikov@netgate.com> Change-Id: Id82611e54fed082190e488c7e5fbe14ecbe5b2ab
2020-12-18dpdk: rebase cryptodev engine for dpdk 20.11Fan Zhang2-121/+127
Type: feature This patch rebase cryptodev engine for the new cryptodev raw APIs introduced in DPDK 20.11. Signed-off-by: Piotr Bronowski <PiotrX.Bronowski@intel.com> Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: I4da335379c5dfeb358017092086d305a01b652dc
2020-12-14misc: refactor clib_bitmap_foreach macroDamjan Marion2-6/+6
Type: refactor Change-Id: I077110e1a422722e20aa546a6f3224c06ab0cde5 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-14misc: move to new pool_foreach macrosDamjan Marion1-2/+2
Type: refactor Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-11dpdk: bump to dpdk 20.11Fan Zhang5-10/+28
Type: feature This patch bumps DPDK to 20.11. In addtion a few changes are made: - Changed dynamic rx offload flag display. - Updated deprecating options. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: I6e4399d551a7eb8e1a9fc9ef6e39e74266450ad4
2020-12-07dpdk: support mlx drivers linked with rdma-coreMohammed Hawari1-3/+9
Change-Id: I8b8e4420f7643df95c27f4a4764809e8ddd2d12e Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: improvement
2020-12-04crypto: fixed async frame enqueue race conditionPiotrX Kleski1-1/+0
Type: fix To avoid race condition happening in async crypto engines, async frame state and thread index set should happen before enqueue. In addition as the enqueue handler already returns the enqueue status, when an enqueue is failed, the async crypto engine shall not worry about setting the async frame state but let the submit_open_frame function to do just that. Signed-off-by: PiotrX Kleski <piotrx.kleski@intel.com> Reviewed-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: Ic1b0c94478b3cfd5fab98657218bbd70c46a220a
2020-11-27dpdk: fix cryptodev compileFan Zhang1-45/+6
Type: fix VPP 20.09 used new cryptodev raw APIs in cryptodev_dp_api.c provided by the DPDK 20.08 patch attached. The APIs has been updated between now and then and will cause Cryptodev engine compile failed when bumping DPDK to 20.11 due to the incompatible API formats. As a temp solution to successfully bumping DPDK version this patch makes the newer DPDK version using old cryptodev APIs by compiling cryptodev.c instead. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: I3db607c8c1b2b028166a750c4d66dfc6ff18814c
2020-11-24dpdk: fix eal in nohugtlb modeNathan Skrzypczak1-16/+22
When running with `dpdk { no-hugetlb }` dont try to allocate hugepages and remove --in-memory as this seems to be rejected by DPDK Type: fix Change-Id: I02c56ade0b4e706b3f76331745e2af64bb62f6e0 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-11-19dpdk: Telemetry thread is off by default.Dmitry Vakrhushev2-0/+9
Currently thread with telemetry is enabled by default, to prevent to use resources, thread should be off. The thread can be switch on back using additional option in the dpdk's stanza. dpdk { telemetry } Type: feature Change-Id: I1c25e8ee99f31dd01dc372f54e77e81a5bb67126 Signed-off-by: Dmitry Vakrhushev <dmitry@netgate.com>
2020-11-19dpdk: remove dpdk_early_initDamjan Marion1-52/+0
We cannot disable dpdk plugin if hugepages are not present, as there are some valid uses cases where dpdk works unpriviledged without hugepages. Type: fix Change-Id: If67d8c941617ac0f16d496655d2bb6e489d34ad4 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-11-18dpdk: change mlx5 pmd name in foreach_dpdk_pmdMatthew Smith1-1/+7
Type: fix With DPDK 20.08, mlx5 devices get bound to the mlx5_pci PMD instead of net_mlx5. Update the name in foreach_dpdk_pmd so the PMD will be correctly recognized during initialization. Change-Id: I1863ec55da9fcf6a289959dff22ca2dcc5d114bc Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2020-11-09vlib: fix trace number accountingBenoît Ganne2-22/+31
When using classifier to filter traces, not all packets will be traced. In that case, we should only count traced packets. Type: fix Change-Id: I87d1e217b580ebff8c6ade7860eb43950420ae78 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-10-21vlib: print logs to stderr if interactive or nosyslog setDamjan Marion5-12/+16
If VPP is started in interactive mode, instead of sending logs to syslog server we print them directly to stderr. Output is colorized, but that can be turned off with unix { nocolor } Type: improvement Change-Id: I9a0f0803e4cba2849a6efa0b6a86b9614ed33ced Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-21misc: minimize dependencies on udp.hFlorin Coras1-1/+1
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id13f33843b230a1d169560742c4f7b2dc17d8718
2020-10-21dpdk: Disable VLAN filtering for VLAN sub-interface in i40e driverDimitrios Markou1-2/+2
When creating a VLAN sub-interface on a Fortville i40e DPDK VF, the data plane does not work properly. Enabling vlan filter offload overrides the VLAN strip offload setting to on. The VLAN strip offload must be disabled for VPP VLAN sub-interfaces to work. Ticket: https://jira.fd.io/browse/VPP-1933 Type: fix Signed-off-by: Dimitrios Markou <dimitrios.markou@est.tech> Change-Id: I02c6980e3b01870b69a9375f281125ad48477827