Konstantin Taranov
c390828d4d
RDMA/mana_ib: Add support of mana_ib for RNIC and ETH nic
...
Allow mana_ib to be created over ethernet gdma device and
over rnic gdma device. The HW has two devices with different
capabilities and different use-cases. Initialize required
resources depending on the used gdma device.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1746633545-17653-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-05-12 06:44:52 -04:00
Long Li
bee35b7161
RDMA/mana_ib: Handle net event for pointing to the current netdev
...
When running under Hyper-V, the master device to the RDMA device is always
bonded to this RDMA device. This is not user-configurable.
The master device can be unbind/bind from the kernel. During those events,
the RDMA device should set to the current netdev to reflect the change of
master device from those events.
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://patch.msgid.link/1741821332-9392-2-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-03-13 08:03:03 -04:00
Long Li
a8445cfec1
net: mana: Change the function signature of mana_get_primary_netdev_rcu
...
Change mana_get_primary_netdev_rcu() to mana_get_primary_netdev(), and
return the ndev with refcount held. The caller is responsible for dropping
the refcount.
Also drop the check for IFF_SLAVE as it is not necessary if the upper
device is present.
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://patch.msgid.link/1741821332-9392-1-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-03-13 08:03:02 -04:00
Konstantin Taranov
ffd67b6b42
RDMA/mana_ib: Implement DMABUF MR support
...
Add support of dmabuf MRs to mana_ib.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1739454861-4456-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-18 08:26:27 -05:00
Dan Carpenter
607a7dcf2e
RDMA/mana_ib: Fix error code in probe()
...
Return -ENOMEM if dma_pool_create() fails. Don't return success.
Fixes: df91c470d9 ("RDMA/mana_ib: create/destroy AH")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org >
Link: https://patch.msgid.link/2bbe900e-18b3-46b5-a08c-42eb71886da6@stanley.mountain
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-09 04:24:06 -05:00
Shiraz Saleem
79bccd7461
RDMA/mana_ib: Add port statistics support
...
Implement alloc_hw_port_stats and get_hw_stats APIs to support querying
MANA VF port level statistics from rdma stat tool.
Example output from rdma stat tool:
$rdma statistic show link mana_0/1 -p
link mana_0/1
requester_timeout 45
requester_oos_nak 0
requester_rnr_nak 0
responder_rnr_nak 0
responder_oos 0
responder_dup_request 0
requester_implicit_nak 0
requester_readresp_psn_mismatch 0
nak_inv_req 0
nak_access_error 0
nak_opp_error 0
nak_inv_read 0
responder_local_len_error 0
requestor_local_prot_error 0
responder_rem_access_error 0
responder_local_qp_error 0
responder_malformed_wqe 0
general_hw_error 6
requester_rnr_nak_retries_exceeded 0
requester_retries_exceeded 5
total_fatal_error 6
received_cnps 0
num_qps_congested 0
rate_inc_events 0
num_qps_recovered 0
current_rate 100000
Signed-off-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1738751527-15517-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-06 04:11:01 -05:00
Konstantin Taranov
cfef452592
RDMA/mana_ib: polling of CQs for GSI/UD
...
Add polling for the kernel CQs.
Process completion events for UD/GSI QPs.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-13-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
40ebdacb4e
RDMA/mana_ib: implement req_notify_cq
...
Arm a CQ when req_notify_cq is called.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-11-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
c8017f5b48
RDMA/mana_ib: UD/GSI work requests
...
Implement post send and post recv for UD/GSI QPs.
Add information about posted requests into shadow queues.
Co-developed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Signed-off-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-10-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
df91c470d9
RDMA/mana_ib: create/destroy AH
...
Implement create and destroy AH for kernel.
In mana_ib, AV is passed as an sge in WQE.
Allocate DMA memory and write an AV there.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-8-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
6e1b8bdcd0
RDMA/mana_ib: implement get_dma_mr
...
Implement allocation of DMA-mapped memory regions.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-03 06:56:19 -05:00
Peter Zijlstra
cdd30ebb1b
module: Convert symbol namespace to string literal
...
Clean up the existing export namespace code along the same lines of
commit 33def8498f ("treewide: Convert macro and uses of __section(foo)
to __section("foo")") and for the same reason, it is not desired for the
namespace argument to be a macro expansion itself.
Scripted using
git grep -l -e MODULE_IMPORT_NS -e EXPORT_SYMBOL_NS | while read file;
do
awk -i inplace '
/^#define EXPORT_SYMBOL_NS/ {
gsub(/__stringify\(ns\)/, "ns");
print;
next;
}
/^#define MODULE_IMPORT_NS/ {
gsub(/__stringify\(ns\)/, "ns");
print;
next;
}
/MODULE_IMPORT_NS/ {
$0 = gensub(/MODULE_IMPORT_NS\(([^)]*)\)/, "MODULE_IMPORT_NS(\"\\1\")", "g");
}
/EXPORT_SYMBOL_NS/ {
if ($0 ~ /(EXPORT_SYMBOL_NS[^(]*)\(([^,]+),/) {
if ($0 !~ /(EXPORT_SYMBOL_NS[^(]*)\(([^,]+), ([^)]+)\)/ &&
$0 !~ /(EXPORT_SYMBOL_NS[^(]*)\(\)/ &&
$0 !~ /^my/) {
getline line;
gsub(/[[:space:]]*\\$/, "");
gsub(/[[:space:]]/, "", line);
$0 = $0 " " line;
}
$0 = gensub(/(EXPORT_SYMBOL_NS[^(]*)\(([^,]+), ([^)]+)\)/,
"\\1(\\2, \"\\3\")", "g");
}
}
{ print }' $file;
done
Requested-by: Masahiro Yamada <masahiroy@kernel.org >
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org >
Link: https://mail.google.com/mail/u/2/#inbox/FMfcgzQXKWgMmjdFwwdsfgxzKpVHWPlc
Acked-by: Greg KH <gregkh@linuxfoundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2024-12-02 11:34:44 -08:00
Konstantin Taranov
1df03a4b44
RDMA/mana_ib: Set correct device into ib
...
Add mana_get_primary_netdev_rcu helper to get a primary
netdevice for a given port. When mana is used with
netvsc, the VF netdev is controlled by an upper netvsc
device. In a baremetal case, the VF netdev is the
primary device.
Use the mana_get_primary_netdev_rcu() helper in the mana_ib
to get the correct device for querying network states.
Fixes: 8b184e4f1c ("RDMA/mana_ib: Enable RoCE on port 1")
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1720705077-322-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-07-14 10:49:53 +03:00
Konstantin Taranov
2a1251e3db
RDMA/mana_ib: Process QP error events in mana_ib
...
Process QP fatal events from the error event queue.
For that, find the QP, using QPN from the event, and then call its
event_handler. To find the QPs, store created RC QPs in an xarray.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1717754897-19858-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Wei Hu <weh@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-06-09 13:46:44 +03:00
Konstantin Taranov
65357e2c16
RDMA/mana_ib: set node_guid
...
Use the mac address for the node_guid of the IB device.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1717070117-1234-2-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-06-02 11:50:15 +03:00
Konstantin Taranov
f88320b698
RDMA/mana_ib: Fix missing ret value
...
Set ret to -ENODEV when netdev_master_upper_dev_get_rcu returns NULL.
Fixes: 8b184e4f1c ("RDMA/mana_ib: Enable RoCE on port 1")
Link: https://lore.kernel.org/r/1713881751-21621-1-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2024-04-23 12:02:44 -03:00
Konstantin Taranov
8859f009ac
RDMA/mana_ib: Configure mac address in RNIC
...
Set local mac address in RNIC, which is required by the HW.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-7-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
faafb8b126
RDMA/mana_ib: Adding and deleting GIDs
...
Implement add_gid and del_gid for RNIC.
IPv4 and IPv6 addresses are supported.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-6-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
8b184e4f1c
RDMA/mana_ib: Enable RoCE on port 1
...
Set netdev and RoCEv2 flag to enable GID population on port 1.
Use GIDs of the master netdev. As mc->ports[] stores slave devices,
use a helper to get the master netdev.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-5-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
4bda1d5332
RDMA/mana_ib: Implement port parameters
...
Implement port parameters for RNIC:
1) extend query_port() method
2) implement get_link_layer()
3) implement query_pkey()
Only port 1 can store GIDs.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-4-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
1a79c2b9d4
RDMA/mana_ib: Create and destroy rnic adapter
...
Add functions for RNIC creation and destruction.
If creation fails, the ib_probe fails as well.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-3-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
98b889c439
RDMA/mana_ib: Add EQ creation for rnic adapter
...
Create an error EQ for the RNIC adapter.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-2-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
23f59f4e83
RDMA/mana_ib: Use num_comp_vectors of ib_device
...
Use num_comp_vectors of struct ib_device instead of max_num_queues
from gdma_context.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712911656-17352-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 13:29:47 +03:00
Long Li
2c20e20b22
RDMA/mana_ib: query device capabilities
...
With RDMA device registered, use it to query on hardware capabilities and
cache this information for future query requests to the driver.
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://lore.kernel.org/r/1702692255-23640-3-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2023-12-20 10:25:40 +02:00
Long Li
a7f0636d22
RDMA/mana_ib: register RDMA device with GDMA
...
Software client needs to register with the RDMA management interface on
the SoC to access more features, including querying device capabilities
and RC queue pair.
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://lore.kernel.org/r/1702692255-23640-2-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2023-12-20 10:25:40 +02:00
Long Li
0266a17763
RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
...
Add a RDMA VF driver for Microsoft Azure Network Adapter (MANA).
Co-developed-by: Ajay Sharma <sharmaajay@microsoft.com >
Signed-off-by: Ajay Sharma <sharmaajay@microsoft.com >
Reviewed-by: Dexuan Cui <decui@microsoft.com >
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://lore.kernel.org/r/1667502990-2559-13-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2022-11-11 11:40:09 +02:00