linux-stable/drivers/infiniband/core
Parav Pandit 4d51c3d9de RDMA/cma: Skip device which doesn't support CM
A switchdev RDMA device do not support IB CM. When such device is added to
the RDMA CM's device list, when application invokes rdma_listen(), cma
attempts to listen to such device, however it has IB CM attribute
disabled.

Due to this, rdma_listen() call fails to listen for other non switchdev
devices as well.

A below error message can be seen.

infiniband mlx5_0: RDMA CMA: cma_listen_on_dev, error -38

A failing call flow is below.

  cma_listen_on_all()
    cma_listen_on_dev()
      _cma_attach_to_dev()
        rdma_listen() <- fails on a specific switchdev device

This is because rdma_listen() is hardwired to only work with iwarp or IB
CM compatible devices.

Hence, when a IB device doesn't support IB CM or IW CM, avoid adding such
device to the cma list so rdma_listen() can't even be called.

Link: https://lore.kernel.org/r/f9cac00d52864ea7c61295e43fb64cf4db4fdae6.1618753862.git.leonro@nvidia.com
Signed-off-by: Parav Pandit <parav@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2021-04-21 20:27:52 -03:00
..
addr.c RDMA/addr: Fix race with netevent_callback()/rdma_addr_cancel() 2020-09-30 15:29:05 -03:00
agent.c
agent.h
cache.c RDMA/core: Correct format of braces 2021-04-12 14:56:51 -03:00
cgroup.c
cm.c RDMA/core: Unify RoCE check and re-factor code 2021-04-19 12:56:53 -03:00
cm_msgs.h RDMA/core: Add necessary spaces 2021-04-12 14:52:22 -03:00
cm_trace.c RDMA/cm: Replace pr_debug() call sites with tracepoints 2020-08-24 19:41:41 -03:00
cm_trace.h RDMA/cm: Add tracepoints to track MAD send operations 2020-08-24 19:41:41 -03:00
cma.c RDMA/cma: Skip device which doesn't support CM 2021-04-21 20:27:52 -03:00
cma_configfs.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
cma_priv.h IB/cma: Introduce rdma_set_min_rnr_timer() 2021-04-12 19:51:48 -03:00
cma_trace.c RDMA/cma: Add trace points in RDMA Connection Manager 2020-01-07 16:10:53 -04:00
cma_trace.h RDMA/core: Move the rdma_show_ib_cm_event() macro 2020-08-24 16:01:47 -03:00
core_priv.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
counters.c RDMA/uverbs: Refactor rdma_counter_set_auto_mode and __counter_set_mode 2021-03-26 11:52:09 -03:00
cq.c RDMA/core: Clean up cq pool mechanism 2020-12-10 15:05:17 -04:00
device.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
ib_core_uverbs.c RDMA/core: Ensure that rdma_user_mmap_entry_remove() is a fence 2020-01-25 14:48:33 -04:00
iwcm.c RDMA/iwcm: Fix iwcm work deallocation 2020-03-04 14:28:25 -04:00
iwcm.h
iwpm_msg.c RDMA/core: Correct format of block comments 2021-04-12 14:56:51 -03:00
iwpm_util.c RDMA/core/iwpm_util: Fix some param description misspellings 2021-01-19 20:33:44 -04:00
iwpm_util.h IB: Fix kernel-doc markups 2020-12-07 15:45:00 -04:00
lag.c RDMA/core: Consider flow label when building skb 2020-05-06 16:51:43 -03:00
mad.c RDMA/core: Correct format of block comments 2021-04-12 14:56:51 -03:00
mad_priv.h IB/mad: Change atomics to refcount API 2020-06-24 16:43:45 -03:00
mad_rmpp.c RDMA/core: Remove redundant spaces 2021-04-12 14:56:48 -03:00
mad_rmpp.h
Makefile RDMA/umem: Support importing dma-buf as user memory region 2021-01-20 16:07:52 -04:00
mr_pool.c Linux 5.2-rc6 2019-06-28 21:18:23 -03:00
multicast.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
netlink.c IB/core: Avoid deadlock during netlink message handling 2019-10-24 20:49:37 -03:00
nldev.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
opa_smi.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
packer.c
rdma_core.c RDMA/core: Correct misspellings of two words in comments 2021-03-26 11:58:26 -03:00
rdma_core.h IB/uverbs: Introduce create/destroy QP commands over ioctl 2020-05-21 20:39:36 -03:00
restrack.c RDMA/core/restrack: Fix kernel-doc formatting issue 2021-01-19 20:33:43 -04:00
restrack.h RDMA/restrack: Improve readability in task name management 2020-09-22 19:47:35 -03:00
roce_gid_mgmt.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
rw.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
sa.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
sa_query.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
security.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
smi.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
smi.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
sysfs.c RDMA/core: Correct format of braces 2021-04-12 14:56:51 -03:00
trace.c RDMA/core: Clean up tracepoint headers 2020-07-06 14:54:46 -03:00
ucma.c RDMA/core: Add necessary spaces 2021-04-12 14:52:22 -03:00
ud_header.c RDMA/core: Use sizeof_field() helper 2020-05-27 13:46:05 -03:00
umem.c RDMA/core: Print the function name by __func__ instead of an fixed string 2021-04-12 14:52:22 -03:00
umem_dmabuf.c RDMA/mlx5: Consolidate MR destruction to mlx5_ib_dereg_mr() 2021-03-11 20:03:25 -04:00
umem_odp.c IB/core: Enable ODP sync without faulting 2020-10-01 16:44:05 -03:00
user_mad.c RDMA/core: Remove redundant spaces 2021-04-12 14:56:48 -03:00
uverbs.h IB/uverbs: Extend CQ to get its own asynchronous event FD 2020-05-21 20:34:53 -03:00
uverbs_cmd.c RDMA/core: Remove redundant spaces 2021-04-12 14:56:48 -03:00
uverbs_ioctl.c IB/core: Split uverbs_get_const/default to consider target type 2021-03-11 20:20:36 -04:00
uverbs_main.c RDMA: Convert sysfs device * show functions to use sysfs_emit() 2020-10-26 19:53:21 -03:00
uverbs_marshall.c
uverbs_std_types.c RDMA/core: Make FD destroy callback void 2020-11-12 12:32:17 -04:00
uverbs_std_types_async_fd.c RDMA/core: Make FD destroy callback void 2020-11-12 12:32:17 -04:00
uverbs_std_types_counters.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_cq.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_device.c RDMA/uverbs: Fix incorrect variable type 2020-12-10 15:05:17 -04:00
uverbs_std_types_dm.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_flow_action.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_mr.c RDMA/uverbs: Add uverbs command for dma-buf based MR registration 2021-01-20 16:07:52 -04:00
uverbs_std_types_qp.c RDMA/restrack: Support all QP types 2020-11-27 11:38:46 -04:00
uverbs_std_types_srq.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_wq.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_uapi.c RDMA/core Remove uverbs_ex_cmd_mask 2020-10-26 19:27:59 -03:00
verbs.c RDMA/core: Correct format of block comments 2021-04-12 14:56:51 -03:00