Message ID | 1478770261-5775-2-git-send-email-leon@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Thu, Nov 10, 2016 at 11:30 AM, Leon Romanovsky wrote: > Set traffic class within sl_tclass_flowlabel when create iboe AH. > Without this the TOS value will be empty when running VLAN tagged > traffic, because the TOS value is taken from the traffic class in the > address handle attributes. How is the IP TOS field modeled in RoCE V2 spec and/or the upstream rdma stack? E.g in RoCE V1 the 802.1q vlan priority is derived from the SL. > Fixes: 9106c4106974 ('IB/mlx4: Fix SL to 802.1Q priority-bits mapping for IBoE') This commit was when the upstream kernel didn't support Routable RoCE and hence the IP TOS value was irrelevant. Hence, I don't see why claiming to fix it, please explain what you find wrong in that commit. Also when you fix someone commit, the usual habit is to cc him/her on the fix so they can have a chance to comment, how you expected people to review your fixes to their commits if you don't give them heads-up? -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/infiniband/hw/mlx4/ah.c b/drivers/infiniband/hw/mlx4/ah.c index 5fc6233..6be7dc3 100644 --- a/drivers/infiniband/hw/mlx4/ah.c +++ b/drivers/infiniband/hw/mlx4/ah.c @@ -111,7 +111,9 @@ static struct ib_ah *create_iboe_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr !(1 << ah->av.eth.stat_rate & dev->caps.stat_rate_support)) --ah->av.eth.stat_rate; } - + ah->av.eth.sl_tclass_flowlabel |= + cpu_to_be32((ah_attr->grh.traffic_class << 20) | + ah_attr->grh.flow_label); /* * HW requires multicast LID so we just choose one. */ @@ -119,7 +121,7 @@ static struct ib_ah *create_iboe_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr ah->av.ib.dlid = cpu_to_be16(0xc000); memcpy(ah->av.eth.dgid, ah_attr->grh.dgid.raw, 16); - ah->av.eth.sl_tclass_flowlabel = cpu_to_be32(ah_attr->sl << 29); + ah->av.eth.sl_tclass_flowlabel |= cpu_to_be32(ah_attr->sl << 29); return &ah->ibah; }