[openib-general] ib_send_cm_req failes with error -22

Sean Hefty mshefty at ichips.intel.com
Wed Apr 19 12:17:34 PDT 2006


susan wrote:
> the problem that i am running into is that the ib_send_cm_req
> api fails with errorno 22. i'm using local id to make the
> connection on port 1. ib_send_cm_req() api calls function
> cm_init_av_by_path(), which calls ib_find_cached_gid().
> function ib_find_cached_gid() fails because it can't locate
> cached gid in device's cache table. below is full control
> flow from both primary & secondary node.

You may want to look at using the rdma_cm interface in place of the lower-level 
ib_cm interface.

>   priamry node				   secondary node
>  --------------                       -----------------
> 						ib_register_client()
> 						using active port = 1
> 						ib_create_cm_id()
> 						ib_cm_listen()
> 						listening .... (waiting)
> 
> ib_register_client()
> using active port = 1
> ib_create_cm_id()
> ib_alloc_pd()
> ib_create_cq()
> ib_req_notify_cq()
> ib_get_dma_mr()
> ib_create_qp()
> ib_query_gid()
> source.lid = 0x1
> dest.lid = 0x2
> ib_sa_path_rec_get()
> sa_path_rec handler returned success
> ib_send_cm_req()
> ib_send_cm_req() failed with error -22

-22 (EINVAL) indicates that one of the parameters is invalid.  The initial 
checks done by the ib_cm are:

	/* peer-to-peer not supported */
	if (param->peer_to_peer)
		return -EINVAL;

	if (!param->primary_path)
		return -EINVAL;

	if (param->qp_type != IB_QPT_RC && param->qp_type != IB_QPT_UC)
		return -EINVAL;

	if (param->private_data &&
	    param->private_data_len > IB_CM_REQ_PRIVATE_DATA_SIZE)
		return -EINVAL;

	if (param->alternate_path &&
	    (param->alternate_path->pkey != param->primary_path->pkey ||
	     param->alternate_path->mtu != param->primary_path->mtu))
		return -EINVAL;

Can you verify that the input parameter would pass these tests?  There are some 
more tests further down in the code that could also return this same error if 
these all pass.  Posting the actual code that calls ib_send_cm_req() may also 
help debug the problem.

- Sean



More information about the general mailing list