summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk
AgeCommit message (Collapse)AuthorFilesLines
2019-05-17dpdk-ipsec: fix encrypt/decrypt single queueSergio Gonzalez Monroy6-39/+58
When the same worker thread processes packet for encrypt and decrypt, ie. single worker with bi-directional traffic, given that the queue is shared results in packets to be decrypted being dropped as the encrypt always happens first for each main loop. With this change, each crypto device queue is logically split into two queues, each half the real size, avoiding the described problem. Change-Id: Ifd3f15e316c92fbd6ca05802456b10a7f73f85da Signed-off-by: Sergio Gonzalez Monroy <sgmonroy@gmail.com>
2019-05-16init / exit function orderingDave Barach5-15/+20
The vlib init function subsystem now supports a mix of procedural and formally-specified ordering constraints. We should eliminate procedural knowledge wherever possible. The following schemes are *roughly* equivalent: static clib_error_t *init_runs_first (vlib_main_t *vm) { clib_error_t *error; ... do some stuff... if ((error = vlib_call_init_function (init_runs_next))) return error; ... } VLIB_INIT_FUNCTION (init_runs_first); and static clib_error_t *init_runs_first (vlib_main_t *vm) { ... do some stuff... } VLIB_INIT_FUNCTION (init_runs_first) = { .runs_before = VLIB_INITS("init_runs_next"), }; The first form will [most likely] call "init_runs_next" on the spot. The second form means that "init_runs_first" runs before "init_runs_next," possibly much earlier in the sequence. Please DO NOT construct sets of init functions where A before B actually means A *right before* B. It's not necessary - simply combine A and B - and it leads to hugely annoying debugging exercises when trying to switch from ad-hoc procedural ordering constraints to formal ordering constraints. Change-Id: I5e4353503bf43b4acb11a45fb33c79a5ade8426c Signed-off-by: Dave Barach <dave@barachs.net>
2019-05-14IPSEC: remove unecessary pass by reference of sequence numberNeale Ranns1-1/+1
Change-Id: Id406eb8c69a89c57305d8f138e8e6730037aa799 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-05-14IPsec: increment tunnel intf tx countersMatthew Smith1-0/+9
Recent changes removed the function that was incrementing the tx counters. Increment them in the esp_encrypt functions. Change-Id: I446333a23ccf66e34893adb2aa49af562cf35507 Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2019-05-09dpdk: fix return variable sizeZhiyong Yang1-2/+2
The function dpdk_ol_flags_extract should return u16 instead of u8. Change-Id: Id0b08b04c93598818f9a2eee5a88733900320dfa Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
2019-04-25Change dpdk thread data flags type to u16 from u8 to get more useful dataSimon Zhang2-6/+7
Change-Id: Idc3763c38f5aa638d4f290f4d4730577601d78b8 Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-04-25IPSEC; dpdk backend for tunnel interface encryptionNeale Ranns2-4/+75
Change-Id: Ide2a9df18db371c8428855d7f12f246006d7c04c Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-04-24dpdk: fix interface namingFlorin Coras1-1/+1
Change-Id: Ia092a93a7ac0cbf9338f9d4a5db8b94b23549a13 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-04-24dpdk: get a rid of "Invalid port_id=" log messageDamjan Marion1-3/+5
Change-Id: I65e7188c6893acca67455ff37f2dfbd0bedd5c09 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-04-23dpdk_esp_encrypt: add to prefetch dataZhiyong Yang1-3/+13
The memory areas storing vlib_buffer_t and ip4|6_and_esp_header_t are not prefetched. The patch help dpdk_esp_encrypt to reduce 18 clocks/pkt from 149 to 131 on Haswell when running IPsec in tunnel mode. Change-Id: I4f4e9e2b3982a4b7810cab8ed828a5e4631f8f8c Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
2019-04-17Predicate a packet whether be marked by PKT_RX_FDIR_ID instead of PKT_RX_FDIRSimon Zhang1-1/+1
Change-Id: I65b1af5fa0cec4f9789f91f720d1396d06fa0206 Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-04-17Default nums of RX/TX descriptors changed to 512 for 2M page on DVNZhiyong Yang1-1/+63
As DVN has fewer DTLB entries supported for 2M page, default numbers of RX/TX descriptors are changed to 512 if nums of RX/TX descriptors are not specified by VPP users. Change-Id: I076493b802b15d12750a5b49d1554da4d19ad460 Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
2019-04-16Add direct packets to specific flow action in dpdk flowSimon Zhang2-4/+17
Change-Id: I48cd8052f9509efdf13f64ab279edb66a2d4a0a9 Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-04-16flow: add rte_flow check before creating by rte_flow_validateSimon Zhang1-0/+14
Change-Id: Idfcf1644952d647c6e1b61216d9b365d58b77814 Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
2019-04-08rdma: fix DPDK MLX driver conflictBenoît Ganne1-5/+1
VPP rdma driver relies on an internal rdma-core not compatible with DPDK MLX driver. Force the use of external rdma-core through RTE_IBVERBS_LINK_DLOPEN DPDK build option and make sure internal rdma-core symbols are not leaked outside of the rdma plugin. Change-Id: I5b2281259f517c4e109d388d172b72eadd69986f Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-04-02dpdk: fix build error when mlx support enabledMatthew Smith1-1/+1
When building with environment variables set to enable mlx PMD support in DPDK, an error occurs: CMake Error at plugins/dpdk/CMakeLists.txt:104 (vpp_plugin_find_library): vpp_plugin_find_library Macro invoked with incorrect arguments for macro named: vpp_plugin_find_library Update a call to vpp_plugin_find_library() to include the right number of parameters. Change-Id: Ia0d66f93c6f94fdf822e2c3c4fe3f0ad01a90d57 Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2019-03-28ipsec: USE_EXTENDED_SEQ_NUM -> USE_ESNDamjan Marion3-5/+5
Change-Id: Ib828ea5106f3ae280e4ce233f2462dee363580b7 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-03-28cmake: add vpp_plugin_find_library macroDamjan Marion1-21/+9
Change-Id: I0b996460e05c40e74766563fb2a94c62a65063ce Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-03-28ipsec: anti-replay code cleanupDamjan Marion1-35/+15
Change-Id: Ib73352d6be26d639a7f9d47ca0570a1248bff04a Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-03-27ipsec: compress ipsec_sa_t so data used by dataplane code fits in cachelineDamjan Marion3-22/+24
Change-Id: I81ecdf9fdcfcb017117b47dc031f93208e004d7c Signed-off-by: Damjan Marion <damarion@cisco.com> Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-03-22dpdk: do not enable VLAN stripping on Cisco VIC adapters by defaultHyong Youb Kim1-11/+22
With the following local patch, VIC adapters remove default vlan tags from ingress packets. So, it is no longer necessary to enable VLAN stripping by default. This change also allows VLAN sub interfaces to work with VIC adapters. patches/dpdk_19.02/0001-net-enic-untag-default-vlan-by-default.patch Change-Id: I2e7d62c62120c351c27d827d90de4a8335efa044 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
2019-03-14dpdk: Add E810 family supportChenminSun3-0/+6
Change-Id: Id5b30d7a394551844a79b3d222d2d26194d033df Signed-off-by: ChenminSun <chenmin.sun@intel.com>
2019-03-13Add the SRIOV variant PCI Device ID of the Cisco VICJay Lubomirski1-1/+2
Change-Id: I572cbba817275d85c200a4b09a63f4650075f638 Signed-off-by: Jay Lubomirski <jlubomir@cisco.com>
2019-03-12dpdk: pass log-level configuration to EALStephen Hemminger3-31/+0
The log-level dpdk config value should be transparently forwarded to DPDK via EAL argument. Since DPDK now supports naming log-levels, VPP no longer needs to parse and call rte_set_loglevel(). This was the other part of the DPDK log-level change. It must have got missed during my initial checkin. Without it passing dynamic log-level values like are silently ignored. Fixes: 6ca6ac6c887e ("dpdk: support passing log-level") Change-Id: I732cec5f638c9924e3ffb04c4753f957e3633d64 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2019-03-01dpdk: update mlx[45] linking optionsMatthew Smith1-1/+1
Upstream DPDK changed the names of the options to use dlopen() with libibverbs and libmlx[45] from RTE_LIBRTE_MLX[45]_DLOPEN_DEPS to RTE_IBVERBS_LINK_DLOPEN (handles both mlx4 and mlx5). VPP's build option to enable this configuration when building DPDK no longer worked starting when VPP moved to DPDK 19.02. Update VPP's build options to enable the correct option name. Change-Id: I8e34e1d3fc4ee8aac4fd6f2a7d27177f2b0dea50 Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2019-02-26Move pcap rx/tx trace code out of the dpdk pluginDave Barach4-371/+0
Moved code to the ethernet input node, and the interface output path(s). Since we no longer skip ethernet-input, there's no reason for device drivers to know anything about pcap rx tracing, etc. Change-Id: I08d32fb1b90cbee1bd4f609837d533e047b36fa4 Signed-off-by: Dave Barach <dave@barachs.net>
2019-02-22Add no-append flag to vlib_frame_tDamjan Marion1-0/+1
Change-Id: I01c4f5755d579282773ac227b0bc24f8ddbb2bd1 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-02-19dpdk: update Cisco VIC port typeHyong Youb Kim1-4/+1
Recent VIC models can support 25, 50, and 100Gbps links. Use the helper (port_type_from_link_speed) to set the port type as it supports all possible link speeds. Change-Id: I748d8ac716a6393d116a9db8a599151c70a9000a Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
2019-02-19dpdk: do not shift PKT_RX_FDIRHyong Youb Kim1-1/+1
PKT_RX_FDIR is a bit flag, not a bit position. Change-Id: Ib31ec9257e906b045522fa7c2b515b7b0c13bb32 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
2019-02-18IPSEC: move SA counters into the stats segmentNeale Ranns2-4/+12
1) stats are accessed via the stat segment which is more condusive to monitoring 2) stats are accurate in the presence of multiple threads. There's no guarantee that an SA is access from only one worker. Change-Id: Id5e217ea253ddfc9480aaedb0d008dea031b1148 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-02-15dpdk-ipsec: store buffer index into crypto-op privateKingwel Xie5-44/+115
don't have to convert from mbuf to vlib_buffer then buffer index save a few clock cycles in crypto-input plus, a bit improvements of CLI 1. show more information, resource placement & qp stats 2. clear dpdk qp statistics cleanup cli as sugguested by Sergio Gonzalez Monroy Change-Id: Ic4fd65bfa9a6b05b344a9a40c554990dde072d19 Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>
2019-02-12fix assert failureDave Barach1-0/+6
Change-Id: I9a2e8ea2bf334dd8dabf3d25abbcc91087a43882 Signed-off-by: Dave Barach <dbarach@cisco.com>
2019-02-09buffers: fix typoDamjan Marion1-1/+1
Change-Id: I4e836244409c98739a13092ee252542a2c5fe259 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-02-07IPSEC: no second lookup after tunnel encapNeale Ranns1-4/+5
in the same maaner as with other tunnel tyeps we use the FIB to cache and track the destination used to reach the tunnel endpoint. Post encap we can then ship the packet straight to this adjacency and thus elide the costly second lookup. - SA add and del function so they can be used both directly from the API and for tunnels. - API change for the SA dump to use the SA type - ipsec_key_t type for convenience (copying, [un]formating) - no matching tunnel counters in ipsec-if-input Change-Id: I9d144a59667f7bf96442f4ca66bef5c1d3c7f1ea Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-02-06buffers: make buffer data size configurable from startup configDamjan Marion1-1/+1
Example: buffers { default data-size 1536 } Change-Id: I5b4436850ca18025c9fdcfc7ed648c2c2732d660 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-02-06dpdp-crypto: fix cryptodev segfault with dpdk 19.02Sergio Gonzalez Monroy1-11/+16
DPDK 19.02 adds two new fields to struct rte_cryptodev_qp_conf, which the current code was not initializing properly. Also session mempools are now required to have specific private data. For that just use the new API to create symmetric session pools. Change-Id: Ie732d4e10b908aeaea322717d6011113e3e7172c Signed-off-by: Sergio Gonzalez Monroy <sgmonroy@gmail.com>
2019-02-05crypto-input: fix broken buffer trace issueKingwel Xie1-37/+16
dpdk_crypto_input_trace was called before vlib_buffer_enqueue_to_next then VLIB_FRAME_TRACE of next_frame->flag will be overwritten by vlib_next_frame_change_ownership(), leading to a broken trace. now it is working: Packet 1 00:00:15:654983: dpdk-crypto-input dev_id 0 next-index 1 00:00:15:654999: ip4-lookup fib 0 dpo-idx 0 flow hash: 0x00000000 IPSEC_ESP: 18.1.0.71 -> 18.1.0.241 tos 0x00, ttl 254, length 168, checksum 0x96ea ...... Change-Id: I73d77c06c11db8911866adb6240b2565b690f469 Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>
2019-02-02Disable hqos part deuxDave Barach2-0/+4
Change-Id: Ieab56e0a20696b8cc97f783f08f10a94a83644eb Signed-off-by: Dave Barach <dave@barachs.net>
2019-02-02dpdk: bump to dpdk 19.02Damjan Marion5-22/+33
HQoS requires fixes to work with dpdk 19.02 so code is disabled and pending deprecation unless active maintainer is found. Change-Id: I3569c4287b6dfdd2c29e02375eb53bf01fa6ae84 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-31buffers: vallidate that buffer is allocated during buffer pool putDamjan Marion1-1/+1
Change-Id: I8044b34a37fe1994a8dfa1ca89929f3642c72e8d Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-31dpdk-ipsec: use single queue pair per crypto resourceSergio Gonzalez Monroy6-32/+30
Change-Id: I2c796583087c70fbc5cf09e8afd0f2a1f389d346 Signed-off-by: Sergio Gonzalez Monroy <sgmonroy@gmail.com>
2019-01-31dpdk: populate mempool mem_listDamjan Marion1-2/+16
Mellanox driver needs it Change-Id: I28423805f977089d18d32e85cf08e9e7e1fcf5b2 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-31dpdk: store buffer poool index in mempool pool_idDamjan Marion1-22/+10
Change-Id: I2c225a4932dcf326e10fe93de3ee4fdaef4dd3d0 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-31buffers: reinitialize metadata, add additional validationDamjan Marion1-13/+25
- DPDK overwrites metadata as part of rte_pktmbuf_init(...) so we need reinitialize it - additional checks added to ensure ref_count is never < 1 Change-Id: Ida336f81c4723e8f2e0ad4a70cb7b1ecfff978a0 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-30buffers: add missing ref_count = 1 in driversDamjan Marion1-0/+1
Change-Id: I6aa030429c1740f7376e95daf82fce49efa6716b Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-30buffers: major cleanup and improvementsDamjan Marion9-679/+317
This patch introduces following changes: - deprecated free lists which are not used and not compatible with external buffer managers (i.e. DPDK) - introduces native support for per-numa buffer pools - significantly improves performance of buffer alloc and free Change-Id: I4a8e723ae47056717afd6cac0efe87cb731b5be7 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-26cmake: parse DPDK config without compilationDamjan Marion1-57/+15
Previous scheme was not cross-compile friendly... Change-Id: Ib103b136231673157a02b8750312aa6073052c7e Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-26cmake: add support for linking with DPDK shared libsDamjan Marion1-67/+121
Change-Id: I3423191c53ab6100ee9ecc4e24b06506ff1b25c8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-01-21crypto-input: fix crash bugKingwel Xie1-8/+12
as this node is refactored in new style with vlib_buffer_enqueue_to_next, we have to check if the 'count' is greater than 0. otherise, the next_index would be invalid then lead to a crash Change-Id: If7c323b59c02b5c16bd9d77b65c946512cc972c1 Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>
2019-01-20dpdk: add buffer.hDamjan Marion12-13/+43
Change-Id: I998658ad7860b23425444e218ce2e1ec655b885a Signed-off-by: Damjan Marion <damarion@cisco.com>