From: Zhu Yanjun Date: Thu, 6 Jan 2022 18:03:58 +0000 (-0500) Subject: RDMA/irdma: Make the source udp port vary X-Git-Tag: v5.17-rc1~89^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69e609ba96620aaca3c3bdcbaba5f8dee3b12f5f;p=thirdparty%2Fkernel%2Flinux.git RDMA/irdma: Make the source udp port vary Get the source udp port number for a QP based on the grh.flow_label or lqpn/rqrpn. This provides a better spread of traffic across NIC RX queues. Link: https://lore.kernel.org/r/20220106180359.2915060-4-yanjun.zhu@linux.dev Signed-off-by: Zhu Yanjun Reviewed-by: Leon Romanovsky Acked-by: Shiraz Saleem Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c index 456fed94b145c..460e757d3fe61 100644 --- a/drivers/infiniband/hw/irdma/verbs.c +++ b/drivers/infiniband/hw/irdma/verbs.c @@ -1171,6 +1171,10 @@ int irdma_modify_qp_roce(struct ib_qp *ibqp, struct ib_qp_attr *attr, udp_info->ttl = attr->ah_attr.grh.hop_limit; udp_info->flow_label = attr->ah_attr.grh.flow_label; udp_info->tos = attr->ah_attr.grh.traffic_class; + udp_info->src_port = + rdma_get_udp_sport(udp_info->flow_label, + ibqp->qp_num, + roce_info->dest_qp); irdma_qp_rem_qos(&iwqp->sc_qp); dev->ws_remove(iwqp->sc_qp.vsi, ctx_info->user_pri); ctx_info->user_pri = rt_tos2priority(udp_info->tos);