176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _GPXE_IB_MAD_H 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _GPXE_IB_MAD_H 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @file 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Infiniband management datagrams 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( GPL2_OR_LATER ); 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <stdint.h> 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <gpxe/ib_packet.h> 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/***************************************************************************** 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Subnet management MADs 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ***************************************************************************** 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A subnet management header 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in sections 14.2.1.1 and 14.2.1.2 of the IBA. 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_smp_hdr { 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint64_t mkey; 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t slid; 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t dlid; 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t reserved[28]; 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Subnet management class version */ 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_CLASS_VERSION 1 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Subnet management direction bit 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This bit resides in the "status" field in the MAD header. 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_STATUS_D_INBOUND 0x8000 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Subnet management attributes */ 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_NOTICE 0x0002 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_NODE_DESC 0x0010 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_NODE_INFO 0x0011 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_SWITCH_INFO 0x0012 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_GUID_INFO 0x0014 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_PORT_INFO 0x0015 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_PKEY_TABLE 0x0016 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_SL_TO_VL_TABLE 0x0017 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_VL_ARB_TABLE 0x0018 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_LINEAR_FORWARD_TABLE 0x0019 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_RANDOM_FORWARD_TABLE 0x001A 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_MCAST_FORWARD_TABLE 0x001B 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_SM_INFO 0x0020 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_VENDOR_DIAG 0x0030 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_LED_INFO 0x0031 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SMP_ATTR_VENDOR_MASK 0xFF00 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * A Node Description attribute 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 14.2.5.2 of the IBA 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_node_desc { 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman char node_string[64]; 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A Node Information attribute 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 14.2.5.3 of the IBA. 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_node_info { 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t base_version; 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t class_version; 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t node_type; 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t num_ports; 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid_half sys_guid; 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid_half node_guid; 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid_half port_guid; 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t partition_cap; 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t device_id; 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t revision; 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t local_port_num; 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t vendor_id[3]; 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ ((packed)); 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_NODE_TYPE_HCA 0x01 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_NODE_TYPE_SWITCH 0x02 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_NODE_TYPE_ROUTER 0x03 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A GUID Information attribute 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 14.2.5.5 of the IBA. 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_guid_info { 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t guid[8][8]; 9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A Port Information attribute 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 14.2.5.6 of the IBA. 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_port_info { 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint64_t mkey; 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t gid_prefix[8]; 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t lid; 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t mastersm_lid; 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t cap_mask; 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t diag_code; 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t mkey_lease_period; 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t local_port_num; 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t link_width_enabled; 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t link_width_supported; 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t link_width_active; 11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t link_speed_supported__port_state; 11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t port_phys_state__link_down_def_state; 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t mkey_prot_bits__lmc; 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t link_speed_active__link_speed_enabled; 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t neighbour_mtu__mastersm_sl; 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t vl_cap__init_type; 12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t vl_high_limit; 12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t vl_arbitration_high_cap; 12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t vl_arbitration_low_cap; 12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t init_type_reply__mtu_cap; 12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t vl_stall_count__hoq_life; 12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t operational_vls__enforcement; 12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t mkey_violations; 12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t pkey_violations; 13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t qkey_violations; 13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t guid_cap; 13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t client_reregister__subnet_timeout; 13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t resp_time_value; 13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t local_phy_errors__overrun_errors; 13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t max_credit_hint; 13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t link_round_trip_latency; 13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_WIDTH_1X 0x01 14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_WIDTH_4X 0x02 14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_WIDTH_8X 0x04 14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_WIDTH_12X 0x08 14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_SPEED_SDR 0x01 14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_SPEED_DDR 0x02 14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_LINK_SPEED_QDR 0x04 14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_PORT_STATE_DOWN 0x01 14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_PORT_STATE_INIT 0x02 15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_PORT_STATE_ARMED 0x03 15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_PORT_STATE_ACTIVE 0x04 15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_PORT_PHYS_STATE_SLEEP 0x01 15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_PORT_PHYS_STATE_POLLING 0x02 15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MTU_256 0x01 15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MTU_512 0x02 15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MTU_1024 0x03 15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MTU_2048 0x04 16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MTU_4096 0x05 16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_VL_0 0x01 16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_VL_0_1 0x02 16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_VL_0_3 0x03 16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_VL_0_7 0x04 16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_VL_0_14 0x05 16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A Partition Key Table attribute 16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 14.2.5.7 of the IBA. 17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_pkey_table { 17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t pkey[32]; 17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A subnet management attribute */ 17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunion ib_smp_data { 17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_node_desc node_desc; 17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_node_info node_info; 18076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_guid_info guid_info; 18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_port_info port_info; 18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_pkey_table pkey_table; 18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t bytes[64]; 18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A subnet management directed route path */ 18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_smp_dr_path { 18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t hops[64]; 18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 19176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Subnet management MAD class-specific data */ 19276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_smp_class_specific { 19376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t hop_pointer; 19476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t hop_count; 19576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 19676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 19776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/***************************************************************************** 19876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 19976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Subnet administration MADs 20076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 20176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ***************************************************************************** 20276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 20376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 20476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_CLASS_VERSION 2 20576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 20676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_METHOD_DELETE_RESP 0x95 20776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 20876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_rmpp_hdr { 20976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t raw[3]; 21076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 21176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 21276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_sa_hdr { 21376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t sm_key[2]; 21476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t reserved; 21576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t attrib_offset; 21676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t comp_mask[2]; 21776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 21876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 21976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_ATTR_MC_MEMBER_REC 0x38 22076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_ATTR_PATH_REC 0x35 22176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 22276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_path_record { 22376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t reserved0[2]; 22476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid dgid; 22576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid sgid; 22676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t dlid; 22776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t slid; 22876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t hop_limit__flow_label__raw_traffic; 22976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t pkey__numb_path__reversible__tclass; 23076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t reserved1; 23176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t reserved__sl; 23276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t mtu_selector__mtu; 23376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t rate_selector__rate; 23476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t preference__packet_lifetime__packet_lifetime_selector; 23576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t reserved2[35]; 23676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 23776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_PATH_REC_DGID (1<<2) 23976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_PATH_REC_SGID (1<<3) 24076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 24176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_mc_member_record { 24276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid mgid; 24376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid port_gid; 24476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t qkey; 24576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t mlid; 24676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t mtu_selector__mtu; 24776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t tclass; 24876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t pkey; 24976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t rate_selector__rate; 25076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t packet_lifetime_selector__packet_lifetime; 25176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t sl__flow_label__hop_limit; 25276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t scope__join_state; 25376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t proxy_join__reserved; 25476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t reserved0; 25576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t reserved1[37]; 25676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 25776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 25876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_MGID (1<<0) 25976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_PORT_GID (1<<1) 26076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_QKEY (1<<2) 26176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_MLID (1<<3) 26276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_MTU_SELECTOR (1<<4) 26376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_MTU (1<<5) 26476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_TRAFFIC_CLASS (1<<6) 26576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_PKEY (1<<7) 26676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_RATE_SELECTOR (1<<8) 26776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_RATE (1<<9) 26876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_PACKET_LIFE_TIME_SELECTOR (1<<10) 26976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_PACKET_LIFE_TIME (1<<11) 27076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_SL (1<<12) 27176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_FLOW_LABEL (1<<13) 27276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_HOP_LIMIT (1<<14) 27376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_SCOPE (1<<15) 27476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_JOIN_STATE (1<<16) 27576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_SA_MCMEMBER_REC_PROXY_JOIN (1<<17) 27676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 27776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunion ib_sa_data { 27876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_path_record path_record; 27976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mc_member_record mc_member_record; 28076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 28176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 28276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/***************************************************************************** 28376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 28476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Communication management MADs 28576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 28676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ***************************************************************************** 28776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 28876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 28976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Communication management class version */ 29076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_CLASS_VERSION 2 29176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 29276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Communication management attributes */ 29376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_CLASS_PORT_INFO 0x0001 29476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_CONNECT_REQUEST 0x0010 29576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_MSG_RCPT_ACK 0x0011 29676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_CONNECT_REJECT 0x0012 29776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_CONNECT_REPLY 0x0013 29876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_READY_TO_USE 0x0014 29976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_DISCONNECT_REQUEST 0x0015 30076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_DISCONNECT_REPLY 0x0016 30176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_SERVICE_ID_RES_REQ 0x0016 30276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_SERVICE_ID_RES_REQ_RESP 0x0018 30376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_LOAD_ALTERNATE_PATH 0x0019 30476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_ATTR_ALTERNATE_PATH_RESPONSE 0x001a 30576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 30676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Communication management common fields */ 30776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_cm_common { 30876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local communication ID */ 30976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_id; 31076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote communication ID */ 31176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t remote_id; 31276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Reserved */ 31376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t reserved[224]; 31476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 31576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 31676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management path */ 31776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_cm_path { 31876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local port LID */ 31976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t local_lid; 32076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote port LID */ 32176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t remote_lid; 32276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local port GID */ 32376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid local_gid; 32476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote port GID */ 32576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid remote_gid; 32676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Flow label and rate */ 32776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t flow_label__rate; 32876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Traffic class */ 32976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t tc; 33076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Hop limit */ 33176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t hop_limit; 33276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** SL and subnet local*/ 33376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t sl__subnet_local; 33476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local ACK timeout */ 33576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t local_ack_timeout; 33676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 33776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 33876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management connection request 33976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 34076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 12.6.5 of the IBA. 34176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 34276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_cm_connect_request { 34376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local communication ID */ 34476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_id; 34576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Reserved */ 34676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t reserved0[1]; 34776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Service ID */ 34876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid_half service_id; 34976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local CA GUID */ 35076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid_half local_ca; 35176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Reserved */ 35276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t reserved1[1]; 35376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local queue key */ 35476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_qkey; 35576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local QPN and responder resources*/ 35676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_qpn__responder_resources; 35776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local EECN and initiator depth */ 35876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_eecn__initiator_depth; 35976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote EECN, remote CM response timeout, transport service 36076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * type, EE flow control 36176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 36276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t remote_eecn__remote_timeout__service_type__ee_flow_ctrl; 36376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Starting PSN, local CM response timeout and retry count */ 36476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t starting_psn__local_timeout__retry_count; 36576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Partition key */ 36676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t pkey; 36776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Path packet payload MTU, RDC exists, RNR retry count */ 36876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t payload_mtu__rdc_exists__rnr_retry; 36976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Max CM retries and SRQ */ 37076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t max_cm_retries__srq; 37176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Primary path */ 37276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_path primary; 37376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Alternate path */ 37476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_path alternate; 37576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Private data */ 37676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t private_data[92]; 37776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 37876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 37976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** CM transport types */ 38076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_TRANSPORT_RC 0 38176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_TRANSPORT_UC 1 38276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_TRANSPORT_RD 2 38376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 38476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management connection rejection 38576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 38676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 12.6.7 of the IBA. 38776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 38876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_cm_connect_reject { 38976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local communication ID */ 39076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_id; 39176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote communication ID */ 39276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t remote_id; 39376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Message rejected */ 39476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t message; 39576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Reject information length */ 39676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t info_len; 39776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Rejection reason */ 39876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t reason; 39976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Additional rejection information */ 40076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t info[72]; 40176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Private data */ 40276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t private_data[148]; 40376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 40476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 40576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** CM rejection reasons */ 40676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_REJECT_BAD_SERVICE_ID 8 40776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_REJECT_STALE_CONN 10 40876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_CM_REJECT_CONSUMER 28 40976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 41076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management connection reply 41176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 41276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 12.6.8 of the IBA. 41376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 41476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_cm_connect_reply { 41576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local communication ID */ 41676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_id; 41776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote communication ID */ 41876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t remote_id; 41976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local queue key */ 42076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_qkey; 42176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local QPN */ 42276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_qpn; 42376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local EECN */ 42476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_eecn; 42576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Starting PSN */ 42676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t starting_psn; 42776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Responder resources */ 42876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t responder_resources; 42976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Initiator depth */ 43076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t initiator_depth; 43176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Target ACK delay, failover accepted, and end-to-end flow control */ 43276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t target_ack_delay__failover_accepted__ee_flow_ctrl; 43376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** RNR retry count, SRQ */ 43476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t rnr_retry__srq; 43576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local CA GUID */ 43676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_gid_half local_ca; 43776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Private data */ 43876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t private_data[196]; 43976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 44076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 44176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management ready to use reply 44276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 44376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 12.6.9 of the IBA. 44476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 44576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_cm_ready_to_use { 44676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Local communication ID */ 44776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t local_id; 44876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Remote communication ID */ 44976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t remote_id; 45076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Private data */ 45176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t private_data[224]; 45276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 45376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 45476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management attribute */ 45576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunion ib_cm_data { 45676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_common common; 45776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_connect_request connect_request; 45876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_connect_reject connect_reject; 45976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_connect_reply connect_reply; 46076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_cm_ready_to_use ready_to_use; 46176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t bytes[232]; 46276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 46376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 46476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/***************************************************************************** 46576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 46676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * MADs 46776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 46876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ***************************************************************************** 46976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 47076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 47176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Management datagram class_specific data */ 47276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunion ib_mad_class_specific { 47376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t raw; 47476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_smp_class_specific smp; 47576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 47676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 47776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A management datagram common header 47876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 47976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Defined in section 13.4.2 of the IBA. 48076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 48176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_mad_hdr { 48276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t base_version; 48376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t mgmt_class; 48476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t class_version; 48576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t method; 48676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t status; 48776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman union ib_mad_class_specific class_specific; 48876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t tid[2]; 48976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t attr_id; 49076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t reserved[2]; 49176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint32_t attr_mod; 49276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 49376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 49476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Management base version */ 49576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_BASE_VERSION 1 49676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 49776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Management classes */ 49876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_SUBN_LID_ROUTED 0x01 49976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE 0x81 50076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_SUBN_ADM 0x03 50176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_PERF_MGMT 0x04 50276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_BM 0x05 50376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_DEVICE_MGMT 0x06 50476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_CM 0x07 50576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_SNMP 0x08 50676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_VENDOR_RANGE2_START 0x30 50776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_VENDOR_RANGE2_END 0x4f 50876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 50976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_CLASS_MASK 0x7f 51076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 51176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Management methods */ 51276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_GET 0x01 51376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_SET 0x02 51476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_GET_RESP 0x81 51576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_SEND 0x03 51676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_TRAP 0x05 51776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_REPORT 0x06 51876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_REPORT_RESP 0x86 51976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_TRAP_REPRESS 0x07 52076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_METHOD_DELETE 0x15 52176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 52276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Status codes */ 52376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_STATUS_OK 0x0000 52476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_STATUS_BAD_VERSION 0x0001 52576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_STATUS_UNSUPPORTED_METHOD 0x0002 52676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_STATUS_UNSUPPORTED_METHOD_ATTR 0x0003 52776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IB_MGMT_STATUS_INVALID_VALUE 0x0004 52876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 52976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A subnet management MAD */ 53076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_mad_smp { 53176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_hdr mad_hdr; 53276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_smp_hdr smp_hdr; 53376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman union ib_smp_data smp_data; 53476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_smp_dr_path initial_path; 53576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_smp_dr_path return_path; 53676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 53776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 53876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A subnet administration MAD */ 53976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_mad_sa { 54076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_hdr mad_hdr; 54176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_rmpp_hdr rmpp_hdr; 54276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_sa_hdr sa_hdr; 54376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman union ib_sa_data sa_data; 54476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 54576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 54676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A communication management MAD */ 54776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ib_mad_cm { 54876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_hdr mad_hdr; 54976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman union ib_cm_data cm_data; 55076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 55176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 55276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** A management datagram */ 55376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunion ib_mad { 55476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_hdr hdr; 55576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_smp smp; 55676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_sa sa; 55776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct ib_mad_cm cm; 55876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t bytes[256]; 55976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ (( packed )); 56076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 56176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* _GPXE_IB_MAD_H */ 562