[openib-general] amso userspace
Steve Wise
swise at opengridcomputing.com
Fri Jun 23 11:26:24 PDT 2006
> Should I expect to be able to use the kernel directories in branches/iwarp
> directly with linux-2.6.17.1? It looks like your branch may be out
> of date with respect to trunk for a few files. I used it anyway and
> it does seem to build and run.
I haven't tried branches/iwarp with a 2.6.17 kernel. It works fine with
2.6.16 though, and I expect it to work fine in 2.6.17. The branch is a
snapshot of the main trunk and we only update it occasionally.
>
> In the userspace source, amso_create_qp limits max_send_sge and
> max_recv_sge to 4. Is this really the hardware limit? It seems
> quite low.
>
Yep. That's a HW limit.
> Should I expect the examples in
> branches/iwarp/src/userspace/libibverbs/examples to work? I was
> hoping to use rc_pingpong.c as a way to understand what was going
> wrong with my code, but it exits when it finds that its local lid is
> zero (line 578).
Those examples only work for IB transports. The examples in
librdma/examples will run over iwarp because they utilize the RDMA
CMA.
>
> One spot in my code where I'm trying to understand why libamso
> errors is this transition to RTS (not using rdmacm, just bringing
> it up by hand):
>
> /* transition qp to ready-to-send */
> mask =
> IBV_QP_STATE
> | IBV_QP_SQ_PSN
> | IBV_QP_MAX_QP_RD_ATOMIC
> | IBV_QP_TIMEOUT
> | IBV_QP_RETRY_CNT
> | IBV_QP_RNR_RETRY;
> memset(&attr, 0, sizeof(attr));
> attr.qp_state = IBV_QPS_RTS;
> attr.sq_psn = 0;
> attr.max_rd_atomic = 1;
> attr.timeout = 26; /* 4.096us * 2^26 = 5 min */
> attr.retry_cnt = 20;
> attr.rnr_retry = 20;
> ret = ibv_modify_qp(qp, &attr, mask);
> if (ret)
> error_xerrno(ret, "%s: ibv_modify_qp RTR -> RTS", __func__);
>
> The return value is 11, EAGAIN.
>
> With C2_DEBUG on, the kernel says to the console:
>
> c2: c2_qp_modify:145 qp=ffff81003e71f180, IB_QPS_RTR --> IB_QPS_RTS
> c2: c2_qp_modify: c2_errno=-11
> c2: c2_qp_modify:243 qp=ffff81003e71f180, cur_state=IB_QPS_RTR
>
> I'm guessing one of those values must be off, but can't see where
> anything is enforced in the lib or kernel driver. Some of these
> fields don't make sense for non-IB fabrics. Just using a mask of
> IBV_QP_STATE caused the same return value. Can you see the problem
> right off? (This code does work fine on mthca.)
>
You need to use librdmacm to setup iwarp connections. That's the only
way it will work for the amso device. See librdma/examples. I also
posted a patch to perftest/rdma_lat.c and rdma_bw.c that added a -c
option to utilize the RDMA CMA. The patch didn't get pulled in,
however...
Steve.
More information about the general
mailing list