mlx4: Fix vlan insertion order
Subsystems (2)
PATCH 1/1 mlx4: Fix vlan insertion order
We must update the control segment before marking it as valid.
--- drivers/infiniband/hw/mlx4/qp.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/infiniband/hw/mlx4/qp.c +3 -3
@@ -1953,14 +1953,14 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, goto out; } - ctrl->owner_opcode = mlx4_ib_opcode[wr->opcode] | - (ind & qp->sq.wqe_cnt ?cpu_to_be32 (1 <<31 ) :0 ) | blh; -if (be16_to_cpu (vlan) <0x1000 ) { ctrl->ins_vlan =1 <<6 ; ctrl->vlan_tag = vlan; } + ctrl->owner_opcode = mlx4_ib_opcode[wr->opcode] | + (ind & qp->sq.wqe_cnt ?cpu_to_be32 (1 <<31 ) :0 ) | blh; + stamp = ind + qp->sq_spare_wqes; ind +=DIV_ROUND_UP (size *16 ,1U << qp->sq.wqe_shift);
Signature · 6 lines
1.7.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
I think we actually want the vlan control bits set before the wmb() there. I applied the following patch:
drivers/infiniband/hw/mlx4/qp.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
drivers/infiniband/hw/mlx4/qp.c +5 -5
@@ -1816,6 +1816,11 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, ctrl->fence_size = (wr->send_flags &IB_SEND_FENCE ?MLX4_WQE_CTRL_FENCE :0 ) | size; +if (be16_to_cpu (vlan) <0x1000 ) { + ctrl->ins_vlan =1 <<6 ; + ctrl->vlan_tag = vlan; + } +/* * Make sure descriptor is fully written before * setting ownership bit (because HW can start
@@ -1831,11 +1836,6 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, ctrl->owner_opcode = mlx4_ib_opcode[wr->opcode] | (ind & qp->sq.wqe_cnt ?cpu_to_be32 (1 <<31 ) :0 ) | blh; -if (be16_to_cpu (vlan) <0x1000 ) { - ctrl->ins_vlan =1 <<6 ; - ctrl->vlan_tag = vlan; - } - stamp = ind + qp->sq_spare_wqes; ind +=DIV_ROUND_UP (size *16 ,1U << qp->sq.wqe_shift);
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 3 lines · Roland Dreier
I think we actually want the vlan control bits set before the
wmb()there. I applied the following patch:
Sure, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html