Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38ca83a5 authored by Amir Vadai's avatar Amir Vadai Committed by Roland Dreier
Browse files

RDMA/cma: Add RDMA_CM_EVENT_TIMEWAIT_EXIT event



Consumers that want to re-use their QPs in new connections need to
know when the QP has exited the timewait state.  Report the timewait
event through the rdma_cm.

Signed-off-by: default avatarAmir Vadai <amirv@mellanox.co.il>
Acked-by: default avatarSean Hefty <sean.hefty@intel.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent dd5bdff8
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -920,7 +920,10 @@ static int cma_ib_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event)
	struct rdma_cm_event event;
	int ret = 0;

	if (cma_disable_callback(id_priv, CMA_CONNECT))
	if ((ib_event->event != IB_CM_TIMEWAIT_EXIT &&
		cma_disable_callback(id_priv, CMA_CONNECT)) ||
	    (ib_event->event == IB_CM_TIMEWAIT_EXIT &&
		cma_disable_callback(id_priv, CMA_DISCONNECT)))
		return 0;

	memset(&event, 0, sizeof event);
@@ -956,6 +959,8 @@ static int cma_ib_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event)
		event.event = RDMA_CM_EVENT_DISCONNECTED;
		break;
	case IB_CM_TIMEWAIT_EXIT:
		event.event = RDMA_CM_EVENT_TIMEWAIT_EXIT;
		break;
	case IB_CM_MRA_RECEIVED:
		/* ignore event */
		goto out;
+2 −1
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ enum rdma_cm_event_type {
	RDMA_CM_EVENT_DEVICE_REMOVAL,
	RDMA_CM_EVENT_MULTICAST_JOIN,
	RDMA_CM_EVENT_MULTICAST_ERROR,
	RDMA_CM_EVENT_ADDR_CHANGE
	RDMA_CM_EVENT_ADDR_CHANGE,
	RDMA_CM_EVENT_TIMEWAIT_EXIT
};

enum rdma_port_space {