From: Maor Gottlieb Date: Mon, 4 May 2020 05:19:32 +0000 (+0300) Subject: RDMA/core: Consider flow label when building skb X-Git-Tag: v5.15~3685^2~177 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9611d53aa1600ba94a36cd7bfd6a95dbae76c8e6;p=platform%2Fkernel%2Flinux-starfive.git RDMA/core: Consider flow label when building skb Use rdma_flow_label_to_udp_sport to calculate the UDP source port of the RoCEV2 packet. Link: https://lore.kernel.org/r/20200504051935.269708-3-leon@kernel.org Signed-off-by: Maor Gottlieb Signed-off-by: Leon Romanovsky Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/infiniband/core/lag.c b/drivers/infiniband/core/lag.c index a295336..7063e41 100644 --- a/drivers/infiniband/core/lag.c +++ b/drivers/infiniband/core/lag.c @@ -34,7 +34,8 @@ static struct sk_buff *rdma_build_skb(struct ib_device *device, skb_push(skb, sizeof(struct udphdr)); skb_reset_transport_header(skb); uh = udp_hdr(skb); - uh->source = htons(0xC000); + uh->source = + htons(rdma_flow_label_to_udp_sport(ah_attr->grh.flow_label)); uh->dest = htons(ROCE_V2_UDP_DPORT); uh->len = htons(sizeof(struct udphdr)); @@ -114,7 +115,8 @@ struct net_device *rdma_lag_get_ah_roce_slave(struct ib_device *device, struct net_device *master; if (!(ah_attr->type == RDMA_AH_ATTR_TYPE_ROCE && - ah_attr->grh.sgid_attr->gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP)) + ah_attr->grh.sgid_attr->gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP && + ah_attr->grh.flow_label)) return NULL; rcu_read_lock();