123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /*
- 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 at
- <http://www.fsf.org/copyleft/gpl.html>, or the OpenIB.org BSD
- license, available in the LICENSE.TXT file accompanying this
- software. These details are also available at
- <http://openib.org/license.html>.
-
- 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.
-
- Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved.
- */
-
- #ifndef __mad_attrib_h_
- #define __mad_attrib_h_
-
- #include "ib_mad.h"
-
- #define IB_SA_ATTR_MC_MEMBER_REC 0x38
- #define IB_SA_ATTR_PATH_REC 0x35
-
- #define IB_SA_MCMEMBER_REC_MGID (1<<0)
- #define IB_SA_MCMEMBER_REC_PORT_GID (1<<1)
- #define IB_SA_MCMEMBER_REC_QKEY (1<<2)
- #define IB_SA_MCMEMBER_REC_MLID (1<<3)
- #define IB_SA_MCMEMBER_REC_MTU_SELECTOR (1<<4)
- #define IB_SA_MCMEMBER_REC_MTU (1<<5)
- #define IB_SA_MCMEMBER_REC_TRAFFIC_CLASS (1<<6)
- #define IB_SA_MCMEMBER_REC_PKEY (1<<7)
- #define IB_SA_MCMEMBER_REC_RATE_SELECTOR (1<<8)
- #define IB_SA_MCMEMBER_REC_RATE (1<<9)
- #define IB_SA_MCMEMBER_REC_PACKET_LIFE_TIME_SELECTOR (1<<10)
- #define IB_SA_MCMEMBER_REC_PACKET_LIFE_TIME (1<<11)
- #define IB_SA_MCMEMBER_REC_SL (1<<12)
- #define IB_SA_MCMEMBER_REC_FLOW_LABEL (1<<13)
- #define IB_SA_MCMEMBER_REC_HOP_LIMIT (1<<14)
- #define IB_SA_MCMEMBER_REC_SCOPE (1<<15)
- #define IB_SA_MCMEMBER_REC_JOIN_STATE (1<<16)
- #define IB_SA_MCMEMBER_REC_PROXY_JOIN (1<<17)
-
- #define IB_SA_PATH_REC_DGID (1<<2)
- #define IB_SA_PATH_REC_SGID (1<<3)
-
- struct port_info_st {
- __u32 mkey[2];
- __u32 gid_prefix[2];
- __u16 mastersm_lid;
- __u16 lid;
- __u32 cap_mask;
- __u32 combined2;
- /*__u32 mkey_lease_period:16;
- __u32 diag_code:16;*/
- __u32 combined3;
- /*__u32 link_width_active:8;
- __u32 link_width_supported:8;
- __u32 link_width_enabled:8;
- __u32 local_port_num:8;*/
- __u32 combined4;
- /*__u32 link_speed_enabled:4;
- __u32 link_speed_active:4;
- __u32 lmc:3;
- __u32 r1:3;
- __u32 mkey_prot_bits:2;
- __u32 link_down_def_state:4;
- __u32 port_phys_state:4;
- __u32 port_state:4;
- __u32 link_speed_supported:4;*/
- __u32 combined5;
- /*__u32 vl_arb_hi_cap:8;
- __u32 vl_hi_limit:8;
- __u32 init_type:4;
- __u32 vl_cap:4;
- __u32 master_smsl:4;
- __u32 neigh_mtu:4;*/
- __u32 combined6;
- /*__u32 filt_raw_oub:1;
- __u32 filt_raw_inb:1;
- __u32 part_enf_oub:1;
- __u32 part_enf_inb:1;
- __u32 op_vls:4;
- __u32 hoq_life:5;
- __u32 vl_stall_count:3;
- __u32 mtu_cap:4;
- __u32 init_type_reply:4;
- __u32 vl_arb_lo_cap:8;*/
- __u32 combined7;
- /*__u32 pkey_viol:16;
- __u32 mkey_viol:16;*/
- __u32 combined8;
- /*__u32 subn_tout:5;
- __u32 r2:2;
- __u32 client_rereg:1;
- __u32 guid_cap:8;
- __u32 qkey_viol:16;*/
- __u32 combined9;
- /*__u32 max_cred_hint:16;
- __u32 overrun_err:4;
- __u32 local_phy_err:4;
- __u32 resp_t_val:5;
- __u32 r3:3;*/
- __u32 combined10;
- /*__u32 r4:8;
- __u32 link_rtrip_lat:24;*/
- } __attribute__ ((packed));
-
- struct port_info_mad_st {
- struct ib_mad_hdr_st mad_hdr;
- __u32 mkey[2];
- __u32 r1[8];
- struct port_info_st port_info;
- } __attribute__ ((packed));
-
- union port_info_mad_u {
- __u8 raw[256];
- struct port_info_mad_st mad;
- } __attribute__ ((packed));
-
- struct guid_info_st {
- union ib_gid_u gid_tbl[8];
- } __attribute__ ((packed));
-
- struct guid_info_mad_st {
- struct ib_mad_hdr_st mad_hdr;
- __u32 mkey[2];
- __u32 r1[8];
- struct guid_info_st guid_info;
- } __attribute__ ((packed));
-
- union guid_info_mad_u {
- __u8 raw[256];
- struct guid_info_mad_st mad;
- } __attribute__ ((packed));
-
- struct mc_member_st {
- __u8 mgid[16];
- __u8 port_gid[16];
- __u32 q_key;
- __u32 combined1;
- /*__u32 tclass:8;
- __u32 mtu:6;
- __u32 mtu_selector:2;
- __u32 mlid:16;*/
- __u32 combined2;
- /*__u32 packet_liftime:6;
- __u32 packet_liftime_selector:2;
- __u32 rate:6;
- __u32 rate_selector:2;
- __u32 pkey:16;*/
- __u32 combined3;
- /*__u32 hop_limit:8;
- __u32 flow_label:20;
- __u32 sl:4;*/
- __u32 combined4;
- /*__u32 r0:23;
- __u32 proxy_join:1;
- __u32 join_state:4;
- __u32 scope:4;*/
- } __attribute__ ((packed));
-
- struct mc_member_mad_st {
- struct ib_mad_hdr_st mad_hdr;
- struct rmpp_hdr_st rmpp_hdr;
- struct sa_header_st sa_hdr;
- struct mc_member_st mc_member;
- } __attribute__ ((packed));
-
- union mc_member_mad_u {
- struct mc_member_mad_st mc_member;
- __u8 raw[256];
- } __attribute__ ((packed));
-
- struct pkey_tbl_st {
- __u16 pkey_tbl[16][2];
- } __attribute__ ((packed));
-
- struct pkey_tbl_mad_st {
- struct ib_mad_hdr_st mad_hdr;
- __u32 mkey[2];
- __u32 r1[8];
- struct pkey_tbl_st pkey_tbl;
- } __attribute__ ((packed));
-
- union pkey_tbl_mad_u {
- struct pkey_tbl_mad_st mad;
- __u8 raw[256];
- } __attribute__ ((packed));
-
- struct path_record_st {
- __u32 r0[2];
- union ib_gid_u dgid;
- union ib_gid_u sgid;
- __u16 slid;
- __u16 dlid;
- __u32 combined1;
- /*__u32 hop_limit:8;
- __u32 flow_label:20;
- __u32 r1:3;
- __u32 raw_traffic:1;*/
- __u32 combined2;
- /*__u32 pkey:16;
- __u32 numb_path:7;
- __u32 reversible:1;
- __u32 tclass:8;*/
- __u32 combined3;
- /*__u32 rate:6;
- __u32 rate_selector:2;
- __u32 mtu:6;
- __u32 mtu_selector:2;
- __u32 sl:4;
- __u32 reserved:12;*/
- __u32 combined4;
- /*__u32 r2:16;
- __u32 preference:8;
- __u32 packet_lifetime:6;
- __u32 packet_lifetime_selector:2;*/
- __u32 r3;
- } __attribute__ ((packed));
-
- struct path_record_mad_st {
- struct ib_mad_hdr_st mad_hdr;
- struct rmpp_hdr_st rmpp_hdr;
- struct sa_header_st sa_hdr;
- struct path_record_st path_record;
- } __attribute__ ((packed));
-
- union path_record_mad_u {
- struct path_record_mad_st mad;
- __u8 raw[256];
- } __attribute__ ((packed));
-
- static int get_port_info(__u8 port, struct port_info_st *buf, __u16 * status);
- static int get_guid_info(__u16 * status);
- static int get_pkey_tbl(struct pkey_tbl_st *pkey_tbl, __u16 * status);
- static int join_mc_group(__u32 * qkey_p, __u16 * mlid_p, __u8 join);
-
- #endif /* __mad_attrib_h_ */
|