RDMA/core: Calculate UDP source port based on flow label or lqpn/rqpn
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. Link: https://lore.kernel.org/r/20220106180359.2915060-2-yanjun.zhu@linux.dev Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
4d2a3c169b
commit
18451db82e
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue