|
Revision tags: v22.03, v22.03-rc4, v22.03-rc3 |
|
| #
be66461c |
| 01-Mar-2022 |
Dmitry Kozlyuk <[email protected]> |
common/mlx5: add Netlink event helpers
Introduce mlx5_nl_read_events() to read Netlink events (technically, messages) from a socket that was configured to listen for them via a new mlx5_nl_init() pa
common/mlx5: add Netlink event helpers
Introduce mlx5_nl_read_events() to read Netlink events (technically, messages) from a socket that was configured to listen for them via a new mlx5_nl_init() parameter. Add mlx5_nl_parse_link_status_update() helper to extract information from link-related events. This patch is a shared base for later fixes.
Cc: [email protected]
Signed-off-by: Dmitry Kozlyuk <[email protected]> Reviewed-by: Viacheslav Ovsiienko <[email protected]>
show more ...
|
|
Revision tags: v22.03-rc2 |
|
| #
c2e3059a |
| 24-Feb-2022 |
Michael Baum <[email protected]> |
common/mlx5: consider local functions as internal
The functions which are not explicitly marked as internal were exported because the local catch-all rule was missing in the version script. After ad
common/mlx5: consider local functions as internal
The functions which are not explicitly marked as internal were exported because the local catch-all rule was missing in the version script. After adding the missing rule, all local functions are hidden. The function mlx5_get_device_guid is used in another library, so it needs to be exported (as internal).
Because the local functions were exported as non-internal in DPDK 21.11, any change in these functions would break the ABI. An ABI exception is added for this library, considering that all functions are either local or internal.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
a729d2f0 |
| 14-Feb-2022 |
Michael Baum <[email protected]> |
common/mlx5: refactor devargs management
Improve the devargs handling in two aspects: - Parse the devargs string only once. - Return error and report for unknown keys.
The common driver parses on
common/mlx5: refactor devargs management
Improve the devargs handling in two aspects: - Parse the devargs string only once. - Return error and report for unknown keys.
The common driver parses once the devargs string into a dictionary, then provides it to all the drivers' probe. Each driver updates within it which keys it has used, then common driver receives the updated dictionary and reports about unknown devargs.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
c4c3e8af |
| 14-Feb-2022 |
Michael Baum <[email protected]> |
common/mlx5: share VF check function
The check if device is VF work for Linux as same as Windows. This patch removes it to the function implemented in the folder shared between the operating systems
common/mlx5: share VF check function
The check if device is VF work for Linux as same as Windows. This patch removes it to the function implemented in the folder shared between the operating systems, removing the duplication.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
|
Revision tags: v22.03-rc1 |
|
| #
e50fe91a |
| 24-Dec-2021 |
Tal Shnaiderman <[email protected]> |
net/mlx5: support imissed counter on Windows
Add support for the imissed counter using the DevX API on Windows.
imissed is queried by creating a queue counter for the port, attaching it to all crea
net/mlx5: support imissed counter on Windows
Add support for the imissed counter using the DevX API on Windows.
imissed is queried by creating a queue counter for the port, attaching it to all created RQs and querying the "out_of_buffer" field.
If the counter cannot be created, imissed will always report 0.
Signed-off-by: Tal Shnaiderman <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
|
Revision tags: v21.11, v21.11-rc4 |
|
| #
08ac0358 |
| 19-Nov-2021 |
Dmitry Kozlyuk <[email protected]> |
common/mlx5: fix mempool registration
Mempool registration was not correctly processing mempools with RTE_PKTMBUF_F_PINEND_EXT_BUF flag set ("pinned mempools" for short), because it is not known at
common/mlx5: fix mempool registration
Mempool registration was not correctly processing mempools with RTE_PKTMBUF_F_PINEND_EXT_BUF flag set ("pinned mempools" for short), because it is not known at registration time whether the mempool is a pktmbuf one, and its elements may not yet be initialized to analyze them. Attempts had been made to recognize such pools, but there was no robust solution, only the owner of a mempool (the application or a device) knows its type. This patch extends common/mlx5 registration code to accept a hint that the mempool is a pinned one and uses this capability from net/mlx5 driver.
1. Remove all code assuming pktmbuf pool type or trying to recognize the type of a pool. 2. Register pinned mempools used for Rx and their external memory on port start. Populate the MR cache with all their MRs. 3. Change Tx slow path logic as follows: 3.1. Search the mempool database for a memory region (MR) by the mbuf pool and its buffer address. 3.2. If not MR for the address is found for the mempool, and the mempool contains only pinned external buffers, perform the mempool registration of the mempool and its external pinned memory. 3.3. Fall back to using page-based MRs in other cases (for example, a buffer with externally attached memory, but not from a pinned mempool).
Fixes: 690b2a88c2f7 ("common/mlx5: add mempool registration facilities") Fixes: fec28ca0e3a9 ("net/mlx5: support mempool registration")
Signed-off-by: Dmitry Kozlyuk <[email protected]> Reviewed-by: Matan Azrad <[email protected]> Reviewed-by: Viacheslav Ovsiienko <[email protected]>
show more ...
|
|
Revision tags: v21.11-rc3 |
|
| #
76b5bdf8 |
| 09-Nov-2021 |
Matan Azrad <[email protected]> |
common/mlx5: create wrapped MR
The mlx5 PMD uses the kernel mlx5 driver to map physical memory to the HW.
Using the Verbs API ibv_reg_mr, a mkey can be created for that. In this case, the mkey is s
common/mlx5: create wrapped MR
The mlx5 PMD uses the kernel mlx5 driver to map physical memory to the HW.
Using the Verbs API ibv_reg_mr, a mkey can be created for that. In this case, the mkey is signed on the user ID of the kernel driver.
Using the DevX API, a mkey also can be created, but it should point an umem object (represents the specific buffer mapping) created by the kernel. In this case, the mkey is signed on the user ID of the process DevX context.
In FW DevX control commands which get mkey as a parameter, there is a security check on the user ID and Verbs mkeys are rejected.
Unfortunately, also when using DevX mkey, there is an error in the FW command on umem validation because the umem is not designed to be used for any mkey parameters.
As a workaround to the kernel driver/FW issue, it is needed to use a wrapped MR, which is an indirect mkey(created by the DevX API) pointing to direct mkey created by the kernel for any DevX command uses an MR.
Add an API to create and destroy this wrapped MR.
Fixes: 5382d28c2110 ("net/mlx5: accelerate DV flow counter transactions") Fixes: 9d39e57f21ac ("vdpa/mlx5: support live migration") Cc: [email protected]
Signed-off-by: Michael Baum <[email protected]> Signed-off-by: Matan Azrad <[email protected]>
show more ...
|
|
Revision tags: v21.11-rc2 |
|
| #
5dfa003d |
| 03-Nov-2021 |
Michael Baum <[email protected]> |
common/mlx5: fix post doorbell barrier
The rdma-core library can map doorbell register in two ways, depending on the environment variable "MLX5_SHUT_UP_BF":
- as regular cached memory, the variab
common/mlx5: fix post doorbell barrier
The rdma-core library can map doorbell register in two ways, depending on the environment variable "MLX5_SHUT_UP_BF":
- as regular cached memory, the variable is either missing or set to zero. This type of mapping may cause the significant doorbell register writing latency and requires an explicit memory write barrier to mitigate this issue and prevent write combining.
- as non-cached memory, the variable is present and set to not "0" value. This type of mapping may cause performance impact under heavy loading conditions but the explicit write memory barrier is not required and it may improve core performance.
The UAR creation function maps a doorbell in one of the above ways according to the system. In run time, it always adds an explicit memory barrier after writing to. In cases where the doorbell was mapped as non-cached memory, the explicit memory barrier is unnecessary and may impair performance.
The commit [1] solved this problem for a Tx queue. In run time, it checks the mapping type and provides the memory barrier after writing to a Tx doorbell register if it is needed. The mapping type is extracted directly from the uar_mmap_offset field in the queue properties.
This patch shares this code between the drivers and extends the above solution for each of them.
[1] commit 8409a28573d3 ("net/mlx5: control transmit doorbell register mapping")
Fixes: f8c97babc9f4 ("compress/mlx5: add data-path functions") Fixes: 8e196c08ab53 ("crypto/mlx5: support enqueue/dequeue operations") Fixes: 4d4e245ad637 ("regex/mlx5: support enqueue") Cc: [email protected]
Signed-off-by: Michael Baum <[email protected]> Reviewed-by: Viacheslav Ovsiienko <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
20489176 |
| 03-Nov-2021 |
Michael Baum <[email protected]> |
common/mlx5: make multi-process MR management port-agnostic
In the multi-process mechanism, there are things that the secondary process does not perform itself but asks the primary process to perfor
common/mlx5: make multi-process MR management port-agnostic
In the multi-process mechanism, there are things that the secondary process does not perform itself but asks the primary process to perform for it. There is a special API for communication between the processes that receives parameters necessary for the specific action required as well as a special structure called mp_id that contains the port number of the processes through which the initial process finds the relevant ETH device for the processes.
One of the operations performed through this mechanism is the creation of a memory region, where the secondary process sends the virtual address as a parameter and the mp_id structure with the port number inside it. However, once the memory area management is shared between the drivers and either port number or ETH device is no longer relevant to them, it seems unnecessary to continue communicating between the processes through the mp_id variable.
In this patch we will remove the use of the above structure for all MR management, and add to the specific parameter of operations a pointer to the common device that contains everything needed to create/register MR.
Fixes: 9f1d636f3ef08 ("common/mlx5: share MR management")
Signed-off-by: Michael Baum <[email protected]> Reviewed-by: Viacheslav Ovsiienko <[email protected]> Reviewed-by: Dmitry Kozlyuk <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
6a4e4385 |
| 03-Nov-2021 |
Michael Baum <[email protected]> |
common/mlx5: fix MR search inlining
Memory region management has recently been shared between drivers, including the search for caches in the data plane. The initial search in the local linear cache
common/mlx5: fix MR search inlining
Memory region management has recently been shared between drivers, including the search for caches in the data plane. The initial search in the local linear cache of the queue, usually yields a result and one should not continue searching in the next layer caches.
Prior to cache sharing the local linear cache lookup function was defined with "static inline" attributes, those were missed in routine commoditizing step and this caused performance degradation.
Set the common function as static inline.
Fixes: fc59a1ec556b ("common/mlx5: share MR mempool registration")
Signed-off-by: Michael Baum <[email protected]> Reviewed-by: Viacheslav Ovsiienko <[email protected]> Reviewed-by: Dmitry Kozlyuk <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
ee160711 |
| 04-Nov-2021 |
Xueming Li <[email protected]> |
common/mlx5: support basic receive memory pool
The hardware Receive Memory Pool (RMP) object holds the destination for incoming packets/messages that are routed to the RMP through RQs. RMP enables s
common/mlx5: support basic receive memory pool
The hardware Receive Memory Pool (RMP) object holds the destination for incoming packets/messages that are routed to the RMP through RQs. RMP enables sharing of memory across multiple Receive Queues. Multiple Receive Queues can be attached to the same RMP and consume memory from that shared poll. When using RMPs, completions are reported to the CQ pointed to by the RQ, and this Completion Queue can be shared as well.
This patch adds DevX supports of PRM RMP object.
Signed-off-by: Xueming Li <[email protected]> Acked-by: Viacheslav Ovsiienko <[email protected]>
show more ...
|
|
Revision tags: v21.11-rc1 |
|
| #
b4a4fb7e |
| 25-Oct-2021 |
Tal Shnaiderman <[email protected]> |
crypto/mlx5: support on Windows
Add support for mlx5 crypto pmd on Windows OS. Add changes to release note and PMD guide.
Signed-off-by: Tal Shnaiderman <[email protected]> Acked-by: Matan Azrad <m
crypto/mlx5: support on Windows
Add support for mlx5 crypto pmd on Windows OS. Add changes to release note and PMD guide.
Signed-off-by: Tal Shnaiderman <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
cf5ac38d |
| 21-Oct-2021 |
Rongwei Liu <[email protected]> |
common/mlx5: add LAG context query
Added a new function mlx5_devx_cmd_query_lag() to query LAG property from firmware including state/affinity/mode etc.
Signed-off-by: Jiawei Wang <[email protected]
common/mlx5: add LAG context query
Added a new function mlx5_devx_cmd_query_lag() to query LAG property from firmware including state/affinity/mode etc.
Signed-off-by: Jiawei Wang <[email protected]> Signed-off-by: Rongwei Liu <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
227813f2 |
| 19-Oct-2021 |
Xueming Li <[email protected]> |
common/mlx5: get RDMA port state via Netlink
Introduce netlink API to get RDMA port state.
Port state is retrieved based on RDMA device name and port index.
Signed-off-by: Xueming Li <xuemingl@nvi
common/mlx5: get RDMA port state via Netlink
Introduce netlink API to get RDMA port state.
Port state is retrieved based on RDMA device name and port index.
Signed-off-by: Xueming Li <[email protected]> Acked-by: Viacheslav Ovsiienko <[email protected]>
show more ...
|
| #
fc59a1ec |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: share MR mempool registration
Expand the use of mempool registration to MR management for other drivers.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <matan
common/mlx5: share MR mempool registration
Expand the use of mempool registration to MR management for other drivers.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
a5d06c90 |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: support device DMA map and unmap
Since MR management has moved to the common area, there is no longer a need for the DMA map and unmap function for each driver. This patch share those f
common/mlx5: support device DMA map and unmap
Since MR management has moved to the common area, there is no longer a need for the DMA map and unmap function for each driver. This patch share those functions. For most drivers it supports these operations for the first time.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
9f1d636f |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: share MR management
Add global shared MR cache as a field of common device structure. Move MR management to use this global cache for all drivers.
Signed-off-by: Michael Baum <michaelb
common/mlx5: share MR management
Add global shared MR cache as a field of common device structure. Move MR management to use this global cache for all drivers.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
fb690f71 |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: share MR top-half search function
Add function to search in local liniar cache and use it in the drivers instead of their functions.
Signed-off-by: Michael Baum <[email protected]>
common/mlx5: share MR top-half search function
Add function to search in local liniar cache and use it in the drivers instead of their functions.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
5fbc75ac |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: add global MR cache create function
Add function for global shared MR cache structure initialization. This function include: - btree initialization. - set callbacks for reg and dereg
common/mlx5: add global MR cache create function
Add function for global shared MR cache structure initialization. This function include: - btree initialization. - set callbacks for reg and dereg MR.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
85c7005e |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: add MR control initialization
Add function for MR control structure initialization. This function include: - btree initialization. - dev_gen_ptr initialization.
Signed-off-by: Michae
common/mlx5: add MR control initialization
Add function for MR control structure initialization. This function include: - btree initialization. - dev_gen_ptr initialization.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
e35ccf24 |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: share protection domain object
Create shared Protection Domain in common area and add it and its PDN as fields of common device structure.
Use this Protection Domain in all drivers and
common/mlx5: share protection domain object
Create shared Protection Domain in common area and add it and its PDN as fields of common device structure.
Use this Protection Domain in all drivers and remove the PD and PDN fields from their private structure.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
662d0dc6 |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: disable RoCE in device context creation
Add option to get IB device after disabling RoCE. It is relevant if there is vDPA class in device arguments list.
Use common device context in v
common/mlx5: disable RoCE in device context creation
Add option to get IB device after disabling RoCE. It is relevant if there is vDPA class in device arguments list.
Use common device context in vDPA driver and remove the ctx field from its private structure.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
ca1418ce |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: share device context object
Create shared context device in common area and add it as a field of common device. Use this context device in all drivers and remove the ctx field from thei
common/mlx5: share device context object
Create shared context device in common area and add it as a field of common device. Use this context device in all drivers and remove the ctx field from their private structure.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| #
887183ef |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: move basic probing functions to common
Move open IBV/DevX device function to common.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
|
| #
85209924 |
| 19-Oct-2021 |
Michael Baum <[email protected]> |
common/mlx5: share memory related devargs
Add device configure structure and function to parse user device arguments into it. Move parsing and management of relevant device arguments to common.
Sig
common/mlx5: share memory related devargs
Add device configure structure and function to parse user device arguments into it. Move parsing and management of relevant device arguments to common.
Signed-off-by: Michael Baum <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|