xref: /freebsd/contrib/ofed/libibverbs/sa.h (revision 87181516ef48be852d5e5fee53c6e0dbfc62f21e)
1*d6b92ffaSHans Petter Selasky /*
2*d6b92ffaSHans Petter Selasky  * Copyright (c) 2004 Topspin Communications.  All rights reserved.
3*d6b92ffaSHans Petter Selasky  * Copyright (c) 2005 Voltaire, Inc. All rights reserved.
4*d6b92ffaSHans Petter Selasky  *
5*d6b92ffaSHans Petter Selasky  * This software is available to you under a choice of one of two
6*d6b92ffaSHans Petter Selasky  * licenses.  You may choose to be licensed under the terms of the GNU
7*d6b92ffaSHans Petter Selasky  * General Public License (GPL) Version 2, available from the file
8*d6b92ffaSHans Petter Selasky  * COPYING in the main directory of this source tree, or the
9*d6b92ffaSHans Petter Selasky  * OpenIB.org BSD license below:
10*d6b92ffaSHans Petter Selasky  *
11*d6b92ffaSHans Petter Selasky  *     Redistribution and use in source and binary forms, with or
12*d6b92ffaSHans Petter Selasky  *     without modification, are permitted provided that the following
13*d6b92ffaSHans Petter Selasky  *     conditions are met:
14*d6b92ffaSHans Petter Selasky  *
15*d6b92ffaSHans Petter Selasky  *      - Redistributions of source code must retain the above
16*d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
17*d6b92ffaSHans Petter Selasky  *        disclaimer.
18*d6b92ffaSHans Petter Selasky  *
19*d6b92ffaSHans Petter Selasky  *      - Redistributions in binary form must reproduce the above
20*d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
21*d6b92ffaSHans Petter Selasky  *        disclaimer in the documentation and/or other materials
22*d6b92ffaSHans Petter Selasky  *        provided with the distribution.
23*d6b92ffaSHans Petter Selasky  *
24*d6b92ffaSHans Petter Selasky  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25*d6b92ffaSHans Petter Selasky  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26*d6b92ffaSHans Petter Selasky  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27*d6b92ffaSHans Petter Selasky  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
28*d6b92ffaSHans Petter Selasky  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
29*d6b92ffaSHans Petter Selasky  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
30*d6b92ffaSHans Petter Selasky  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31*d6b92ffaSHans Petter Selasky  * SOFTWARE.
32*d6b92ffaSHans Petter Selasky  */
33*d6b92ffaSHans Petter Selasky 
34*d6b92ffaSHans Petter Selasky #ifndef INFINIBAND_SA_H
35*d6b92ffaSHans Petter Selasky #define INFINIBAND_SA_H
36*d6b92ffaSHans Petter Selasky 
37*d6b92ffaSHans Petter Selasky #include <infiniband/verbs.h>
38*d6b92ffaSHans Petter Selasky #include <infiniband/types.h>
39*d6b92ffaSHans Petter Selasky 
40*d6b92ffaSHans Petter Selasky struct ibv_sa_path_rec {
41*d6b92ffaSHans Petter Selasky 	/* reserved */
42*d6b92ffaSHans Petter Selasky 	/* reserved */
43*d6b92ffaSHans Petter Selasky 	union ibv_gid dgid;
44*d6b92ffaSHans Petter Selasky 	union ibv_gid sgid;
45*d6b92ffaSHans Petter Selasky 	__be16        dlid;
46*d6b92ffaSHans Petter Selasky 	__be16        slid;
47*d6b92ffaSHans Petter Selasky 	int           raw_traffic;
48*d6b92ffaSHans Petter Selasky 	/* reserved */
49*d6b92ffaSHans Petter Selasky 	__be32        flow_label;
50*d6b92ffaSHans Petter Selasky 	uint8_t       hop_limit;
51*d6b92ffaSHans Petter Selasky 	uint8_t       traffic_class;
52*d6b92ffaSHans Petter Selasky 	int           reversible;
53*d6b92ffaSHans Petter Selasky 	uint8_t       numb_path;
54*d6b92ffaSHans Petter Selasky 	__be16        pkey;
55*d6b92ffaSHans Petter Selasky 	/* reserved */
56*d6b92ffaSHans Petter Selasky 	uint8_t       sl;
57*d6b92ffaSHans Petter Selasky 	uint8_t       mtu_selector;
58*d6b92ffaSHans Petter Selasky 	uint8_t	      mtu;
59*d6b92ffaSHans Petter Selasky 	uint8_t       rate_selector;
60*d6b92ffaSHans Petter Selasky 	uint8_t       rate;
61*d6b92ffaSHans Petter Selasky 	uint8_t       packet_life_time_selector;
62*d6b92ffaSHans Petter Selasky 	uint8_t       packet_life_time;
63*d6b92ffaSHans Petter Selasky 	uint8_t       preference;
64*d6b92ffaSHans Petter Selasky };
65*d6b92ffaSHans Petter Selasky 
66*d6b92ffaSHans Petter Selasky struct ibv_sa_mcmember_rec {
67*d6b92ffaSHans Petter Selasky 	union ibv_gid mgid;
68*d6b92ffaSHans Petter Selasky 	union ibv_gid port_gid;
69*d6b92ffaSHans Petter Selasky 	uint32_t      qkey;
70*d6b92ffaSHans Petter Selasky 	uint16_t      mlid;
71*d6b92ffaSHans Petter Selasky 	uint8_t       mtu_selector;
72*d6b92ffaSHans Petter Selasky 	uint8_t       mtu;
73*d6b92ffaSHans Petter Selasky 	uint8_t       traffic_class;
74*d6b92ffaSHans Petter Selasky 	uint16_t      pkey;
75*d6b92ffaSHans Petter Selasky 	uint8_t       rate_selector;
76*d6b92ffaSHans Petter Selasky 	uint8_t       rate;
77*d6b92ffaSHans Petter Selasky 	uint8_t       packet_life_time_selector;
78*d6b92ffaSHans Petter Selasky 	uint8_t       packet_life_time;
79*d6b92ffaSHans Petter Selasky 	uint8_t       sl;
80*d6b92ffaSHans Petter Selasky 	uint32_t      flow_label;
81*d6b92ffaSHans Petter Selasky 	uint8_t       hop_limit;
82*d6b92ffaSHans Petter Selasky 	uint8_t       scope;
83*d6b92ffaSHans Petter Selasky 	uint8_t       join_state;
84*d6b92ffaSHans Petter Selasky 	int           proxy_join;
85*d6b92ffaSHans Petter Selasky };
86*d6b92ffaSHans Petter Selasky 
87*d6b92ffaSHans Petter Selasky struct ibv_sa_service_rec {
88*d6b92ffaSHans Petter Selasky 	uint64_t      id;
89*d6b92ffaSHans Petter Selasky 	union ibv_gid gid;
90*d6b92ffaSHans Petter Selasky 	uint16_t      pkey;
91*d6b92ffaSHans Petter Selasky 	/* uint16_t  resv;   */
92*d6b92ffaSHans Petter Selasky 	uint32_t      lease;
93*d6b92ffaSHans Petter Selasky 	uint8_t       key[16];
94*d6b92ffaSHans Petter Selasky 	uint8_t       name[64];
95*d6b92ffaSHans Petter Selasky 	uint8_t       data8[16];
96*d6b92ffaSHans Petter Selasky 	uint16_t      data16[8];
97*d6b92ffaSHans Petter Selasky 	uint32_t      data32[4];
98*d6b92ffaSHans Petter Selasky 	uint64_t      data64[2];
99*d6b92ffaSHans Petter Selasky };
100*d6b92ffaSHans Petter Selasky 
101*d6b92ffaSHans Petter Selasky #define IBV_PATH_RECORD_REVERSIBLE 0x80
102*d6b92ffaSHans Petter Selasky 
103*d6b92ffaSHans Petter Selasky struct ibv_path_record {
104*d6b92ffaSHans Petter Selasky 	__be64		service_id;
105*d6b92ffaSHans Petter Selasky 	union ibv_gid	dgid;
106*d6b92ffaSHans Petter Selasky 	union ibv_gid	sgid;
107*d6b92ffaSHans Petter Selasky 	__be16		dlid;
108*d6b92ffaSHans Petter Selasky 	__be16		slid;
109*d6b92ffaSHans Petter Selasky 	__be32		flowlabel_hoplimit; /* resv-31:28 flow label-27:8 hop limit-7:0*/
110*d6b92ffaSHans Petter Selasky 	uint8_t		tclass;
111*d6b92ffaSHans Petter Selasky 	uint8_t		reversible_numpath; /* reversible-7:7 num path-6:0 */
112*d6b92ffaSHans Petter Selasky 	__be16		pkey;
113*d6b92ffaSHans Petter Selasky 	__be16		qosclass_sl;	    /* qos class-15:4 sl-3:0 */
114*d6b92ffaSHans Petter Selasky 	uint8_t		mtu;		    /* mtu selector-7:6 mtu-5:0 */
115*d6b92ffaSHans Petter Selasky 	uint8_t		rate;		    /* rate selector-7:6 rate-5:0 */
116*d6b92ffaSHans Petter Selasky 	uint8_t		packetlifetime;	    /* lifetime selector-7:6 lifetime-5:0 */
117*d6b92ffaSHans Petter Selasky 	uint8_t		preference;
118*d6b92ffaSHans Petter Selasky 	uint8_t		reserved[6];
119*d6b92ffaSHans Petter Selasky };
120*d6b92ffaSHans Petter Selasky 
121*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_GMP	       (1<<0)
122*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_PRIMARY	       (1<<1)
123*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_ALTERNATE       (1<<2)
124*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_OUTBOUND	       (1<<3)
125*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_INBOUND	       (1<<4)
126*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_INBOUND_REVERSE (1<<5)
127*d6b92ffaSHans Petter Selasky #define IBV_PATH_FLAG_BIDIRECTIONAL   (IBV_PATH_FLAG_OUTBOUND |     \
128*d6b92ffaSHans Petter Selasky 					IBV_PATH_FLAG_INBOUND_REVERSE)
129*d6b92ffaSHans Petter Selasky 
130*d6b92ffaSHans Petter Selasky struct ibv_path_data {
131*d6b92ffaSHans Petter Selasky 	uint32_t		flags;
132*d6b92ffaSHans Petter Selasky 	uint32_t		reserved;
133*d6b92ffaSHans Petter Selasky 	struct ibv_path_record	path;
134*d6b92ffaSHans Petter Selasky };
135*d6b92ffaSHans Petter Selasky 
136*d6b92ffaSHans Petter Selasky #endif /* INFINIBAND_SA_H */
137