[openib-general] Local QP operation err while sending packet over UD transport

Venkatesh Babu Venkatesh.Babu at 3leafnetworks.com
Tue Sep 27 19:43:10 PDT 2005


 VBabu> Thanks for your quick response.

I'm not sure if it matters, but firmware version 5.0.1 is old -- you
might want to upgrade to 5.1.0. 

 VBabu > I will check with the vendor and findout how to upgrade the firmware.

 Also, are you using the IB drivers
shipped with kernel 2.6.13.1, or have you updated to the OpenIB
subversion code?  There were several bugfixes to the mem-free support
since 2.6.13 was released.

 VBabu> Currently I am just using the IB drivers shipped with kernel 2.6.13.1. I will
also try to upgrade IB drivers to the latest OpenIB subversion code.

Per the IB spec, the opcode field is not valid if the status is not
success, so there's no point in looking at that -- it's just an
uninitialized memory location.  Also, the current driver doesn't set
the vendor_err field, so that's not useful either.

 VBabu> Then I will ignore opcode and vendor_err fields.

Perhaps someone from Mellanox can decode the undocumented fields of
this CQE.

 VBabu> I will contact Mellanox FAE to decode these fields.

One possibility that comes to mind is that you are not creating your
UD address handle correctly.  I think that could possibly cause the
error you're seeing.

Can you post the code you're getting this error with?

 VBabu> I am not sure I can post the whole code. But here is the part of it.

 I am getting "dlid" and "dqpn" of the remote end and initializing it here.

#define TLEM_SERVICE_LEVEL      0       /* TODO: Choose right QoS level */
#define TLEM_SOURCE_PATH_BITS   0       /* Offset from the source base LID */
#define TLEM_STATIC_RATE        4       /* 4x can transmit @ 10Gb/s */

                ... 
                ah_attr.dlid = dlid;
                ah_attr.sl = TLEM_SERVICE_LEVEL;
                ah_attr.src_path_bits = TLEM_SOURCE_PATH_BITS;
                ah_attr.static_rate = TLEM_STATIC_RATE;
                ah_attr.ah_flags = 0;
                ah_attr.port_num = tlem -> port; 
                if (IS_ERR(tlem -> address = ib_create_ah(tlem ->
                        hca_info -> pd, &ah_attr))) {
                        printk(KERN_ERR PFX "%s: Can't create address handle"
                               "ib_create_ah() returned %p", __func__,
                               tlem -> address);
                        ret = -1;
                }
                ...
                /* Describe the scatter/gather list */
                elem -> u.txwr.num_sge = n;
                elem -> u.txwr.sg_list = sglist;

                elem -> u.txwr.wr_id = (u64) elem;
                elem -> u.txwr.imm_data = 0;
                elem -> u.txwr.send_flags = IB_SEND_SIGNALED;
                elem -> u.txwr.wr.ud.ah = tlem -> address;
                elem -> u.txwr.wr.ud.remote_qpn = dqpn;
                elem -> u.txwr.wr.ud.remote_qkey = tlem -> qkey;

                if ((ret = ib_post_send (tlem -> qp, & elem -> u.txwr,
                        & bad_wr)) != 0)
                        printk (KERN_ERR "%s: ib_post_send failed: %d\n",
                                __func__, ret);
                else
                        printk (KERN_INFO "%s: ib_post_send okay!\n", __func__);

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20050927/be8e5140/attachment.html>


More information about the general mailing list