[ofa-general] Re: [PATCH 1 of 2] mlx4: implement query-qp

Jack Morgenstein jackm at dev.mellanox.co.il
Sun Jul 15 00:28:23 PDT 2007


On Friday 13 July 2007 01:39, Roland Dreier wrote:
> thanks, applied
> 
Need 2 fixes to this patch (sorry about that).
- Jack

2 fixes for mlx4-query-qp.patch:
1. Flow label field is 20 bits, not 24 bits.  Need appropriate mask.
2. When the QP is in the INIT state, the sched_queue field is not yet available
   in the firmware, so the f/w cannot provide the port number in query_qp.  In this
   case, need to use the port number which was saved in the kernel qp object.

Found by Dotan Barak and Yaron Gepstein of Mellanox.
Signed-off-by: Jack Morgenstein <jackm at dev.mellanox.co.il>

--- kernel_patches/fixes/mlx4-query-qp.patch	2007-07-15 10:04:02.678561000 +0300
+++ kernel_patches/fixes/mlx4-query-qp.patch	2007-07-15 10:07:13.883508000 +0300
@@ -102,7 +101,7 @@ Index: new_connectx_kernel/drivers/infin
 +		ib_ah_attr->grh.traffic_class =
 +			(be32_to_cpu(path->tclass_flowlabel) >> 20) & 0xff;
 +		ib_ah_attr->grh.flow_label =
-+			be32_to_cpu(path->tclass_flowlabel) & 0xffffff;
++			be32_to_cpu(path->tclass_flowlabel) & 0xfffff;
 +		memcpy(ib_ah_attr->grh.dgid.raw,
 +			path->rgid, sizeof ib_ah_attr->grh.dgid.raw);
 +	}
@@ -147,7 +146,10 @@ Index: new_connectx_kernel/drivers/infin
 +	}
 +
 +	qp_attr->pkey_index = context.pri_path.pkey_index & 0x7f;
-+	qp_attr->port_num   = context.pri_path.sched_queue & 0x40 ? 2 : 1;
++	if (qp_attr->qp_state == IB_QPS_INIT)
++		qp_attr->port_num = qp->port;
++	else
++		qp_attr->port_num = context.pri_path.sched_queue & 0x40 ? 2 : 1;
 +
 +	/* qp_attr->en_sqd_async_notify is only applicable in modify qp */
 +	qp_attr->sq_draining = mlx4_state == MLX4_QP_STATE_SQ_DRAINING;



More information about the general mailing list