#
3cd5e500 |
| 31-Oct-2023 |
Dariusz Sosnowski <dsosnowski@nvidia.com> |
common/mlx5: fix controller index parsing
When probing the Linux kernel network interfaces attached to E-Switch, mlx5 PMD decides the representor type and represented entity using phys_port_name exp
common/mlx5: fix controller index parsing
When probing the Linux kernel network interfaces attached to E-Switch, mlx5 PMD decides the representor type and represented entity using phys_port_name exposed by the mlx5 kernel driver in sysfs. mlx5 PMD first checks this name for multihost controller index. In multihost scenarios, phys_port_name is prefixed with "c[0-9]+" string. Included integer is the controller index.
Assuming that phys_port_name contains a string representing a physical port, i.e. "p[0-9]+" string, the parsing logic is incorrect. Both "p[0-9]+" and "c[0-9]+" match the formatting string used to parse phys_port_name, but controller index is still filled out.
This patch fixes this behavior by storing the parsed index in a temporary variable and setting controller index if and only if phys_port_name matches multihost controller syntax.
Fixes: 59df97f1a832 ("common/mlx5: support sub-function representor parsing") Cc: stable@dpdk.org
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
8c3a4688 |
| 21-Aug-2023 |
Stephen Hemminger <stephen@networkplumber.org> |
common/mlx5: replace use of PMD log type
The goal to eliminate the generic PMD logtype. One place it is used unnecessarily is in the mlx5 common code. Change the one RTE_LOG() call here to use the s
common/mlx5: replace use of PMD log type
The goal to eliminate the generic PMD logtype. One place it is used unnecessarily is in the mlx5 common code. Change the one RTE_LOG() call here to use the same macro as other log messages in same file.
Fixes: 9c410b28b27a ("common/mlx5: refactor HCA attributes query")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
show more ...
|
#
37ca457d |
| 30-Jun-2023 |
Bing Zhao <bingz@nvidia.com> |
common/mlx5: fix obtaining IB device in LAG mode
In hardware LAG mode, both PFs are in the same E-Switch domain but the VFs are in the other domains. Moreover, VF has its own dedicated IB device.
W
common/mlx5: fix obtaining IB device in LAG mode
In hardware LAG mode, both PFs are in the same E-Switch domain but the VFs are in the other domains. Moreover, VF has its own dedicated IB device.
When probing a VF created on the 1st PF, usually its PCIe address is the same as the PF's except the function part. Then there would be some wrong VF BDF match on the IB "bond" device due to incomplete comparison (we do not compare the function part of BDF for bonding devices to match all bonded PFs).
Adding one extra condition to check whether the current PCIe address device is a VF will solve the incorrect IB device recognition. Thus the full address comparison will be done.
Fixes: f956d3d4c33c ("net/mlx5: fix probing with secondary bonding member") Cc: stable@dpdk.org
Signed-off-by: Bing Zhao <bingz@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
1f37cb2b |
| 28-Jul-2022 |
David Marchand <david.marchand@redhat.com> |
bus/pci: make driver-only headers private
The pci bus interface is for drivers only. Mark as internal and move the header in the driver headers list.
While at it, cleanup the code: - fix indentatio
bus/pci: make driver-only headers private
The pci bus interface is for drivers only. Mark as internal and move the header in the driver headers list.
While at it, cleanup the code: - fix indentation, - remove unneeded reference to bus specific singleton object, - remove unneeded list head structure type, - reorder the definitions and macro manipulating the bus singleton object, - remove inclusion of rte_bus.h and fix the code that relied on implicit inclusion,
Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com> Acked-by: Rosen Xu <rosen.xu@intel.com>
show more ...
|
#
b3f89090 |
| 28-Jul-2022 |
David Marchand <david.marchand@redhat.com> |
bus/auxiliary: make driver-only headers private
The auxiliary bus interface is for drivers only. Mark as internal and move the header in the driver headers list.
While at it, cleanup the code: - fi
bus/auxiliary: make driver-only headers private
The auxiliary bus interface is for drivers only. Mark as internal and move the header in the driver headers list.
While at it, cleanup the code: - fix indentation, - remove unneeded reference to bus specific singleton object, - remove unneeded list head structure type, - reorder the definitions and macro manipulating the bus singleton object, - remove inclusion of rte_bus.h and fix the code that relied on implicit inclusion,
Signed-off-by: David Marchand <david.marchand@redhat.com>
show more ...
|
#
64e14b8b |
| 20-Feb-2022 |
Stephen Hemminger <stephen@networkplumber.org> |
remove unnecessary null checks
Found by nullfree.cocci.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> [David: for lpm parts:] Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> Acked-
remove unnecessary null checks
Found by nullfree.cocci.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> [David: for lpm parts:] Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com> [David: for vdpa/mlx5 parts:] Acked-by: Matan Azrad <matan@nvidia.com> [David: for dma/dpaa2, raw/ifpga, vdpa/mlx5:] Acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Reviewed-by: Chengwen Feng <fengchengwen@huawei.com> [David: reran cocci.sh and updated common/mlx5 and cryptodev asym test] Signed-off-by: David Marchand <david.marchand@redhat.com>
show more ...
|
#
72d7efe4 |
| 16-Jun-2022 |
Spike Du <spiked@nvidia.com> |
common/mlx5: share interrupt management
There are many duplicate code of creating and initializing rte_intr_handle. Add a new mlx5_os API to do this, replace all PMD related code with this API.
Sig
common/mlx5: share interrupt management
There are many duplicate code of creating and initializing rte_intr_handle. Add a new mlx5_os API to do this, replace all PMD related code with this API.
Signed-off-by: Spike Du <spiked@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
f956d3d4 |
| 06-Apr-2022 |
Rongwei Liu <rongweil@nvidia.com> |
net/mlx5: fix probing with secondary bonding member
Users can probe primary or secondary PCIe id when bonding is configured. 1. -a 0a:00.0,representor=pf[0-1]vf[0-1], PMD probes 5 ports totally: bon
net/mlx5: fix probing with secondary bonding member
Users can probe primary or secondary PCIe id when bonding is configured. 1. -a 0a:00.0,representor=pf[0-1]vf[0-1], PMD probes 5 ports totally: bonding device plus 4 representor ports. 2. -a 0a:00.1,representor=pf[0-1]vf[0-1], PMD only probes 2 representor ports.
Under the 2nd condition, bonding IB device doesn't have the same PCIe id and PMD needs to check bonding relationship otherwise probe failure.
Fixes: 6856efa54eea ("net/mlx5: fix PF leak on PCI probing failure") Cc: stable@dpdk.org
Signed-off-by: Rongwei Liu <rongweil@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
be66461c |
| 01-Mar-2022 |
Dmitry Kozlyuk <dkozlyuk@nvidia.com> |
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: stable@dpdk.org
Signed-off-by: Dmitry Kozlyuk <dkozlyuk@nvidia.com> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
9d936f4f |
| 24-Feb-2022 |
Michael Baum <michaelba@nvidia.com> |
common/mlx5: support remote PD and CTX
Add option to probe common device using import CTX/PD functions instead of create functions. This option requires accepting the context FD and the PD handle as
common/mlx5: support remote PD and CTX
Add option to probe common device using import CTX/PD functions instead of create functions. This option requires accepting the context FD and the PD handle as devargs.
This sharing can be useful for applications that use PMD for only some operations. For example, an app that generates queues itself and uses PMD just to configure flow rules.
Signed-off-by: Michael Baum <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
a6b9d5a5 |
| 23-Feb-2022 |
Michael Baum <michaelba@nvidia.com> |
common/mlx5: update doorbell mapping parameter name
The "tx_db_nc" devarg forces doorbell register mapping to non-cached region eliminating the extra write memory barrier. This argument was used in
common/mlx5: update doorbell mapping parameter name
The "tx_db_nc" devarg forces doorbell register mapping to non-cached region eliminating the extra write memory barrier. This argument was used in creating the UAR for Tx and thus affected its performance.
Recently [1] its use has been extended to all UAR creation in all mlx5 drivers, and now its name is no longer so accurate.
This patch changes its name to "sq_db_nc" to suit any send queue that uses it. The old name will still work for backward compatibility.
[1] commit 5dfa003db53f ("common/mlx5: fix post doorbell barrier")
Signed-off-by: Michael Baum <michaelba@nvidia.com> Reviewed-by: Raslan Darawsheh <rasland@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
76b5bdf8 |
| 09-Nov-2021 |
Matan Azrad <matan@nvidia.com> |
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: stable@dpdk.org
Signed-off-by: Michael Baum <michaelba@nvidia.com> Signed-off-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
4c74ad3e |
| 26-Oct-2021 |
Rongwei Liu <rongweil@nvidia.com> |
common/mlx5: support PCIe device GUID query
sysfs entry "phys_switch_id" holds each PCIe device' guid.
The devices which reside in the same physical NIC should have the same guid.
Signed-off-by: R
common/mlx5: support PCIe device GUID query
sysfs entry "phys_switch_id" holds each PCIe device' guid.
The devices which reside in the same physical NIC should have the same guid.
Signed-off-by: Rongwei Liu <rongweil@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
e35ccf24 |
| 19-Oct-2021 |
Michael Baum <michaelba@nvidia.com> |
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 <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
662d0dc6 |
| 19-Oct-2021 |
Michael Baum <michaelba@nvidia.com> |
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 <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
ca1418ce |
| 19-Oct-2021 |
Michael Baum <michaelba@nvidia.com> |
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 <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
887183ef |
| 19-Oct-2021 |
Michael Baum <michaelba@nvidia.com> |
common/mlx5: move basic probing functions to common
Move open IBV/DevX device function to common.
Signed-off-by: Michael Baum <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
|
#
4d567938 |
| 21-Jul-2021 |
Thomas Monjalon <thomas@monjalon.net> |
common/mlx5: get PCI device address from any bus
A function is exported to allow retrieving the PCI address of the parent PCI device of a Sub-Function in auxiliary bus sysfs. The function mlx5_dev_t
common/mlx5: get PCI device address from any bus
A function is exported to allow retrieving the PCI address of the parent PCI device of a Sub-Function in auxiliary bus sysfs. The function mlx5_dev_to_pci_str() is accepting both PCI and auxiliary devices. In case of a PCI device, it is simply using the device name.
The function mlx5_dev_to_pci_addr(), which is based on sysfs path and do not use any device object, is renamed to mlx5_get_pci_addr() for clarity purpose.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
67350881 |
| 21-Jul-2021 |
Thomas Monjalon <thomas@monjalon.net> |
common/mlx5: move description of PCI sysfs functions
The Linux-specific functions mlx5_get_pci_addr() and mlx5_get_ifname_sysfs() are better described in the .h file.
The requirement for using mlx5
common/mlx5: move description of PCI sysfs functions
The Linux-specific functions mlx5_get_pci_addr() and mlx5_get_ifname_sysfs() are better described in the .h file.
The requirement for using mlx5_get_pci_addr() is made explicit: the node /device must exist in the provided sysfs path.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
ad435d32 |
| 21-Jul-2021 |
Xueming Li <xuemingl@nvidia.com> |
common/mlx5: add bus-agnostic layer
To support auxiliary bus, introduces common device driver and callbacks, supposed to replace mlx5 common PCI bus driver.
Mlx5 class drivers, i.e. eth, vDPA, rege
common/mlx5: add bus-agnostic layer
To support auxiliary bus, introduces common device driver and callbacks, supposed to replace mlx5 common PCI bus driver.
Mlx5 class drivers, i.e. eth, vDPA, regex and compress normally consumes single Verbs device context to probe a device. The Verbs device comes from PCI address if the device is PCI bus device, from Auxiliary sysfs if the device is auxiliary bus device. Currently only PCI bus is supported.
Common device driver is a middle layer between mlx5 class drivers and bus, resolve and abstract bus info to Verbs device for class drivers. Both PCI bus driver and Auxiliary bus driver can utilize the common driver layer to cast bus operations to mlx5 class drivers.
Legacy mlx5 common PCI bus driver still being used by mlx5 eth, vDPA, regex and compress PMD, will be removed once all PMD drivers migrate to new common driver.
Signed-off-by: Xueming Li <xuemingl@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
c31f3f7f |
| 04-May-2021 |
Shiri Kuzin <shirik@nvidia.com> |
common/mlx5: share Verbs device match function
The get_ib_device_match function iterates over the list of ib devices returned by the get_device_list glue function and returns the ib device matching
common/mlx5: share Verbs device match function
The get_ib_device_match function iterates over the list of ib devices returned by the get_device_list glue function and returns the ib device matching the provided address.
Since this function is in use by several drivers, in this patch we share the function in common part.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
25245d5d |
| 04-May-2021 |
Shiri Kuzin <shirik@nvidia.com> |
common/mlx5: share hash list tool
In order to use the hash list defined in net in other drivers, the hash list is moved to common utilities.
In addition, the log definition was moved from the commo
common/mlx5: share hash list tool
In order to use the hash list defined in net in other drivers, the hash list is moved to common utilities.
In addition, the log definition was moved from the common utilities to a dedicated new log file in common in order to prevent a conflict.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
59df97f1 |
| 28-Mar-2021 |
Xueming Li <xuemingl@nvidia.com> |
common/mlx5: support sub-function representor parsing
This patch supports representor name parsing for SF. In sysfs, representor name stored under "phys_port_name" sysfs key, similar to VF represent
common/mlx5: support sub-function representor parsing
This patch supports representor name parsing for SF. In sysfs, representor name stored under "phys_port_name" sysfs key, similar to VF representor, switch port name of SF representor is "pf<x>sf<y>".
For netlink message, net SF type is supported.
Examples:
pf0sf1 pf0sf[0-3]
Signed-off-by: Xueming Li <xuemingl@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
482a1d34 |
| 13-Sep-2020 |
Viacheslav Ovsiienko <viacheslavo@nvidia.com> |
common/mlx5: fix PCI address lookup
mlx5 PMDs use the mlx5_dev_to_pci_addr() routine to convert Infiniband device name to the Bus-Device-Function location on the PCI bus. The routine returned succes
common/mlx5: fix PCI address lookup
mlx5 PMDs use the mlx5_dev_to_pci_addr() routine to convert Infiniband device name to the Bus-Device-Function location on the PCI bus. The routine returned success even in case of not found identification string. On caller side it likely caused the wrong match with the BDF of previous device resulting in wrong representor and master recognitions.
Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters") Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
3590881b |
| 08-Jul-2020 |
Viacheslav Ovsiienko <viacheslavo@mellanox.com> |
common/mlx5: fix physical port name pattern recognition
This patch makes the Infiniband device physical port name recognition more strict. Currently mlx5 PMD might recognize the names like "pf0sf0"
common/mlx5: fix physical port name pattern recognition
This patch makes the Infiniband device physical port name recognition more strict. Currently mlx5 PMD might recognize the names like "pf0sf0" erroneously as "pf0" and the wrong device type (host PF representor) is reported.
The names like "pf0sf0" belong to PCI subfunctions which is currently not supported by mlx5 PMD and this false recognition must be eliminated.
Fixes: 420bbdae89f2 ("net/mlx5: fix host physical function representor naming") Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|