#ifndef _SYS_IB_EOIB_EIB_H
#define _SYS_IB_EOIB_EIB_H
#ifdef __cplusplus
extern "C" {
#endif
#define EIB_ENCAP_HDR_SZ 4
#define EIB_ENCAP_SIGN_MASK 0x3
#define EIB_ENCAP_SIGN_SHIFT 30
#define EIB_ENCAP_VER_MASK 0x3
#define EIB_ENCAP_VER_SHIFT 28
#define EIB_ENCAP_TCPCHK_MASK 0x3
#define EIB_ENCAP_TCPCHK_SHIFT 26
#define EIB_ENCAP_IPCHK_MASK 0x3
#define EIB_ENCAP_IPCHK_SHIFT 24
#define EIB_ENCAP_FCS_B_SHIFT 22
#define EIB_ENCAP_MS_B_SHIFT 21
#define EIB_ENCAP_SEGOFF_MASK 0x1F
#define EIB_ENCAP_SEGOFF_SHIFT 16
#define EIB_ENCAP_SEGID_MASK 0xFFFF
#define EIB_EH_SIGNATURE 3
#define EIB_EH_VERSION 0
#define EIB_EH_CSUM_UNKNOWN 0
#define EIB_EH_TCPCSUM_OK 1
#define EIB_EH_UDPCSUM_OK 2
#define EIB_EH_CSUM_BAD 3
#define EIB_EH_IPCSUM_OK 1
#define EIB_TX_ENCAP_HDR 0xC0000000
#define EIB_RX_ENCAP_TCPIP_OK 0xC5000000
#define EIB_RX_ENCAP_UDPIP_OK 0xC9000000
#define EIB_DRV_NAME "eoib"
#define EIB_DVI_SHIFT 6
#define EIB_DVI_MASK 0x1FF
#define EIB_VNI_MASK 0x03F
#define EIB_VNIC_INSTANCE(id) ((id) & EIB_VNI_MASK)
#define EIB_DEVI_INSTANCE(id) (((id) >> EIB_DVI_SHIFT) & EIB_DVI_MASK)
#define EIB_VNIC_ID(dvi, vni) \
((((dvi) & EIB_DVI_MASK) << EIB_DVI_SHIFT) | ((vni) & EIB_VNI_MASK))
#define EIB_VHUB_ID(portid, vlan) \
((((uint_t)(portid) & 0xfff) << 12) | ((uint_t)(vlan) & 0xfff))
#define EIB_NDI_EVENT_GW_AVAILABLE "SUNW,eoib:gateway-available"
#define EIB_NDI_EVENT_LOGIN_ACK "SUNW,eoib:vnic-login-ack"
#define EIB_NDI_EVENT_GW_INFO_UPDATE "SUNW,eoib:gateway-info-update"
#define EIB_PROP_HCA_GUID "hca-guid"
#define EIB_PROP_HCA_PORTNUM "hca-port#"
#define EIB_PROP_GW_SYS_GUID "gw-system-guid"
#define EIB_PROP_GW_GUID "gw-guid"
#define EIB_PROP_GW_SN_PREFIX "gw-sn-prefix"
#define EIB_PROP_GW_ADV_PERIOD "gw-adv-period"
#define EIB_PROP_GW_KA_PERIOD "gw-ka-period"
#define EIB_PROP_VNIC_KA_PERIOD "vnic-ka-period"
#define EIB_PROP_GW_CTRL_QPN "gw-ctrl-qpn"
#define EIB_PROP_GW_LID "gw-lid"
#define EIB_PROP_GW_PORTID "gw-portid"
#define EIB_PROP_GW_NUM_NET_VNICS "gw-num-net-vnics"
#define EIB_PROP_GW_AVAILABLE "gw-available?"
#define EIB_PROP_GW_HOST_VNICS "gw-host-vnics?"
#define EIB_PROP_GW_SL "gw-sl"
#define EIB_PROP_GW_N_RSS_QPN "gw-n-rss-qpn"
#define EIB_PROP_GW_SYS_NAME "gw-system-name"
#define EIB_PROP_GW_PORT_NAME "gw-port-name"
#define EIB_PROP_GW_VENDOR_ID "gw-vendor-id"
#define EIB_GW_SYSNAME_LEN 40
#define EIB_GW_PORTNAME_LEN 12
#define EIB_GW_VENDOR_LEN 12
typedef struct eib_gw_info_s {
ib_guid_t gi_system_guid;
ib_guid_t gi_guid;
ib_sn_prefix_t gi_sn_prefix;
uint32_t gi_adv_period;
uint32_t gi_ka_period;
uint32_t gi_vnic_ka_period;
ib_qpn_t gi_ctrl_qpn;
ib_lid_t gi_lid;
uint16_t gi_portid;
uint16_t gi_num_net_vnics;
uint8_t gi_flag_available;
uint8_t gi_is_host_adm_vnics;
uint8_t gi_sl;
uint8_t gi_n_rss_qpn;
uint8_t gi_system_name[EIB_GW_SYSNAME_LEN];
uint8_t gi_port_name[EIB_GW_PORTNAME_LEN];
uint8_t gi_vendor_id[EIB_GW_VENDOR_LEN];
} eib_gw_info_t;
#define EIB_SOFTPRI_DATA (DDI_INTR_SOFTPRI_MIN)
#define EIB_SOFTPRI_CTL (DDI_INTR_SOFTPRI_MIN + 1)
#define EIB_SOFTPRI_ADM (DDI_INTR_SOFTPRI_MIN + 1)
#ifdef __cplusplus
}
#endif
#endif