summaryrefslogtreecommitdiffstats
path: root/src/plugins/rdma
AgeCommit message (Collapse)AuthorFilesLines
2021-05-04rdma: support non-power-of-2 number of rxqBenoît Ganne1-13/+19
Type: improvement Change-Id: I7b78a8470aa3fd271120587d08e82afb23cb195b Signed-off-by: Benoît Ganne <bganne@cisco.com>
2021-05-03rdma: avoid unnencessary inliningDamjan Marion1-27/+29
Type: fix Change-Id: Ifc4b30675365ebb5d69c018a34fd17a5090b30e1 Signed-off-by: Damjan Marion <damarion@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-14rdma: remove redundant memory registrationBenoît Ganne1-6/+0
The memory region is already registered right above, looks like a copy/paste error. Type: fix Change-Id: I97aed821e719e1a34ac38c86d0473a8fdd671d4e Signed-off-by: Benoît Ganne <bganne@cisco.com>
2021-04-14rdma: fix skip_ipv4_cksum behavior in scalar pathTianyu Li1-1/+1
Current rdma input L3 validating behavior for scalar path is: if any packet L3_OK flag matches, then unset skip_ip4_cksum. The correct behavior should be if any packet L3_OK NOT match, then unset skip_ip4_cksum. The logic is also different from the vector path. This patch fixes the wrong behavior for scalar path. Type: fix Signed-off-by: Tianyu Li <tianyu.li@arm.com> Change-Id: I5ca5ed3aa0c07d441f3c87b33f03ea8f7a3c9826
2021-03-25rdma: fix buggy cqe parsing (truncated packets)Mohammed Hawari1-3/+2
Change-Id: I17228bd35cc7aa0d207a16502bf1376c75675302 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: fix
2021-03-19interface: add capabilities flagsMohsin Kazmi1-2/+2
Type: improvement This patch adds flags to represent the modern NICs capabilities. Change-Id: I96d38d9ab7eac55974d72795cd100d8337168e1e Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2021-02-15rdma: rdma_log__ argument dev is a pointerVratko Polak1-5/+8
Also apply style edits as proprosed by checkstyle. Ticket: VPP-1971 Type: fix Change-Id: I4332a4e32220f3076b4a373da01cc0022cde32f5 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2021-01-21rdma: adapt to new vnet rxq frameworkMohammed Hawari3-27/+30
Change-Id: Id539d36635f0ab9625dc2fc73630be39bead09af Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: improvement
2020-11-25rdma: fixed UAR writing at txMohammed Hawari1-1/+1
Change-Id: Id81b4d27845c4e91cef90a4b8649662942d3cba1 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: fix
2020-11-13rdma: implement multiseg rx without striding rqMohammed Hawari8-65/+470
Change-Id: I623617ad3c80610805dd3cf2a5f371e6677f4844 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: improvement
2020-11-09vlib: fix trace number accountingBenoît Ganne1-15/+12
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-11-04rdma: various fixes for chained buffers txMohammed Hawari1-14/+19
Type: fix Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Change-Id: I428c87e581db335362fef30e274db8947a896416
2020-10-26rdma: fix clang-11 buildDamjan Marion1-1/+1
/vpp/src/plugins/rdma/rdma.h:203:17: error: field 'buffer_template' with variable sized type 'vlib_buffer_t' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end] vlib_buffer_t buffer_template; Type: fix Change-Id: I4661839f262e01fe274a2ee7b3cb70f9bc6b7c62 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-24rdma: implement striding rq for multiseg rxMohammed Hawari4-130/+433
This change leverages the striding RQ feature of ConnectX-5 adapters to support chained buffers on the RX path. In Striding RQ mode, WQE are SG lists of data segments, each mapped to a vlib_buffer. When a packet is received, it can consume one or multiple data segments belonging to the WQE, without wasting the whole WQE. Change-Id: I74eba5b2c2c66538e75e046335058ba011cb27fd Type: improvement Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
2020-10-24rdma: add RSS support for IPv6 and TCPBenoît Ganne2-32/+58
Type: feature Change-Id: I8b0d918e6f13325954b29bf34e4ef224c1315c51 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-08-31rdma: bugfix in the descriptor refill logic. In case of a partial ↵Mohammed Hawari1-1/+1
allocation, the remainder modulo 8 must be returned to the pool so that the number of kept buffers is a multiple of 8. Type: fix Change-Id: Ifd97b03ea220300e7e6fe81a8ff4a25060fea6c1 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
2020-05-27ethernet: fix DMAC check and skip unnecessary ones (VPP-1868)John Lo1-4/+13
Fix and optimize DMAC check in ethernet-input node to utilize NIC or driver which support L3 DMAC-filtering mode so that DMAC check can be bypassed safely for interfaces/sub-interfaces in L3 mode. Checking of interface in L3-DMAC-filtering state to avoid DMAC check require the following: a) Fix interface driver init sequence for devices which supports L3 DMAC-filtering to indicate its capability and initialize interface to L3 DMAC-filtering state. b) Fix ethernet_set_flags() function and its associated callback flags_change() functions registered by various drivers in interface infra to provide proper L3 DMAC filtering status. Maintain interface/sub-interface L3 config count so DMAC checks can be bypassed if L3 forwarding is not setup on any main/sub-interfaces. Type: fix Ticket: VPP-1868 Signed-off-by: John Lo <loj@cisco.com> Change-Id: I204d90459c13e9e486cfcba4e64e3d479bc9f2ae
2020-05-07rdma: fix alignment issueDamjan Marion1-2/+2
Type: fix Change-Id: I0ff7a6f3354066c2252c1ebd0d43ac59db278bf0 Signed-off-by: Damjan Marion <damarion@cisco.com> Signed-off-by: Elias Rudberg <elias.rudberg@bahnhof.net>
2020-05-06rdma: fix clang buildBenoît Ganne1-2/+9
Type: fix Change-Id: I9b613f0af484f601dd20a851e2f59ee5e06b5c37 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-04-27rdma: tx: interleave prefetchesBenoît Ganne1-24/+13
Type: improvement Change-Id: Ic2d9b17cf5e524f3ad2a3c5343fe1230aa360e73 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-03-31rdma: print device info from PCI VPD in 'show hardware' outputDamjan Marion1-0/+14
Type: improvement Change-Id: I275bbca17c5a0263b3e017b48aa6ccd8f59bc7c3 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-20rdma: ring db only once per vector on txBenoît Ganne1-28/+44
Type: improvement Change-Id: I09b017d60bc38ff8a4a7a73aff42b27611bd8955 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-03-16rdma: optimize tx wqe_initDamjan Marion3-13/+33
Type: improvement Change-Id: I7f28a3f03ab1ea8461c52743c61dc23a57965237 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-16rdma: introduce direct verb for Cx4/5 txBenoît Ganne4-73/+549
Direct Verb allows for direct access to NIC HW rx/tx rings. This patch introduce TX direct verb support for Mellanox ConnectX-4/5 adapters. 'dv' mode must be explicitely selected at interface creation to benefit from this. Type: feature Change-Id: If830ba9f33db73299acdbddc68b5c09eaf6add98 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-03-16rdma: add Mellanox mlx5 Direct Verbs receive supportDamjan Marion6-37/+843
Type: feature Change-Id: I3f287ab536a482c366ad7df47e1c04e640992ebc Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-02rdma: improve rx loopDamjan Marion1-38/+16
Type: improvement Change-Id: If81847bc0c92d167ce03e1e94a2f8e18f8154af2 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-02rdma: improve refillDamjan Marion1-65/+57
Type: improvement Change-Id: Ib9921718ec88e6dc56a38e40a140f16f86ed2e44 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-02rdma: use per-thread buffer templateDamjan Marion3-5/+25
Type: improvement Change-Id: Ie6f2c79e0a769f70eab079c75a500b9308dd51e6 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-02-18rdma: fix bug related to ring bufferElias Rudberg1-2/+2
Fix a bug that caused some input packets to be dropped due to errors of the type 'ip4 length > l2 length'. The change is related to the second call to the rdma_device_input_bufs() function that happens when the end of the ring buffer is reached. Type: fix Change-Id: I332d69ab22242b3443a0baca6e5dd86349a54765 Signed-off-by: Elias Rudberg <elias.rudberg@bahnhof.net>
2020-01-08rdma: api: prepare support for direct verbBenoît Ganne7-10/+79
Prepare rdma interface creation API for direct verb support: - add new optional 'mode' parameters to select between ibverb or direct verb backend (optional, default to 'auto') - set default value for rxq_num (1), rxq_size (1024) and txq_size (1024) so they are now optional - bump default create value for rxq_size and txq_size to 1024 if unset (0) so they are coherent with default values above Type: feature Change-Id: Id9eae2b8eb0baaf34a0fcd55da6ad09515f57a93 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-01-08rdma: add FEATURE.yamlBenoît Ganne1-0/+8
Type: docs Change-Id: I91d701814e4bd9953616d2b7c76ae2ea7c07074b Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-12-12rdma: add explicit types in apiOle Troan1-2/+3
Type: fix Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: I80c674b73b7f86cf159b8779aab31a87b20def9a
2019-11-08rdma: fix next node rx redirectBenoît Ganne1-8/+2
Type: fix Change-Id: I694db40c3a0361852d01b84c7a45e32e39e9f4af Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-11-08rdma: fix name auto-generation on createBenoît Ganne1-1/+5
When creating rdma interface without specifying a name, we need to generate one instead of NULL. Type: fix Change-Id: If41870691dec47e8e673d48ac4b4ddffd2385a03 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-23rdma: build: fix ibverb compilation testBenoît Ganne1-5/+3
Type: fix Change-Id: Ib6389ecbcf4a1b7bae25b2bd9e7fbdec49545aaa Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-16rdma: add rdma APIBenoît Ganne8-29/+401
Type: feature Change-Id: I590612989cb3c114f8d99227ad36c3434e998597 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-07rdma: fix crash when failing to read pci addr on createBenoît Ganne1-0/+3
Type: fix Change-Id: I543e2e5976cb384b81278a7ec98a0a6ab1612438 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-07rdma: fix crash when failing to detect numa node on createBenoît Ganne1-0/+5
Type: fix Change-Id: Ibb8e7c1c13869c1dce2385f58bd7260fcf776c5a Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-06rdma: prevent loopback of broadcast packetsBenoît Ganne1-4/+9
TX queues must be created before RX queues on Mellanox cards in order to not receive our own broadcast packets. Type: fix Change-Id: I32ae25a47d819f715feda621a5ecddcf4efd71ba Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-05rdma: make sure pci subsystem is initializedBenoît Ganne1-1/+6
The rdma driver use the pci subsystem, make sure the dependency is recorded. Type: fix Change-Id: Ibd613f623d355612881acc31b9423f2de13793a3 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-01rdma: fix non-NULL terminated C-string overflowBenoît Ganne2-3/+3
Type: fix Change-Id: I584777825636347c116bd084e348858bcb1b7d75 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-09-24vlib: add flag to explicitelly mark nodes which can init per-node packet traceDamjan Marion1-0/+1
Type: feature Change-Id: I913f08383ee1c24d610c3d2aac07cef402570e2c Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-08-27rdma: fix pending packets check on txBenoît Ganne1-1/+1
Fix coverity CID 203636: Control flow issues (NO_EFFECT). This greater-than-or-equal-to-zero comparison of an unsigned value is always true. "n_left_from >= 0U". Type: fix Fixes: e7e8bf37f100b20acb99957572f1796f648c2853 Change-Id: Ibbf8c82defb12d6d532345eea657d5f300e6a514 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-26rdma: use rings for buffers managementBenoît Ganne5-203/+243
Refactor rdma driver for improved performance and prepare for raw datapath access. Type: refactor Change-Id: Iae31872055a6947708ea9f430bd1dc083ea63b5a Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-19rdma: add support for MAC changesBenoît Ganne2-1/+35
Type: feature Change-Id: I5803b52d12e56f2ccc1316e89ece6f1c5898810a Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-19rdma: add support for input feature arcsBenoît Ganne1-29/+35
Input feature arcs enable functions such as l2patch or bonding. Type: feature Change-Id: Ie333c9b8f7ea20f8a3a409a9a06367807e215a57 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-07rdma: add missing symbolsBenoît Ganne1-2/+4
rdma-core-25.0 move some symbol to another library, make sure we link to it. Type: fix Fixes: ec757593859bd8c16839ea8a81a2ef4eb8b29539 Change-Id: I6b8a56ea5fc7787d3de0982015ed47b767557c06 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-06rdma: fix double-free in rdma-txBenoît Ganne2-9/+10
In case of tx success after multiple retries, the last buffers to be enqueued will be both enqueued for tx and freed. Type: fix Fixes: 211ef2eb24 Change-Id: I57d218cff58b74c1f3d6dc5722624327f0821758 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-07-23api: binary api cleanupDave Barach1-1/+1
Multiple API message handlers call vnet_get_sup_hw_interface(...) without checking the inbound sw_if_index. This can cause a pool_elt_at_index ASSERT in a debug image, and major disorder in a production image. Given that a number of places are coded as follows, add an "api_visible_or_null" variant of vnet_get_sup_hw_interface, which returns NULL given an invalid sw_if_index, or a hidden sw interface: - hw = vnet_get_sup_hw_interface (vnm, sw_if_index); + hw = vnet_get_sup_hw_interface_api_visible_or_null (vnm, sw_if_index); if (hw == NULL || memif_device_class.index != hw->dev_class_index) return clib_error_return (0, "not a memif interface"); Rename two existing xxx_safe functions -> xxx_or_null to make it obvious what they return. Type: fix Change-Id: I29996e8d0768fd9e0c5495bd91ff8bedcf2c5697 Signed-off-by: Dave Barach <dave@barachs.net>