b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * CDDL HEADER START
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * The contents of this file are subject to the terms of the
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Common Development and Distribution License (the "License").
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * You may not use this file except in compliance with the License.
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * or http://www.opensolaris.org/os/licensing.
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * See the License for the specific language governing permissions
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * and limitations under the License.
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * When distributing Covered Code, include this CDDL HEADER in each
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * If applicable, add the following below this CDDL HEADER, with the
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * fields enclosed by brackets "[]" replaced with your own identifying
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * information: Portions Copyright [yyyy] [name of copyright owner]
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * CDDL HEADER END
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#ifndef _SYS_IB_EOIB_FIP_H
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define _SYS_IB_EOIB_FIP_H
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#ifdef __cplusplus
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalanextern "C" {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#endif
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#include <sys/ethernet.h>
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#include <sys/ib/ib_types.h>
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Sizes of various objects in FIP headers
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VENDOR_LEN 8
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_GUID_LEN 8
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SYSNAME_LEN 32
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_PORTNAME_LEN 8
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_MGID_PREFIX_LEN 5
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VNIC_NAME_LEN 16
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VHUBID_LEN 3
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * EoIB Pkeys and Qkeys
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define EIB_ADMIN_PKEY 0xFFFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define EIB_FIP_QKEY 0x80020002
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define EIB_DATA_QKEY 0x80020003
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * EoIB Advertise and Solicit MCG GUIDs
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define EIB_GUID_ADVERTISE_PREFIX 0xFF12E01B00060000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define EIB_GUID_SOLICIT_PREFIX 0xFF12E01B00070000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_PROTO_VERSION 0
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_proto_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pr_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pr_reserved[3];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_proto_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Basic FIP Header: Opcodes and subcodes for EoIB
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_OPCODE_EOIB 0xFFF9
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_H_SOLICIT 0x1
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_G_ADVERTISE 0x2
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_H_VNIC_LOGIN 0x3
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_G_VNIC_LOGIN_ACK 0x4
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_H_VNIC_LOGOUT 0x5
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_G_VHUB_UPDATE 0x6
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_G_VHUB_TABLE 0x7
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_SUBCODE_H_KEEP_ALIVE 0x8
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Basic FIP Header: Flags relevant to EoIB
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_BHFLAG_GWAVAIL 0x4
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_BHFLAG_SLCTMSG 0x2
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_VENDOR_ID 13
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_VENDOR_ID 3
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_basic_hdr_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t hd_opcode;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t hd_reserved1;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t hd_subcode;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t hd_desc_list_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t hd_flags;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t hd_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t hd_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t hd_reserved2[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t hd_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_basic_hdr_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_IBA_QPN_MASK 0x00FFFFFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_IBA_PORTID_MASK 0x0FFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_IBA_SL_MASK 0xF000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_IBA_SL_SHIFT 12
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Infiniband_Address
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_IBA 240
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_IBA 7
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_iba_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ia_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ia_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ia_reserved[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ia_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t ia_qpn;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t ia_sl_portid;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t ia_lid;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ia_guid[FIP_GUID_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_iba_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP Solicitation Control Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Infiniband_Address
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_solicit_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t sl_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t sl_fip_hdr;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_iba_t sl_iba;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_solicit_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_EoIB_Gateway_Information
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_EOIB_GW_INFO 241
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_EOIB_GW_INFO 4
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_gwinfo_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t gi_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t gi_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t gi_reserved1[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t gi_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t gi_flags;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t gi_reserved2;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t gi_rss_qpn_num_net_vnics;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_gwinfo_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_GWI_HOST_ADMIND_VNICS_MASK 0x80
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_GWI_NUM_NET_VNICS_MASK 0x0FFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_GWI_RSS_QPN_MASK 0xF000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_GWI_RSS_QPN_SHIFT 12
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Gateway_Identifier
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_GW_ID 248
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_GW_ID 15
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_gwid_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_reserved[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_guid[FIP_GUID_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_sysname[FIP_SYSNAME_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t id_portname[FIP_PORTNAME_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_gwid_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Keep_Alive_Parameters
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_KEEP_ALIVE 249
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_KEEP_ALIVE 6
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_keepalive_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ka_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ka_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ka_reserved[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t ka_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t ka_gw_adv_period;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t ka_gw_ka_period;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t ka_vnic_ka_period;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_keepalive_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP Advertise Control Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Infiniband_Address
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_EoIB_Gateway_Information
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Gateway_Identifier
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Keep_Alive_Parameters
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_advertise_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t ad_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t ad_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_iba_t ad_iba;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_gwinfo_t ad_gwinfo;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_gwid_t ad_gwid;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_keepalive_t ad_keep_alive;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_advertise_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vNIC_Login
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_VNIC_LOGIN 242
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_VNIC_LOGIN 13
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_vnic_login_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_reserved1[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t vl_mtu;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t vl_vnic_id;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t vl_flags_vlan;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_mac[ETHERADDRL];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_gw_mgid_prefix[FIP_MGID_PREFIX_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_reserved2;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_flags_rss;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_n_mac_mcgid;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t vl_syndrome_ctl_qpn;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vl_vnic_name[FIP_VNIC_NAME_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_vnic_login_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Flags, masks and error codes for FIP_Descriptor_vNIC_Login
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_VNIC_ID_MSBIT 0x8000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_FLAGS_V 0x8000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_FLAGS_M 0x4000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_FLAGS_VP 0x2000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_FLAGS_H 0x1000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_VLAN_MASK 0x0FFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_RSS_MASK 0x10
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_N_RSS_MCGID_MASK 0x0F
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_N_MAC_MCGID_MASK 0x3F
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_CTL_QPN_MASK 0x00FFFFFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_MASK 0xFF000000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_SHIFT 24
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_SUCCESS 0
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_REJECTED 1
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_GW_NO_RESOURCE 2
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_NO_MORE_NWK_ADDRS 3
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_UNKNOWN_HOST 4
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VL_SYN_UNSUPP_PARAM 5
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Partition
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_PARTITION 246
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_PARTITION 4
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_partition_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pn_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pn_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pn_reserved1[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pn_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t pn_reserved2[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t pn_pkey;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_partition_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP Login Control Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Infiniband_Address
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vNIC_Login
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_login_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t lg_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t lg_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_iba_t lg_iba;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_vnic_login_t lg_vnic_login;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_login_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP Login ACK Control Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Infiniband_Address
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vNIC_Login
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_Partition
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_login_ack_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t ak_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t ak_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_iba_t ak_iba;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_vnic_login_t ak_vnic_login;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_partition_t ak_vhub_partition;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_login_ack_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vNIC_Identity
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_VNIC_IDENTITY 245
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_VNIC_IDENTITY 13
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_vnic_identity_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_reserved1[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t vi_flags_vhub_id;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t vi_tusn;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t vi_vnic_id;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_mac[ETHERADDRL];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_port_guid[FIP_GUID_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t vi_vnic_name[FIP_VNIC_NAME_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_vnic_identity_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VI_FLAG_U 0x80000000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VI_FLAG_R 0x40000000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VI_FLAG_VP 0x01000000
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP Keep Alive Control Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vNIC_Identity
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_keep_alive_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t ka_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t ka_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_vnic_identity_t ka_vnic_identity;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_keep_alive_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_vHUB_Table_Entry
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_vhub_table_entry_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t te_v_rss_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t te_reserved1;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t te_mac[ETHERADDRL];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t te_qpn;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t te_reserved2;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t te_sl;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t te_lid;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_vhub_table_entry_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_VALID 0x80
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_RSS 0x40
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_TYPE_MASK 0x0F
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_TYPE_VNIC 0x00
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_TYPE_GATEWAY 0x01
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_TYPE_UNICAST_MISS 0x02
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_TYPE_MULTICAST_ENTRY 0x03
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_TYPE_VHUB_MULTICAST 0x04
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_SL_MASK 0x0F
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TE_QPN_MASK 0x00FFFFFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VHUB_TABLE_ENTRY_SZ (sizeof (fip_vhub_table_entry_t))
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_VHUB_TABLE_ENTRY_WORDS (FIP_VHUB_TABLE_ENTRY_SZ >> 2)
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vHUB_Update
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_VHUB_UPDATE 243
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_LEN_VHUB_UPDATE 9
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_vhub_update_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t up_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t up_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t up_reserved1[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t up_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t up_eport_vp_vhub_id;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t up_tusn;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_vhub_table_entry_t up_tbl_entry;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_vhub_update_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_UP_VP_SHIFT 24
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_UP_VP_MASK 0x1
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_UP_EPORT_STATE_SHIFT 28
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_UP_EPORT_STATE_MASK 0x3
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_UP_VHUB_ID_MASK 0x00FFFFFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_EPORT_DOWN 0x0
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_EPORT_UP 0x1
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vHUB_Table
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_TYPE_VHUB_TABLE 244
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_desc_vhub_table_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t tb_type;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t tb_len;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t tb_reserved1[2];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t tb_vendor_id[FIP_VENDOR_LEN];
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t tb_flags_vhub_id;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint32_t tb_tusn;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t tb_hdr;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint8_t tb_reserved2;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan uint16_t tb_table_size;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan /*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_vHUB_Table_Entry
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_vHUB_Table_Entry
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * .
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * .
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * .
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * uint32_t Checksum
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_desc_vhub_table_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_FLAGS_VP_SHIFT 24
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_FLAGS_VP_MASK 0x1
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_VHUB_ID_MASK 0x00FFFFFF
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_HDR_MIDDLE 0x00
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_HDR_FIRST 0x40
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_HDR_LAST 0x80
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_TB_HDR_ONLY 0xC0
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_VHUB_TABLE_SZ (sizeof (fip_desc_vhub_table_t))
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#define FIP_DESC_VHUB_TABLE_WORDS (FIP_DESC_VHUB_TABLE_SZ >> 2)
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP vHUB Table Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vHUB_Table
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_vhub_table_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t vt_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t vt_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_vhub_table_t vt_vhub_table;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_vhub_table_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP vHUB Update Message:
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan *
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Protocol_Version
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Basic_Header
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * FIP_Descriptor_vHUB_Update
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_vhub_update_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t vu_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t vu_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_desc_vhub_update_t vu_vhub_update;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_vhub_update_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan/*
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * Just a generic container to handle either type of VHUB
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan * messages
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan */
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalantypedef struct fip_vhub_pkt_s {
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_proto_t hb_proto_version;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan fip_basic_hdr_t hb_fip_header;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan} fip_vhub_pkt_t;
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#ifdef __cplusplus
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan}
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#endif
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan
b494511a9cf72b1fc4eb13a0e593f55c624ab829Venki Rajagopalan#endif /* _SYS_IB_EOIB_FIP_H */