Message ID | 20220105221237.2659462-2-yanjun.zhu@linux.dev (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Generate UDP src port with flow label or lqpn/rqpn | expand |
On Wed, Jan 05, 2022 at 05:12:33PM -0500, yanjun.zhu@linux.dev wrote: > From: Zhu Yanjun <yanjun.zhu@linux.dev> > > Calculate and set UDP source port based on the flow label. If flow label > is not defined in GRH then calculate it based on lqpn/rqpn. > > Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> > --- > include/rdma/ib_verbs.h | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > Thanks, Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 6e9ad656ecb7..69d883f7fb41 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -4749,6 +4749,23 @@ static inline u32 rdma_calc_flow_label(u32 lqpn, u32 rqpn) return (u32)(v & IB_GRH_FLOWLABEL_MASK); } +/** + * rdma_get_udp_sport - Calculate and set UDP source port based on the flow + * label. If flow label is not defined in GRH then + * calculate it based on lqpn/rqpn. + * + * @fl: flow label from GRH + * @lqpn: local qp number + * @rqpn: remote qp number + */ +static inline u16 rdma_get_udp_sport(u32 fl, u32 lqpn, u32 rqpn) +{ + if (!fl) + fl = rdma_calc_flow_label(lqpn, rqpn); + + return rdma_flow_label_to_udp_sport(fl); +} + const struct ib_port_immutable* ib_port_immutable_read(struct ib_device *dev, unsigned int port); #endif /* IB_VERBS_H */