Krzysztof Czurylo
c7db0abe5f
RDMA/irdma: Add GEN3 CQP support with deferred completions
...
GEN3 introduces asynchronous handling of Control QP (CQP) operations to
minimize head-of-line blocking. Create the CQP using the updated GEN3-
specific descriptor fields and implement the necessary support for this
deferred completion mechanism.
Signed-off-by: Krzysztof Czurylo <krzysztof.czurylo@intel.com >
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com >
Link: https://patch.msgid.link/20250827152545.2056-5-tatyana.e.nikolova@intel.com
Tested-by: Jacob Moroni <jmoroni@google.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-18 04:48:45 -04:00
Christopher Bednarz
7d5a7cc7b9
RDMA/irdma: Discover and set up GEN3 hardware register layout
...
Discover the hardware register layout for GEN3 devices through an RDMA
virtual channel operation with the Control Plane (CP). Set up the
corresponding hardware attributes specific to GEN3 devices.
Signed-off-by: Christopher Bednarz <christopher.n.bednarz@intel.com >
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com >
Link: https://patch.msgid.link/20250827152545.2056-4-tatyana.e.nikolova@intel.com
Tested-by: Jacob Moroni <jmoroni@google.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-18 04:48:45 -04:00
Mustafa Ismail
d5edd33364
RDMA/irdma: Add GEN3 core driver support
...
Introduce support for the GEN3 auxiliary core driver, which is
responsible for initializing PCI-level RDMA resources.
Facilitate host-driver communication with the device's Control Plane (CP)
to discover capabilities and perform privileged operations through an
RDMA-specific messaging interface built atop the IDPF mailbox and virtual
channel protocol.
Establish the RDMA virtual channel message interface and incorporate
operations to retrieve the hardware version and discover capabilities
from the CP.
Additionally, set up the RDMA MMIO regions and initialize the RF structure.
Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com >
Co-developed-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com >
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com >
Link: https://patch.msgid.link/20250827152545.2056-3-tatyana.e.nikolova@intel.com
Tested-by: Jacob Moroni <jmoroni@google.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-18 04:48:45 -04:00
Mustafa Ismail
0c2b80cac9
RDMA/irdma: Refactor GEN2 auxiliary driver
...
Refactor the irdma auxiliary driver and associated interfaces out of main.c
and into a standalone GEN2-specific source file and rename as gen_2 driver.
This is in preparation for adding GEN3 auxiliary drivers. Each HW
generation will have its own gen-specific interface file.
Additionally, move the Address Handle hash table and associated locks
under rf struct. This will allow GEN3 code to migrate to use it easily.
Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com >
Co-developed-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com >
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com >
Link: https://patch.msgid.link/20250827152545.2056-2-tatyana.e.nikolova@intel.com
Tested-by: Jacob Moroni <jmoroni@google.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-18 04:48:45 -04:00
Shiraz Saleem
2bd7dd3836
RDMA/mana_ib: Extend modify QP
...
Extend modify QP to support further attributes: local_ack_timeout, UD qkey,
rate_limit, qp_access_flags, flow_label, max_rd_atomic.
Signed-off-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1757923172-4475-1-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-15 04:11:12 -04:00
Håkon Bugge
2bbe1255fc
RDMA/cm: Rate limit destroy CM ID timeout error message
...
When the destroy CM ID timeout kicks in, you typically get a storm of
them which creates a log flooding. Hence, change pr_err() to
pr_err_ratelimited() in cm_destroy_id_wait_timeout().
Fixes: 96d9cbe2f2 ("RDMA/cm: add timeout to cm_destroy_id wait")
Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com >
Link: https://patch.msgid.link/20250912100525.531102-1-haakon.bugge@oracle.com
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-15 03:41:45 -04:00
Shravya KN
eba165b290
RDMA/bnxt_re: Avoid GID level QoS update from the driver
...
The driver inserts a VLAN header into RoCE packets when the
traffic was untagged by modifying the existing GID entries.
This has caused the firmware to enforce only VLAN-based
priority mappings, ignoring other valid priority configurations
set via APP TLVs (e.g., DSCP selectors).
Driver now has support for selecting the service level (vlan id)
and traffic class (dscp) during modify_qp. So no need to override
the priority update using the update gid method. Hence removing
the code that handles the above operation.
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com >
Link: https://patch.msgid.link/20250908094516.18222-3-kalesh-anakkur.purayil@broadcom.com
Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Anantha Prabhu
72d0b87e1e
RDMA/bnxt_re: Update sysfs entries with appropriate data
...
Updated the existing sysfs entries with correct data.
This change is to align the behavior with our OOB driver.
Added "board_id" sysfs entry which will provide the
VPD Part number, if exists.
Signed-off-by: Anantha Prabhu <anantha.prabhu@broadcom.com >
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250908094516.18222-2-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
6603fbf158
RDMA/ionic: Add Makefile/Kconfig to kernel build environment
...
Add ionic to the kernel build environment.
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-15-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
ea4c399642
RDMA/ionic: Implement device stats ops
...
Implement device stats operations for hw stats and qp stats.
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-14-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
2075bbe8ef
RDMA/ionic: Register device ops for miscellaneous functionality
...
Implement idbdev ops for device and port information.
Co-developed-by: Andrew Boyer <andrew.boyer@amd.com >
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com >
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-13-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
b83c62055b
RDMA/ionic: Register device ops for datapath
...
Implement device supported verb APIs for datapath.
Co-developed-by: Andrew Boyer <andrew.boyer@amd.com >
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com >
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-12-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
e8521822c7
RDMA/ionic: Register device ops for control path
...
Implement device supported verb APIs for control path.
Co-developed-by: Andrew Boyer <andrew.boyer@amd.com >
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com >
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-11-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
f3bdbd4270
RDMA/ionic: Create device queues to support admin operations
...
Setup RDMA admin queues using device command exposed over
auxiliary device and manage these queues using ida.
Co-developed-by: Andrew Boyer <andrew.boyer@amd.com >
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com >
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-10-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
8d765af51a
RDMA/ionic: Register auxiliary module for ionic ethernet adapter
...
Register auxiliary module to create ibdevice for ionic
ethernet adapter.
Co-developed-by: Andrew Boyer <andrew.boyer@amd.com >
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com >
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-9-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
83597c841e
RDMA: Add IONIC to rdma_driver_id definition
...
Define RDMA_DRIVER_IONIC in enum rdma_driver_id.
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-8-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
11016c795e
net: ionic: Provide doorbell and CMB region information
...
The RDMA device needs information of controller memory bar and
doorbell capability to share with user context. Discover CMB regions
and express doorbell capabilities on device init.
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com >
Co-developed-by: Pablo Cascón <pablo.cascon@amd.com >
Signed-off-by: Pablo Cascón <pablo.cascon@amd.com >
Co-developed-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-7-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
2dc6a6a678
net: ionic: Provide interrupt allocation support for the RDMA driver
...
RDMA driver needs an interrupt for an event queue. Export
function from net driver to allocate an interrupt.
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-6-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
0e02faffdb
net: ionic: Provide RDMA reset support for the RDMA driver
...
The Ethernet driver holds the privilege to execute the device commands.
Export the function to execute RDMA reset command for use by RDMA driver.
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-5-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:36 -04:00
Abhijit Gangurde
089bbf4836
net: ionic: Export the APIs from net driver to support device commands
...
RDMA driver needs to establish admin queues to support admin operations.
Export the APIs to send device commands for the RDMA driver.
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-4-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Abhijit Gangurde
85372e4a49
net: ionic: Update LIF identity with additional RDMA capabilities
...
Firmware sends the RDMA capability in a response for LIF_IDENTIFY
device command. Update the LIF indentify with additional RDMA
capabilities used by driver and firmware.
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com >
Reviewed-by: Simon Horman <horms@kernel.org >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-3-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Abhijit Gangurde
ffad4278c2
net: ionic: Create an auxiliary device for rdma driver
...
To support RDMA capable ethernet device, create an auxiliary device in
the ionic Ethernet driver. The RDMA device is modeled as an auxiliary
device to the Ethernet device.
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com >
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com >
Link: https://patch.msgid.link/20250903061606.4139957-2-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Thorsten Blum
f5b6b4639b
RDMA/bnxt_re: Call strscpy() with correct size argument
...
In bnxt_re_register_ib(), strscpy() is called with the length of the
source string rather than the size of the destination buffer.
This is fine as long as the destination buffer is larger than the source
string, but we should still use the destination buffer size instead to
call strscpy() as intended. And since 'node_desc' has a fixed size, we
can safely omit the size argument and let strscpy() infer it using
sizeof().
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev >
Link: https://patch.msgid.link/20250901150038.227036-2-thorsten.blum@linux.dev
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Xichao Zhao
2ed096dc41
RDMA/core: fix "truely"->"truly"
...
Trivial fix to spelling mistake in comment text.
Signed-off-by: Xichao Zhao <zhao.xichao@vivo.com >
Link: https://patch.msgid.link/20250827120007.489496-1-zhao.xichao@vivo.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Qianfeng Rong
490a253cb4
RDMA/rdmavt: Use int type to store negative error codes
...
Change 'ret' from u32 to int in alloc_qpn() to store -EINVAL, and remove
the 'bail' label as it simply returns 'ret'.
Storing negative error codes in an u32 causes no runtime issues, but it's
ugly as pants, Change 'ret' from u32 to int type - this change has no
runtime impact.
Signed-off-by: Qianfeng Rong <rongqianfeng@vivo.com >
Link: https://patch.msgid.link/20250826150556.541440-1-rongqianfeng@vivo.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Edward Srouji
372fdb5c75
RDMA/mlx5: Fix page size bitmap calculation for KSM mode
...
When using KSM (Key Scatter-gather Memory) access mode, the HW requires
the IOVA to be aligned to the selected page size.
Without this alignment, the HW may not function correctly.
Currently, mlx5_umem_mkc_find_best_pgsz() does not filter out page sizes
that would result in misaligned IOVAs for KSM mode. This can lead to
selecting page sizes that are incompatible with the given IOVA.
Fix this by filtering the page size bitmap when in KSM mode, keeping
only page sizes to which the IOVA is aligned to.
Fixes: fcfb03597b ("RDMA/mlx5: Align mkc page size capability check to PRM")
Signed-off-by: Edward Srouji <edwards@nvidia.com >
Link: https://patch.msgid.link/20250824144839.154717-1-edwards@nvidia.com
Reviewed-by: Michael Guralnik <michaelgur@nvidia.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:35 -04:00
Kalesh AP
aae757ec20
RDMA/bnxt_re: Remove unnecessary condition checks
...
The check for "rdev" and "en_dev" pointer validity always
return false.
Remove them.
Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-11-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:31 -04:00
Saravanan Vajravel
6133c13154
RDMA/bnxt_re: Use firmware provided message timeout value
...
Before this patch, we used a hardcoded value of 500 msec as the default
value for L2 firmware message response timeout. With this commit,
the driver is using the firmware timeout value from the firmware.
As part of this change moved bnxt_re_query_hwrm_intf_version() to
bnxt_re_setup_chip_ctx() so that timeout value is queries before
sending first command.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com >
Reviewed-by: Bhargava Chenna Marreddy <bhargava.marreddy@broadcom.com >
Co-developed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-10-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:27 -04:00
Saravanan Vajravel
959d10d642
RDMA/bnxt_re: Initialize fw with roce_mirror support
...
- Check FW capability for roce_mirror support.
- Initialize FW with roce_mirror support.
- When modifying QP, use unique GID for sgid incase of RawEth QP.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Reviewed-by: Anantha Prabhu <anantha.prabhu@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-9-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:22 -04:00
Saravanan Vajravel
7c7511f165
RDMA/bnxt_re: Add support for flow create/destroy
...
- Added support for create_flow and destroy_flow verbs. These
verbs are used on RawEth QP to add a specific flow action.
- To support TCP dump on RoCE, added IB_FLOW_ATTR_SNIFFER
attribute.
- In create_flow verb, driver allocates mirror_vnic and configure it
with RawEth QP. Once this is done, driver will enable mirroring.
- In destroy_flow, driver will disable mirroring and free the mirror
vnic.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-8-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:18 -04:00
Saravanan Vajravel
fd6c9ae7c1
RDMA/bnxt_re: Add support for mirror vnic
...
Added below support:
- Querying the pre-reserved mirror_vnic_id
- Allocating/freeing mirror_vnic
- Configuring mirror vnic to associate it with raw qp
These functions will be used in the subsequent patch in this series.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-7-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:14 -04:00
Saravanan Vajravel
af7f9d0d57
RDMA/bnxt_re: Add support for unique GID
...
- RawEth QP requires unique GID so that per function stats_ctx
is not polluted by packets mirrored to RoCE vnic.
- Added support to add unique GID when RawEth type QP is created.
- Added support to destroy unique GID when RawEth type QP is
destroyed.
- Allocated exclusive stats_ctx to use for RawEth type QP.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-6-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:10 -04:00
Kalesh AP
b5942828ea
RDMA/bnxt_re: Refactor stats context memory allocation
...
Moved the stats context allocation logic to a new function.
The stats context memory allocation code has been moved from
bnxt_qplib_alloc_hwctx() to the newly added bnxt_re_get_stats_ctx()
function. Also, the code to send the firmware command has been moved.
This patch is in preparation for other patches in this series.
There is no functional changes intended.
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-5-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:07 -04:00
Kalesh AP
2419b16a3d
RDMA/bnxt_re: Refactor hw context memory allocation
...
This patch is in preparation for other patches in this series.
There is no functional changes intended.
1. Rename bnxt_qplib_alloc_ctx() to bnxt_qplib_alloc_hwctx().
2. Rename bnxt_qplib_free_ctx() to bnxt_qplib_free_hwctx().
3. Reduce the number of arguments of bnxt_qplib_alloc_hwctx()
by moving a check outside of it.
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-4-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:18:03 -04:00
Saravanan Vajravel
8f47f12db5
RDMA/bnxt_re: Add data structures for RoCE mirror support
...
Added data structures required for supporting mirroring on
RoCE device.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-3-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:17:59 -04:00
Saravanan Vajravel
217156bb70
bnxt_en: Enhance stats context reservation logic
...
When the firmware advertises that the device is capable of supporting
port mirroring on RoCE device, reserve one additional stat_ctx.
To support port mirroring feature, RDMA driver allocates one stat_ctx
for exclusive use in RawEth QP.
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com >
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Reviewed-by: Michael Chan <michael.chan@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250822040801.776196-2-kalesh-anakkur.purayil@broadcom.com
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com >
Acked-by: Jakub Kicinski <kuba@kernel.org >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:17:54 -04:00
Kalesh AP
c0da8dc534
RDMA/bnxt_re: Enhance a log message when bnxt_re_register_netdev fails
...
Make a error log message more user friendly.
When bnxt_re_register_netdev()() fails, the current
log does not convey much information.
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-10-kalesh-anakkur.purayil@broadcom.com
Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-11 02:17:43 -04:00
Kalesh AP
4a9fba4d00
RDMA/bnxt_re: Delete always true SGID table check
...
The "sgid_tbl" inside "rdev->qplib_res" is a static memory.
Hence, the check always return true.
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-9-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-08 03:08:35 -04:00
Abhishek Mohapatra
dc61e916f1
RDMA/bnxt_re: Report udp source port for flow_label in bnxt_re_query_qp
...
The firmware doesn't capture the flow_label. Therefore the value
that's always returned by qplib_qp->ah.flow_label is 0 whenever
a qp is created. And as per IB spec, udp source port can be reported
for flow_label. Hence reported udp source port for flow_label in
bnxt_re_query_qp by populating the value of qplib_qp->udp_sport
into qp_attr->ah_attr.grh.flow_label.
Signed-off-by: Abhishek Mohapatra <abhishek.mohapatra@broadcom.com >
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-8-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-08 03:08:35 -04:00
Vasuthevan Maheswaran
ef56081d18
RDMA/bnxt_re: RoCE related hardware counters update
...
Support for new hardware counters added, and existing hardware
counters have been modified according to the design documents
for compatibility with open-source monitoring agents.
Signed-off-by: Vasuthevan Maheswaran <vasuthevan.maheswaran@broadcom.com >
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-7-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-08 03:08:35 -04:00
Damodharam Ammepalli
832fc9e161
RDMA/bnxt_re: Optimize bnxt_qplib_get_dev_attr function
...
Optimize bnxt_qplib_get_dev_attr() by separating out query_version which
uses creq notification method to host. Due to serialization of cmdq by
firmware, expected latency in response to heavy multi-threaded rdma
applications might be observed.
This patch separates the version_query logic out of device attribute
query and called only during rdma driver init.
Signed-off-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com >
Reviewed-by: Hongguang Gao <hongguang.gao@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-6-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-08 03:08:35 -04:00
Chenna Arnoori
ae7990ce1f
RDMA/bnxt_re: RoCE Driver Dynamic Debug for HWRM's
...
Add Linux kernel dynamic debug prints to ROCE HWRM's.
Dumping request and response buffers for the ROCE HWRM's using
print_hex_dump_bytes() to be part of kernel dynmic debug.
Signed-off-by: Chenna Arnoori <chenna.arnoori@broadcom.com >
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-4-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-08 03:08:35 -04:00
Kashyap Desai
8191e87415
RDMA/bnxt_re: Show srq_limit in fill_res_srq_entry hook
...
Added srq_limit in rdma show resource srq hook.
Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com >
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com >
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com >
Link: https://patch.msgid.link/20250814112555.221665-3-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-09-08 03:08:28 -04:00
Qianfeng Rong
2aa35b24ad
RDMA/erdma: Use vcalloc() instead of vzalloc()
...
Replace vzalloc() with vcalloc() in vmalloc_to_dma_addrs(). As noted in
the kernel documentation [1], open-coded multiplication in allocator
arguments is discouraged because it can lead to integer overflow.
Use vcalloc() to gain built-in overflow protection, making memory
allocation safer when calculating allocation size compared to explicit
multiplication.
[1]: https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments
Link: https://patch.msgid.link/r/20250821072209.510348-1-rongqianfeng@vivo.com
Signed-off-by: Qianfeng Rong <rongqianfeng@vivo.com >
Reviewed-by: Cheng Xu <chengyou@linux.alibaba.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2025-08-25 15:14:54 -03:00
Patrisious Haddad
08aae78604
RDMA/mlx5: Fix vport loopback forcing for MPV device
...
Previously loopback for MPV was supposed to be permanently enabled,
however other driver flows were able to over-ride that configuration and
disable it.
Add force_lb parameter that indicates that loopback should always be
enabled which prevents all other driver flows from disabling it.
Fixes: a9a9e68954 ("RDMA/mlx5: Fix vport loopback for MPV device")
Link: https://patch.msgid.link/r/cfc6b1f0f99f8100b087483cc14da6025317f901.1755088808.git.leon@kernel.org
Signed-off-by: Patrisious Haddad <phaddad@nvidia.com >
Reviewed-by: Mark Bloch <mbloch@nvidia.com >
Signed-off-by: Leon Romanovsky <leonro@nvidia.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2025-08-25 14:49:59 -03:00
Or Har-Toov
1a7c18c485
RDMA/mlx5: Better estimate max_qp_wr to reflect WQE count
...
The mlx5 driver currently derives max_qp_wr directly from the
log_max_qp_sz HCA capability:
props->max_qp_wr = 1 << MLX5_CAP_GEN(mdev, log_max_qp_sz);
However, this value represents the number of WQEs in units of Basic
Blocks (see MLX5_SEND_WQE_BB), not actual number of WQEs. Since the size
of a WQE can vary depending on transport type and features (e.g., atomic
operations, UMR, LSO), the actual number of WQEs can be significantly
smaller than the WQEBB count suggests.
This patch introduces a conservative estimation of the worst-case WQE size
— considering largest segments possible with 1 SGE and no inline data or
special features. It uses this to derive a more accurate max_qp_wr value.
Fixes: 938fe83c8d ("net/mlx5_core: New device capabilities handling")
Link: https://patch.msgid.link/r/7d992c9831c997ed5c33d30973406dc2dcaf5e89.1755088725.git.leon@kernel.org
Reported-by: Chuck Lever <cel@kernel.org >
Closes: https://lore.kernel.org/all/20250506142202.GJ2260621@ziepe.ca/
Signed-off-by: Or Har-Toov <ohartoov@nvidia.com >
Signed-off-by: Leon Romanovsky <leonro@nvidia.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2025-08-25 14:42:19 -03:00
Yishai Hadas
d9e6e85b7b
RDMA/mlx5: Enable Data-Direct with Relaxed Ordering
...
Relaxed Ordering can improve performance in certain scenarios.
Enable it in the Data-Direct use case as well.
Link: https://patch.msgid.link/r/1221dcdda8061ba5f6bc3519044083c7438b257e.1755088503.git.leon@kernel.org
Signed-off-by: Yishai Hadas <yishaih@nvidia.com >
Reviewed-by: Gal Shalom <galshalom@Nvidia.com >
Signed-off-by: Leon Romanovsky <leonro@nvidia.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2025-08-25 14:40:29 -03:00
Michael Margolin
8e5442f393
RDMA/efa: Extend admin timeout error print
...
Add command id to the printed message for additional debug information.
Link: https://patch.msgid.link/r/20250703182314.16442-1-mrgolin@amazon.com
Reviewed-by: Yonatan Nachum <ynachum@amazon.com >
Signed-off-by: Michael Margolin <mrgolin@amazon.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2025-08-25 11:53:48 -03:00
Fushuai Wang
211dc59b7b
IB/hfi1: Use for_each_online_cpu() instead of for_each_cpu()
...
Replace the opencoded for_each_cpu(cpu, cpu_online_mask) loop with the
more readable and equivalent for_each_online_cpu(cpu) macro.
Signed-off-by: Fushuai Wang <wangfushuai@baidu.com >
Link: https://patch.msgid.link/20250811062534.1041-1-wangfushuai@baidu.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-08-13 07:05:40 -04:00
Konstantin Taranov
44d69d3cf2
RDMA/mana_ib: Drain send wrs of GSI QP
...
Drain send WRs of the GSI QP on device removal.
In rare servicing scenarios, the hardware may delete the
state of the GSI QP, preventing it from generating CQEs
for pending send WRs. Since WRs submitted to the GSI QP
hold CM resources, the device cannot be removed until
those WRs are completed. This patch marks all pending
send WRs as failed, allowing the GSI QP to release the CM
resources and enabling safe device removal.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1753779618-23629-1-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-08-13 06:33:33 -04:00