diff options
Diffstat (limited to 'drivers/infiniband/core/cm_msgs.h')
| -rw-r--r-- | drivers/infiniband/core/cm_msgs.h | 19 | 
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/infiniband/core/cm_msgs.h b/drivers/infiniband/core/cm_msgs.h index 3ade3202597..505db2a59e7 100644 --- a/drivers/infiniband/core/cm_msgs.h +++ b/drivers/infiniband/core/cm_msgs.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2004 Intel Corporation.  All rights reserved. + * Copyright (c) 2004, 2011 Intel Corporation.  All rights reserved.   * Copyright (c) 2004 Topspin Corporation.  All rights reserved.   * Copyright (c) 2004 Voltaire Corporation.  All rights reserved.   * @@ -538,6 +538,23 @@ static inline void cm_rep_set_local_qpn(struct cm_rep_msg *rep_msg, __be32 qpn)  			    (be32_to_cpu(rep_msg->offset12) & 0x000000FF));  } +static inline __be32 cm_rep_get_local_eecn(struct cm_rep_msg *rep_msg) +{ +	return cpu_to_be32(be32_to_cpu(rep_msg->offset16) >> 8); +} + +static inline void cm_rep_set_local_eecn(struct cm_rep_msg *rep_msg, __be32 eecn) +{ +	rep_msg->offset16 = cpu_to_be32((be32_to_cpu(eecn) << 8) | +			    (be32_to_cpu(rep_msg->offset16) & 0x000000FF)); +} + +static inline __be32 cm_rep_get_qpn(struct cm_rep_msg *rep_msg, enum ib_qp_type qp_type) +{ +	return (qp_type == IB_QPT_XRC_INI) ? +		cm_rep_get_local_eecn(rep_msg) : cm_rep_get_local_qpn(rep_msg); +} +  static inline __be32 cm_rep_get_starting_psn(struct cm_rep_msg *rep_msg)  {  	return cpu_to_be32(be32_to_cpu(rep_msg->offset20) >> 8);  |