2005-07-27 22:45:43 +04:00
/*
* Copyright ( c ) 2005 Topspin Communications . All rights reserved .
2005-09-01 20:28:03 +04:00
* Copyright ( c ) 2005 Intel Corporation . All rights reserved .
2005-07-27 22:45:43 +04:00
*
* This software is available to you under a choice of one of two
* licenses . You may choose to be licensed under the terms of the GNU
* General Public License ( GPL ) Version 2 , available from the file
* COPYING in the main directory of this source tree , or the
* OpenIB . org BSD license below :
*
* Redistribution and use in source and binary forms , with or
* without modification , are permitted provided that the following
* conditions are met :
*
* - Redistributions of source code must retain the above
* copyright notice , this list of conditions and the following
* disclaimer .
*
* - Redistributions in binary form must reproduce the above
* copyright notice , this list of conditions and the following
* disclaimer in the documentation and / or other materials
* provided with the distribution .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND ,
* EXPRESS OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY , FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT . IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER LIABILITY , WHETHER IN AN
* ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM , OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE .
*/
# ifndef IB_USER_CM_H
# define IB_USER_CM_H
2006-06-18 07:37:27 +04:00
# include <rdma/ib_user_sa.h>
2005-07-27 22:45:43 +04:00
2006-11-29 01:57:13 +03:00
# define IB_USER_CM_ABI_VERSION 5
2005-07-27 22:45:43 +04:00
enum {
IB_USER_CM_CMD_CREATE_ID ,
IB_USER_CM_CMD_DESTROY_ID ,
IB_USER_CM_CMD_ATTR_ID ,
IB_USER_CM_CMD_LISTEN ,
2006-11-29 01:57:13 +03:00
IB_USER_CM_CMD_NOTIFY ,
2005-07-27 22:45:43 +04:00
IB_USER_CM_CMD_SEND_REQ ,
IB_USER_CM_CMD_SEND_REP ,
IB_USER_CM_CMD_SEND_RTU ,
IB_USER_CM_CMD_SEND_DREQ ,
IB_USER_CM_CMD_SEND_DREP ,
IB_USER_CM_CMD_SEND_REJ ,
IB_USER_CM_CMD_SEND_MRA ,
IB_USER_CM_CMD_SEND_LAP ,
IB_USER_CM_CMD_SEND_APR ,
IB_USER_CM_CMD_SEND_SIDR_REQ ,
IB_USER_CM_CMD_SEND_SIDR_REP ,
IB_USER_CM_CMD_EVENT ,
2005-09-01 20:28:03 +04:00
IB_USER_CM_CMD_INIT_QP_ATTR ,
2005-07-27 22:45:43 +04:00
} ;
/*
* command ABI structures .
*/
struct ib_ucm_cmd_hdr {
__u32 cmd ;
__u16 in ;
__u16 out ;
} ;
struct ib_ucm_create_id {
2005-09-01 20:28:03 +04:00
__u64 uid ;
2005-07-27 22:45:43 +04:00
__u64 response ;
} ;
struct ib_ucm_create_id_resp {
__u32 id ;
} ;
struct ib_ucm_destroy_id {
2005-09-01 20:28:03 +04:00
__u64 response ;
2005-07-27 22:45:43 +04:00
__u32 id ;
2005-11-02 00:18:54 +03:00
__u32 reserved ;
2005-07-27 22:45:43 +04:00
} ;
2005-09-01 20:28:03 +04:00
struct ib_ucm_destroy_id_resp {
__u32 events_reported ;
} ;
2005-07-27 22:45:43 +04:00
struct ib_ucm_attr_id {
__u64 response ;
__u32 id ;
2005-11-02 00:18:54 +03:00
__u32 reserved ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_attr_id_resp {
2005-08-14 08:05:57 +04:00
__be64 service_id ;
__be64 service_mask ;
__be32 local_id ;
__be32 remote_id ;
2005-07-27 22:45:43 +04:00
} ;
2005-09-01 20:28:03 +04:00
struct ib_ucm_init_qp_attr {
__u64 response ;
__u32 id ;
__u32 qp_state ;
} ;
2005-07-27 22:45:43 +04:00
struct ib_ucm_listen {
2005-08-14 08:05:57 +04:00
__be64 service_id ;
__be64 service_mask ;
2005-07-27 22:45:43 +04:00
__u32 id ;
2005-11-02 00:18:54 +03:00
__u32 reserved ;
2005-07-27 22:45:43 +04:00
} ;
2006-11-29 01:57:13 +03:00
struct ib_ucm_notify {
2005-07-27 22:45:43 +04:00
__u32 id ;
2006-11-29 01:57:13 +03:00
__u32 event ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_private_data {
__u64 data ;
__u32 id ;
__u8 len ;
__u8 reserved [ 3 ] ;
} ;
struct ib_ucm_req {
__u32 id ;
__u32 qpn ;
__u32 qp_type ;
__u32 psn ;
2005-08-14 08:05:57 +04:00
__be64 sid ;
2005-07-27 22:45:43 +04:00
__u64 data ;
__u64 primary_path ;
__u64 alternate_path ;
__u8 len ;
__u8 peer_to_peer ;
__u8 responder_resources ;
__u8 initiator_depth ;
__u8 remote_cm_response_timeout ;
__u8 flow_control ;
__u8 local_cm_response_timeout ;
__u8 retry_count ;
__u8 rnr_retry_count ;
__u8 max_cm_retries ;
__u8 srq ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 5 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_rep {
2005-09-01 20:28:03 +04:00
__u64 uid ;
2005-07-27 22:45:43 +04:00
__u64 data ;
__u32 id ;
__u32 qpn ;
__u32 psn ;
__u8 len ;
__u8 responder_resources ;
__u8 initiator_depth ;
__u8 target_ack_delay ;
__u8 failover_accepted ;
__u8 flow_control ;
__u8 rnr_retry_count ;
__u8 srq ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 4 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_info {
__u32 id ;
__u32 status ;
__u64 info ;
__u64 data ;
__u8 info_len ;
__u8 data_len ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 6 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_mra {
__u64 data ;
__u32 id ;
__u8 len ;
__u8 timeout ;
__u8 reserved [ 2 ] ;
} ;
struct ib_ucm_lap {
__u64 path ;
__u64 data ;
__u32 id ;
__u8 len ;
__u8 reserved [ 3 ] ;
} ;
struct ib_ucm_sidr_req {
__u32 id ;
__u32 timeout ;
2005-08-14 08:05:57 +04:00
__be64 sid ;
2005-07-27 22:45:43 +04:00
__u64 data ;
__u64 path ;
2006-06-18 07:37:39 +04:00
__u16 reserved_pkey ;
2005-07-27 22:45:43 +04:00
__u8 len ;
__u8 max_cm_retries ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 4 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_sidr_rep {
__u32 id ;
__u32 qpn ;
__u32 qkey ;
__u32 status ;
__u64 info ;
__u64 data ;
__u8 info_len ;
__u8 data_len ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 6 ] ;
2005-07-27 22:45:43 +04:00
} ;
/*
* event notification ABI structures .
*/
struct ib_ucm_event_get {
__u64 response ;
__u64 data ;
__u64 info ;
__u8 data_len ;
__u8 info_len ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 6 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_req_event_resp {
2006-06-18 07:37:27 +04:00
struct ib_user_path_rec primary_path ;
struct ib_user_path_rec alternate_path ;
2005-08-14 08:05:57 +04:00
__be64 remote_ca_guid ;
2005-07-27 22:45:43 +04:00
__u32 remote_qkey ;
__u32 remote_qpn ;
__u32 qp_type ;
__u32 starting_psn ;
__u8 responder_resources ;
__u8 initiator_depth ;
__u8 local_cm_response_timeout ;
__u8 flow_control ;
__u8 remote_cm_response_timeout ;
__u8 retry_count ;
__u8 rnr_retry_count ;
__u8 srq ;
2005-10-18 02:37:43 +04:00
__u8 port ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 7 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_rep_event_resp {
2005-08-14 08:05:57 +04:00
__be64 remote_ca_guid ;
2005-07-27 22:45:43 +04:00
__u32 remote_qkey ;
__u32 remote_qpn ;
__u32 starting_psn ;
__u8 responder_resources ;
__u8 initiator_depth ;
__u8 target_ack_delay ;
__u8 failover_accepted ;
__u8 flow_control ;
__u8 rnr_retry_count ;
__u8 srq ;
2005-11-02 00:18:54 +03:00
__u8 reserved [ 5 ] ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_rej_event_resp {
__u32 reason ;
/* ari in ib_ucm_event_get info field. */
} ;
struct ib_ucm_mra_event_resp {
__u8 timeout ;
__u8 reserved [ 3 ] ;
} ;
struct ib_ucm_lap_event_resp {
2006-06-18 07:37:27 +04:00
struct ib_user_path_rec path ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_apr_event_resp {
__u32 status ;
/* apr info in ib_ucm_event_get info field. */
} ;
struct ib_ucm_sidr_req_event_resp {
__u16 pkey ;
2005-10-18 02:37:43 +04:00
__u8 port ;
__u8 reserved ;
2005-07-27 22:45:43 +04:00
} ;
struct ib_ucm_sidr_rep_event_resp {
__u32 status ;
__u32 qkey ;
__u32 qpn ;
/* info in ib_ucm_event_get info field. */
} ;
# define IB_UCM_PRES_DATA 0x01
# define IB_UCM_PRES_INFO 0x02
# define IB_UCM_PRES_PRIMARY 0x04
# define IB_UCM_PRES_ALTERNATE 0x08
struct ib_ucm_event_resp {
2005-09-01 20:28:03 +04:00
__u64 uid ;
2005-07-27 22:45:43 +04:00
__u32 id ;
__u32 event ;
__u32 present ;
2005-11-02 00:18:54 +03:00
__u32 reserved ;
2005-07-27 22:45:43 +04:00
union {
struct ib_ucm_req_event_resp req_resp ;
struct ib_ucm_rep_event_resp rep_resp ;
struct ib_ucm_rej_event_resp rej_resp ;
struct ib_ucm_mra_event_resp mra_resp ;
struct ib_ucm_lap_event_resp lap_resp ;
struct ib_ucm_apr_event_resp apr_resp ;
struct ib_ucm_sidr_req_event_resp sidr_req_resp ;
struct ib_ucm_sidr_rep_event_resp sidr_rep_resp ;
__u32 send_status ;
} u ;
} ;
# endif /* IB_USER_CM_H */