/* * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. * All rights reserved * www.brocade.com * * Linux driver for Brocade Fibre Channel Host Bus Adapter. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) Version 2 as * published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ #ifndef __FDMI_H__ #define __FDMI_H__ #include #include #include #pragma pack(1) /* * FDMI Command Codes */ #define FDMI_GRHL 0x0100 #define FDMI_GHAT 0x0101 #define FDMI_GRPL 0x0102 #define FDMI_GPAT 0x0110 #define FDMI_RHBA 0x0200 #define FDMI_RHAT 0x0201 #define FDMI_RPRT 0x0210 #define FDMI_RPA 0x0211 #define FDMI_DHBA 0x0300 #define FDMI_DPRT 0x0310 /* * FDMI reason codes */ #define FDMI_NO_ADDITIONAL_EXP 0x00 #define FDMI_HBA_ALREADY_REG 0x10 #define FDMI_HBA_ATTRIB_NOT_REG 0x11 #define FDMI_HBA_ATTRIB_MULTIPLE 0x12 #define FDMI_HBA_ATTRIB_LENGTH_INVALID 0x13 #define FDMI_HBA_ATTRIB_NOT_PRESENT 0x14 #define FDMI_PORT_ORIG_NOT_IN_LIST 0x15 #define FDMI_PORT_HBA_NOT_IN_LIST 0x16 #define FDMI_PORT_ATTRIB_NOT_REG 0x20 #define FDMI_PORT_NOT_REG 0x21 #define FDMI_PORT_ATTRIB_MULTIPLE 0x22 #define FDMI_PORT_ATTRIB_LENGTH_INVALID 0x23 #define FDMI_PORT_ALREADY_REGISTEREED 0x24 /* * FDMI Transmission Speed Mask values */ #define FDMI_TRANS_SPEED_1G 0x00000001 #define FDMI_TRANS_SPEED_2G 0x00000002 #define FDMI_TRANS_SPEED_10G 0x00000004 #define FDMI_TRANS_SPEED_4G 0x00000008 #define FDMI_TRANS_SPEED_8G 0x00000010 #define FDMI_TRANS_SPEED_16G 0x00000020 #define FDMI_TRANS_SPEED_UNKNOWN 0x00008000 /* * FDMI HBA attribute types */ enum fdmi_hba_attribute_type { FDMI_HBA_ATTRIB_NODENAME = 1, /* 0x0001 */ FDMI_HBA_ATTRIB_MANUFACTURER, /* 0x0002 */ FDMI_HBA_ATTRIB_SERIALNUM, /* 0x0003 */ FDMI_HBA_ATTRIB_MODEL, /* 0x0004 */ FDMI_HBA_ATTRIB_MODEL_DESC, /* 0x0005 */ FDMI_HBA_ATTRIB_HW_VERSION, /* 0x0006 */ FDMI_HBA_ATTRIB_DRIVER_VERSION, /* 0x0007 */ FDMI_HBA_ATTRIB_ROM_VERSION, /* 0x0008 */ FDMI_HBA_ATTRIB_FW_VERSION, /* 0x0009 */ FDMI_HBA_ATTRIB_OS_NAME, /* 0x000A */ FDMI_HBA_ATTRIB_MAX_CT, /* 0x000B */ FDMI_HBA_ATTRIB_MAX_TYPE }; /* * FDMI Port attribute types */ enum fdmi_port_attribute_type { FDMI_PORT_ATTRIB_FC4_TYPES = 1, /* 0x0001 */ FDMI_PORT_ATTRIB_SUPP_SPEED, /* 0x0002 */ FDMI_PORT_ATTRIB_PORT_SPEED, /* 0x0003 */ FDMI_PORT_ATTRIB_FRAME_SIZE, /* 0x0004 */ FDMI_PORT_ATTRIB_DEV_NAME, /* 0x0005 */ FDMI_PORT_ATTRIB_HOST_NAME, /* 0x0006 */ FDMI_PORT_ATTR_MAX_TYPE }; /* * FDMI attribute */ struct fdmi_attr_s { u16 type; u16 len; u8 value[1]; }; /* * HBA Attribute Block */ struct fdmi_hba_attr_s { u32 attr_count; /* # of attributes */ struct fdmi_attr_s hba_attr; /* n attributes */ }; /* * Registered Port List */ struct fdmi_port_list_s { u32 num_ports; /* number Of Port Entries */ wwn_t port_entry; /* one or more */ }; /* * Port Attribute Block */ struct fdmi_port_attr_s { u32 attr_count; /* # of attributes */ struct fdmi_attr_s port_attr; /* n attributes */ }; /* * FDMI Register HBA Attributes */ struct fdmi_rhba_s { wwn_t hba_id; /* HBA Identifier */ struct fdmi_port_list_s port_list; /* Registered Port List */ struct fdmi_hba_attr_s hba_attr_blk; /* HBA attribute block */ }; /* * FDMI Register Port */ struct fdmi_rprt_s { wwn_t hba_id; /* HBA Identifier */ wwn_t port_name; /* Port wwn */ struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */ }; /* * FDMI Register Port Attributes */ struct fdmi_rpa_s { wwn_t port_name; /* port wwn */ struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */ }; #pragma pack() #endif