Commit Graph

28 Commits

Author SHA1 Message Date
Ole Troan b644eb54f2 rdma: add explicit types in api
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I80c674b73b7f86cf159b8779aab31a87b20def9a
2019-12-12 08:55:25 +00:00
Benoît Ganne 972d71da86 rdma: fix next node rx redirect
Type: fix

Change-Id: I694db40c3a0361852d01b84c7a45e32e39e9f4af
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-11-08 20:55:41 +00:00
Benoît Ganne a50892e150 rdma: fix name auto-generation on create
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-11-08 20:55:02 +00:00
Benoît Ganne 386ebb6e2b rdma: build: fix ibverb compilation test
Type: fix

Change-Id: Ib6389ecbcf4a1b7bae25b2bd9e7fbdec49545aaa
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-23 07:43:25 +00:00
Benoît Ganne 812afe712b rdma: add rdma API
Type: feature

Change-Id: I590612989cb3c114f8d99227ad36c3434e998597
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-16 18:35:51 +00:00
Benoît Ganne 0dd97d473b rdma: fix crash when failing to read pci addr on create
Type: fix

Change-Id: I543e2e5976cb384b81278a7ec98a0a6ab1612438
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-07 20:01:48 +00:00
Benoît Ganne 90ea5dc1bd rdma: fix crash when failing to detect numa node on create
Type: fix

Change-Id: Ibb8e7c1c13869c1dce2385f58bd7260fcf776c5a
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-07 19:54:44 +00:00
Benoît Ganne df213385d3 rdma: prevent loopback of broadcast packets
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-06 12:50:39 +00:00
Benoît Ganne 4a98388dae rdma: make sure pci subsystem is initialized
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-05 11:45:27 +00:00
Benoît Ganne 7ff07354c3 rdma: fix non-NULL terminated C-string overflow
Type: fix

Change-Id: I584777825636347c116bd084e348858bcb1b7d75
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-01 11:43:20 +00:00
Damjan Marion 7ca5aaac10 vlib: add flag to explicitelly mark nodes which can init per-node packet trace
Type: feature

Change-Id: I913f08383ee1c24d610c3d2aac07cef402570e2c
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-09-24 18:04:06 +00:00
Benoît Ganne 1ec093fe7a rdma: fix pending packets check on tx
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: e7e8bf37f1

Change-Id: Ibbf8c82defb12d6d532345eea657d5f300e6a514
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-27 22:04:46 +00:00
Benoît Ganne e7e8bf37f1 rdma: use rings for buffers management
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-26 14:10:36 +00:00
Benoît Ganne 0dcafcc505 rdma: add support for MAC changes
Type: feature

Change-Id: I5803b52d12e56f2ccc1316e89ece6f1c5898810a
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-19 09:42:32 +00:00
Benoît Ganne 74eba446b1 rdma: add support for input feature arcs
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-19 09:24:42 +00:00
Benoît Ganne c0bc26eaf3 rdma: add missing symbols
rdma-core-25.0 move some symbol to another library, make sure we link
to it.

Type: fix
Fixes: ec75759385

Change-Id: I6b8a56ea5fc7787d3de0982015ed47b767557c06
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-08-07 15:53:12 +00:00
Benoît Ganne dd1ccb4fd3 rdma: fix double-free in rdma-tx
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-08-06 11:50:43 +00:00
Dave Barach 3940de3672 api: binary api cleanup
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>
2019-07-23 16:29:10 -04:00
Andreas Schultz 58b2eb1af5 vlib: convert frame_index into real pointers
The fast path almost always has to deal with the real
pointers. Deriving the frame pointer from a frame_index requires a
load of the 32bit frame_index from memory, another 64bit load of the
heap base pointer and some calculations.

Lets store the full pointer instead and do a single 64bit load only.

This helps avoiding problems when the heap is grown and frames are
allocated below vm->heap_aligned_base.

Type: refactor
Change-Id: Ifa6e6e984aafe1e2755bff80f0a4dfcddee3623c
Signed-off-by: Andreas Schultz <andreas.schultz@travelping.com>
Signed-off-by: Dave Barach <dave@barachs.net>
2019-07-18 15:07:26 +00:00
Benoît Ganne f2d5cdbfa6 rdma: add support for promiscuous mode
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-05-24 08:24:17 +00:00
Benoît Ganne a77521290a rdma: update MAINTAINERS and add doc
Change-Id: Ida681d299fd57eba66338444b99d2476bdb3c695
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-05-14 14:13:49 +00:00
Dave Wallace 1d1985de91 plugins: clean up plugin descriptions
- Make plugin descriptions more consistent
  so the output of "show plugin" can be
  used in the wiki.

Change-Id: I4c6feb11e7dcc5a4cf0848eed37f1d3b035c7dda
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-05-03 09:30:46 +00:00
Benoît Ganne 5763e47b7d rdma: add multiqueue support
Add support for multiqueue for RDMA devices.

Change-Id: I78a2481cec6747494c670cc776475828be3af55b
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-04-09 23:47:39 +00:00
Benoît Ganne dc195d6845 rdma: more batching, compile rdma-core in release mode
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-04-05 18:46:38 +00:00
Benoît Ganne 211ef2eb24 rdma: tx: fix stats and add batching
Tx stats are no longer counted twice.
Submit tx packets as a single batch per vector instead of per-packet

Change-Id: I26820b21f23842b3a67ace0b939095f3550d3856
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-04-03 14:41:12 +00:00
Damjan Marion 96d4e53363 rdma: add option to specify inteface name
Change-Id: Ic6244511b88bdd42756f74e3163a70b8014e8547
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-03-29 00:23:57 +00:00
Damjan Marion 9fd24793a4 cmake: add vpp_plugin_find_library macro
Change-Id: I0b996460e05c40e74766563fb2a94c62a65063ce
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-03-28 20:59:04 +00:00
Benoît Ganne fe750c248b Add RDMA ibverb driver plugin
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>
2019-03-28 19:31:59 +00:00