mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-16 04:27:57 -05:00
RDMA/ucma: Support write an event into a CM
Enable user-space to inject an event into a CM through it's event
channel. Two new events are added and supported: RDMA_CM_EVENT_USER and
RDMA_CM_EVENT_INTERNAL. With these 2 events a new event parameter "arg"
is supported, which is passed from sender to receiver transparently.
With this feature an application is able to write an event into a CM
channel with a new user-space rdmacm API. For example thread T1 could
write an event with the API:
rdma_write_cm_event(cm_id, RDMA_CM_EVENT_USER, status, arg);
and thread T2 could receive the event with rdma_get_cm_event().
Signed-off-by: Mark Zhang <markzhang@nvidia.com>
Reviewed-by: Vlad Dumitrescu <vdumitrescu@nvidia.com>
Link: https://patch.msgid.link/fdf49d0b17a45933c5d8c1d90605c9447d9a3c73.1751279794.git.leonro@nvidia.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
committed by
Leon Romanovsky
parent
810f874eda
commit
a3c9d0fcd3
@@ -68,7 +68,8 @@ enum {
|
||||
RDMA_USER_CM_CMD_BIND,
|
||||
RDMA_USER_CM_CMD_RESOLVE_ADDR,
|
||||
RDMA_USER_CM_CMD_JOIN_MCAST,
|
||||
RDMA_USER_CM_CMD_RESOLVE_IB_SERVICE
|
||||
RDMA_USER_CM_CMD_RESOLVE_IB_SERVICE,
|
||||
RDMA_USER_CM_CMD_WRITE_CM_EVENT,
|
||||
};
|
||||
|
||||
/* See IBTA Annex A11, servies ID bytes 4 & 5 */
|
||||
@@ -304,6 +305,7 @@ struct rdma_ucm_event_resp {
|
||||
union {
|
||||
struct rdma_ucm_conn_param conn;
|
||||
struct rdma_ucm_ud_param ud;
|
||||
__u32 arg32[2];
|
||||
} param;
|
||||
__u32 reserved;
|
||||
struct rdma_ucm_ece ece;
|
||||
@@ -362,4 +364,16 @@ struct rdma_ucm_resolve_ib_service {
|
||||
__u32 id;
|
||||
struct rdma_ucm_ib_service ibs;
|
||||
};
|
||||
|
||||
struct rdma_ucm_write_cm_event {
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
__u32 event;
|
||||
__u32 status;
|
||||
union {
|
||||
struct rdma_ucm_conn_param conn;
|
||||
struct rdma_ucm_ud_param ud;
|
||||
__u64 arg;
|
||||
} param;
|
||||
};
|
||||
#endif /* RDMA_USER_CM_H */
|
||||
|
||||
Reference in New Issue
Block a user