aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/rdma/device.c
AgeCommit message (Collapse)AuthorFilesLines
2023-08-07vppinfra: add clib_file_get_resolved_basenameDamjan Marion1-1/+1
more generic version of clib_sysfs_link_to_name with support for format strings... Type: improvement Change-Id: I0cb263748970378c661415196eb7e08450370677 Signed-off-by: Damjan Marion <damarion@cisco.com>
2023-07-28vlib: pci cleanup and improvementsDamjan Marion1-12/+1
Change-Id: Ieafbed6f2db3dec65e4b43d84a4661f6a1bbe891 Type: improvement Signed-off-by: Damjan Marion <damarion@cisco.com>
2023-04-11rdma: disable compressed CQE mode for txq CQJieqiang Wang1-3/+1
Previously we encountered the issue of failing to create completion queues on some Arm platforms because DPDK may set MLX5_CQE_SIZE to 128 if DPDK MLX PMDs are built and DPDK plugin is loaded, which does not satisfy the requirement of 64B size CQE by RDMA plugin. We fixed this issue in 844a0e8b0("always use 64 byte CQEs for MLX5"), but some of CSIT test cases failed due to this code change. It turns out that we don't need to specify compressed CQE mode for txq CQ because RDMA tx doesn't have the code logic to handle compressed CQEs, which might cause unexpected behavior if it is enabled. Type: fix Fixes: 844a0e8b0 ("always use 64 byte CQEs for MLX5") Signed-off-by: Jieqiang Wang <jieqiang.wang@arm.com> Change-Id: I7909a6d44b15bcf39c15dfac9377b65520a0cbfb
2023-02-13rdma: always use 64 byte CQEs for MLX5Nathan Brown1-5/+23
When DPDK MLX PMDs are built, and the DPDK plugin is loaded, DPDK may set the MLX5_CQE_SIZE environment variable to 128. This causes the RDMA plugin to be unable to create completion queues. Since the RDMA plugin expects the CQEs to be 64 bytes, set the cqe_size explicitly when creating the CQ. This avoids any issues with different values for the MLX5_CQE_SIZE environment variable. Type: improvement Signed-off-by: Nathan Brown <nathan.brown@arm.com> Change-Id: Idfd078d3045a4dcb674325ef36f85a89df6fbebc
2022-01-18vnet: distinguish between max_frame_size and MTUDamjan Marion1-2/+3
Type: improvement Change-Id: I3659de6599f402c92e3855e3bf0e5e3388f2bea0 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-01-17interface: improve MTU handlingDamjan Marion1-6/+4
- per hw-interface-class handlers - ethernet set_mtu callback - driver can now refuse MTU change Type: improvement Change-Id: I3d37c9129930ebec7bb70caf4263025413873048 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-01-07ethernet: new interface registration functionDamjan Marion1-5/+7
Prep for supporting multiple callbacks, optional args, etc. Type: improvement Change-Id: I96244c098712e8213374678623f12527b0e7f387 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-01-05interface: refactor interface capabilities codeDamjan Marion1-3/+2
Make it shorter to type, easier to debug, make adding callbacks in future simpler. Type: improvement Change-Id: I6cdd6375e36da23bd452a7c7273ff42789e94433 Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-05-04rdma: add support for RSS configurationBenoît Ganne1-10/+48
Type: feature Change-Id: I911ee94b624ef5edf46b34666597eff93df1d1ed Signed-off-by: Benoît Ganne <bganne@cisco.com>
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-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-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 Hawari1-9/+9
Change-Id: Id539d36635f0ab9625dc2fc73630be39bead09af Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: improvement
2020-11-13rdma: implement multiseg rx without striding rqMohammed Hawari1-30/+77
Change-Id: I623617ad3c80610805dd3cf2a5f371e6677f4844 Signed-off-by: Mohammed Hawari <mohammed@hawari.fr> Type: improvement
2020-10-24rdma: implement striding rq for multiseg rxMohammed Hawari1-6/+82
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 Ganne1-29/+52
Type: feature Change-Id: I8b0d918e6f13325954b29bf34e4ef224c1315c51 Signed-off-by: Benoît Ganne <bganne@cisco.com>
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-03-16rdma: optimize tx wqe_initDamjan Marion1-1/+1
Type: improvement Change-Id: I7f28a3f03ab1ea8461c52743c61dc23a57965237 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-16rdma: introduce direct verb for Cx4/5 txBenoît Ganne1-19/+66
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 Marion1-8/+83
Type: feature Change-Id: I3f287ab536a482c366ad7df47e1c04e640992ebc Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-03-02rdma: use per-thread buffer templateDamjan Marion1-0/+14
Type: improvement Change-Id: Ie6f2c79e0a769f70eab079c75a500b9308dd51e6 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-01-08rdma: api: prepare support for direct verbBenoît Ganne1-2/+15
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>
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-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 Ganne1-1/+1
Type: fix Change-Id: I584777825636347c116bd084e348858bcb1b7d75 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-26rdma: use rings for buffers managementBenoît Ganne1-43/+49
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 Ganne1-1/+16
Type: feature Change-Id: I5803b52d12e56f2ccc1316e89ece6f1c5898810a Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-05-24rdma: add support for promiscuous modeBenoît Ganne1-64/+141
rdma interfaces filter packets per MAC by default to share the physical interface between multiple users (eg. VPP and Linux). When configured in promiscuous mode, all packets will go to this interface, regardless of the MAC. All other interface will not receive anymore packet while it is in promiscuous mode. Promiscuous mode is needed (and automatically turned on) for L2 path (l2patch, xconnect, bridge...). Change-Id: I4c0eb4421f51d116e635e7828d00f202f4a97ded Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-04-09rdma: add multiqueue supportBenoît Ganne1-68/+149
Add support for multiqueue for RDMA devices. Change-Id: I78a2481cec6747494c670cc776475828be3af55b Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-04-05rdma: more batching, compile rdma-core in release modeBenoît Ganne1-3/+4
rx: add batching for WC processing and release tx: improve batching for WC submission and processing rdma-core: compile in release mode to remove assert() Change-Id: I5fb8736db36b50f8b758cd688100477b67e72d80 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-03-29rdma: add option to specify inteface nameDamjan Marion1-0/+2
Change-Id: Ic6244511b88bdd42756f74e3163a70b8014e8547 Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-03-28Add RDMA ibverb driver pluginBenoît Ganne1-0/+607
RDMA ibverb is a userspace API to efficiently rx/tx packets. This is an initial, unoptimized driver targeting Mellanox cards. Next steps should include batching, multiqueue and additional cards. Change-Id: I0309c7a543f75f2f9317eaf63ca502ac7a093ef9 Signed-off-by: Benoît Ganne <bganne@cisco.com>