<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7232.36">
<TITLE>RE: [openib-general] Local QP operation err while sending packet over UD transport</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>
<P><FONT SIZE=2> VBabu> Thanks for your quick response.<BR>
<BR>
I'm not sure if it matters, but firmware version 5.0.1 is old -- you<BR>
might want to upgrade to 5.1.0.<BR>
<BR>
VBabu > I will check with the vendor and findout how to upgrade the firmware.<BR>
<BR>
Also, are you using the IB drivers<BR>
shipped with kernel 2.6.13.1, or have you updated to the OpenIB<BR>
subversion code? There were several bugfixes to the mem-free support<BR>
since 2.6.13 was released.<BR>
<BR>
VBabu> Currently I am just using the IB drivers shipped with kernel 2.6.13.1. I will<BR>
also try to upgrade IB drivers to the latest OpenIB subversion code.<BR>
<BR>
Per the IB spec, the opcode field is not valid if the status is not<BR>
success, so there's no point in looking at that -- it's just an<BR>
uninitialized memory location. Also, the current driver doesn't set<BR>
the vendor_err field, so that's not useful either.<BR>
<BR>
VBabu> Then I will ignore opcode and vendor_err fields.<BR>
<BR>
Perhaps someone from Mellanox can decode the undocumented fields of<BR>
this CQE.<BR>
<BR>
VBabu> I will contact Mellanox FAE to decode these fields.<BR>
<BR>
One possibility that comes to mind is that you are not creating your<BR>
UD address handle correctly. I think that could possibly cause the<BR>
error you're seeing.<BR>
<BR>
Can you post the code you're getting this error with?<BR>
<BR>
VBabu> I am not sure I can post the whole code. But here is the part of it.<BR>
<BR>
I am getting "dlid" and "dqpn" of the remote end and initializing it here.<BR>
<BR>
#define TLEM_SERVICE_LEVEL 0 /* TODO: Choose right QoS level */<BR>
#define TLEM_SOURCE_PATH_BITS 0 /* Offset from the source base LID */<BR>
#define TLEM_STATIC_RATE 4 /* 4x can transmit @ 10Gb/s */<BR>
<BR>
...<BR>
ah_attr.dlid = dlid;<BR>
ah_attr.sl = TLEM_SERVICE_LEVEL;<BR>
ah_attr.src_path_bits = TLEM_SOURCE_PATH_BITS;<BR>
ah_attr.static_rate = TLEM_STATIC_RATE;<BR>
ah_attr.ah_flags = 0;<BR>
ah_attr.port_num = tlem -> port;<BR>
if (IS_ERR(tlem -> address = ib_create_ah(tlem -><BR>
hca_info -> pd, &ah_attr))) {<BR>
printk(KERN_ERR PFX "%s: Can't create address handle"<BR>
"ib_create_ah() returned %p", __func__,<BR>
tlem -> address);<BR>
ret = -1;<BR>
}<BR>
...<BR>
/* Describe the scatter/gather list */<BR>
elem -> u.txwr.num_sge = n;<BR>
elem -> u.txwr.sg_list = sglist;<BR>
<BR>
elem -> u.txwr.wr_id = (u64) elem;<BR>
elem -> u.txwr.imm_data = 0;<BR>
elem -> u.txwr.send_flags = IB_SEND_SIGNALED;<BR>
elem -> u.txwr.wr.ud.ah = tlem -> address;<BR>
elem -> u.txwr.wr.ud.remote_qpn = dqpn;<BR>
elem -> u.txwr.wr.ud.remote_qkey = tlem -> qkey;<BR>
<BR>
if ((ret = ib_post_send (tlem -> qp, & elem -> u.txwr,<BR>
& bad_wr)) != 0)<BR>
printk (KERN_ERR "%s: ib_post_send failed: %d\n",<BR>
__func__, ret);<BR>
else<BR>
printk (KERN_INFO "%s: ib_post_send okay!\n", __func__);<BR>
<BR>
</FONT>
</P>
</BODY>
</HTML>