linux/include/rdma
Stefan Metzmacher a760e80e90 RDMA/core: introduce rdma_restrict_node_type()
For smbdirect it required to use different ports depending
on the RDMA protocol. E.g. for iWarp 5445 is needed
(as tcp port 445 already used by the raw tcp transport for SMB),
while InfiniBand, RoCEv1 and RoCEv2 use port 445, as they
use an independent port range (even for RoCEv2, which uses udp
port 4791 itself).

Currently ksmbd is not able to function correctly at
all if the system has iWarp (RDMA_NODE_RNIC) interface(s)
and any InfiniBand, RoCEv1 and/or RoCEv2 interface(s)
at the same time.

And cifs.ko uses 5445 with a fallback to 445, which
means depending on the available interfaces, it tries
5445 in the RoCE range or may tries iWarp with 445
as a fallback. This leads to strange error messages
and strange network captures.

To avoid these problems they will be able to
use rdma_restrict_node_type(RDMA_NODE_RNIC) before
trying port 5445 and rdma_restrict_node_type(RDMA_NODE_IB_CA)
before trying port 445. It means we'll get early
-ENODEV early from rdma_resolve_addr() without any
network traffic and timeouts.

This is designed to be called before calling any
of rdma_bind_addr(), rdma_resolve_addr() or rdma_listen().

Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: linux-rdma@vger.kernel.org
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Acked-by: Leon Romanovsky <leon@kernel.org>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
2026-02-08 17:12:58 -06:00
..
ib.h
ib_addr.h
ib_cache.h RDMA/core: Remove unused ib_find_exact_cached_pkey 2024-12-24 05:00:42 -05:00
ib_cm.h RDMA/cm: Correct typedef and bad line warnings 2025-11-12 04:39:12 -05:00
ib_hdrs.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ib_mad.h RDMA/sa_query: Support IB service records resolution 2025-08-13 06:15:56 -04:00
ib_marshall.h RDMA/core: Remove unused ib_copy_path_rec_from_user 2024-12-24 05:00:42 -05:00
ib_pack.h RDMA/core: Remove unused ib_ud_header_unpack 2024-12-24 05:00:42 -05:00
ib_pma.h
ib_sa.h RDMA/sa_query: Support IB service records resolution 2025-08-13 06:15:56 -04:00
ib_smi.h
ib_sysfs.h
ib_ucaps.h RDMA/uverbs: Introduce UCAP (User CAPabilities) API 2025-03-09 13:13:02 -04:00
ib_umem.h RDMA/core: Add umem "is_contiguous" and "start_dma_addr" helpers 2025-07-13 04:00:34 -04:00
ib_umem_odp.h RDMA/core: Convert UMEM ODP DMA mapping to caching IOVA and page linkage 2025-05-12 06:06:51 -04:00
ib_verbs.h RDMA/core: Add new IB rate for XDR (8x) support 2025-11-24 02:58:30 -05:00
iba.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ibta_vol1_c12.h
iw_cm.h
iw_portmap.h
lag.h
mr_pool.h
opa_addr.h
opa_port_info.h
opa_smi.h
opa_vnic.h
rdma_cm.h RDMA/core: introduce rdma_restrict_node_type() 2026-02-08 17:12:58 -06:00
rdma_cm_ib.h
rdma_counter.h RDMA/core: Pass port to counter bind/unbind operations 2025-03-18 06:18:46 -04:00
rdma_netlink.h RDMA/nldev: Add support for RDMA monitoring 2024-09-13 08:29:14 +03:00
rdma_vt.h
rdmavt_cq.h
rdmavt_mr.h
rdmavt_qp.h IB/rdmavt: rdmavt_qp.h: clean up kernel-doc comments 2025-11-06 02:23:23 -05:00
restrack.h RDMA/core: Introduce a DMAH object and its alloc/free APIs 2025-07-23 01:42:10 -04:00
rw.h
signature.h
tid_rdma_defs.h
uverbs_ioctl.h
uverbs_named_ioctl.h
uverbs_std_types.h RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject() 2025-03-13 08:26:37 -04:00
uverbs_types.h RDMA/core: Move ib_uverbs_file struct to uverbs_types.h 2024-11-04 06:57:21 -05:00