1/* 2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. 3 * All rights reserved 4 * www.brocade.com 5 * 6 * Linux driver for Brocade Fibre Channel Host Bus Adapter. 7 * 8 * This program is free software; you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License (GPL) Version 2 as 10 * published by the Free Software Foundation 11 * 12 * This program is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * General Public License for more details. 16 */ 17 18#ifndef __FDMI_H__ 19#define __FDMI_H__ 20 21#include <protocol/types.h> 22#include <protocol/fc.h> 23#include <protocol/ct.h> 24 25#pragma pack(1) 26 27/* 28 * FDMI Command Codes 29 */ 30#define FDMI_GRHL 0x0100 31#define FDMI_GHAT 0x0101 32#define FDMI_GRPL 0x0102 33#define FDMI_GPAT 0x0110 34#define FDMI_RHBA 0x0200 35#define FDMI_RHAT 0x0201 36#define FDMI_RPRT 0x0210 37#define FDMI_RPA 0x0211 38#define FDMI_DHBA 0x0300 39#define FDMI_DPRT 0x0310 40 41/* 42 * FDMI reason codes 43 */ 44#define FDMI_NO_ADDITIONAL_EXP 0x00 45#define FDMI_HBA_ALREADY_REG 0x10 46#define FDMI_HBA_ATTRIB_NOT_REG 0x11 47#define FDMI_HBA_ATTRIB_MULTIPLE 0x12 48#define FDMI_HBA_ATTRIB_LENGTH_INVALID 0x13 49#define FDMI_HBA_ATTRIB_NOT_PRESENT 0x14 50#define FDMI_PORT_ORIG_NOT_IN_LIST 0x15 51#define FDMI_PORT_HBA_NOT_IN_LIST 0x16 52#define FDMI_PORT_ATTRIB_NOT_REG 0x20 53#define FDMI_PORT_NOT_REG 0x21 54#define FDMI_PORT_ATTRIB_MULTIPLE 0x22 55#define FDMI_PORT_ATTRIB_LENGTH_INVALID 0x23 56#define FDMI_PORT_ALREADY_REGISTEREED 0x24 57 58/* 59 * FDMI Transmission Speed Mask values 60 */ 61#define FDMI_TRANS_SPEED_1G 0x00000001 62#define FDMI_TRANS_SPEED_2G 0x00000002 63#define FDMI_TRANS_SPEED_10G 0x00000004 64#define FDMI_TRANS_SPEED_4G 0x00000008 65#define FDMI_TRANS_SPEED_8G 0x00000010 66#define FDMI_TRANS_SPEED_16G 0x00000020 67#define FDMI_TRANS_SPEED_UNKNOWN 0x00008000 68 69/* 70 * FDMI HBA attribute types 71 */ 72enum fdmi_hba_attribute_type { 73 FDMI_HBA_ATTRIB_NODENAME = 1, /* 0x0001 */ 74 FDMI_HBA_ATTRIB_MANUFACTURER, /* 0x0002 */ 75 FDMI_HBA_ATTRIB_SERIALNUM, /* 0x0003 */ 76 FDMI_HBA_ATTRIB_MODEL, /* 0x0004 */ 77 FDMI_HBA_ATTRIB_MODEL_DESC, /* 0x0005 */ 78 FDMI_HBA_ATTRIB_HW_VERSION, /* 0x0006 */ 79 FDMI_HBA_ATTRIB_DRIVER_VERSION, /* 0x0007 */ 80 FDMI_HBA_ATTRIB_ROM_VERSION, /* 0x0008 */ 81 FDMI_HBA_ATTRIB_FW_VERSION, /* 0x0009 */ 82 FDMI_HBA_ATTRIB_OS_NAME, /* 0x000A */ 83 FDMI_HBA_ATTRIB_MAX_CT, /* 0x000B */ 84 85 FDMI_HBA_ATTRIB_MAX_TYPE 86}; 87 88/* 89 * FDMI Port attribute types 90 */ 91enum fdmi_port_attribute_type { 92 FDMI_PORT_ATTRIB_FC4_TYPES = 1, /* 0x0001 */ 93 FDMI_PORT_ATTRIB_SUPP_SPEED, /* 0x0002 */ 94 FDMI_PORT_ATTRIB_PORT_SPEED, /* 0x0003 */ 95 FDMI_PORT_ATTRIB_FRAME_SIZE, /* 0x0004 */ 96 FDMI_PORT_ATTRIB_DEV_NAME, /* 0x0005 */ 97 FDMI_PORT_ATTRIB_HOST_NAME, /* 0x0006 */ 98 99 FDMI_PORT_ATTR_MAX_TYPE 100}; 101 102/* 103 * FDMI attribute 104 */ 105struct fdmi_attr_s { 106 u16 type; 107 u16 len; 108 u8 value[1]; 109}; 110 111/* 112 * HBA Attribute Block 113 */ 114struct fdmi_hba_attr_s { 115 u32 attr_count; /* # of attributes */ 116 struct fdmi_attr_s hba_attr; /* n attributes */ 117}; 118 119/* 120 * Registered Port List 121 */ 122struct fdmi_port_list_s { 123 u32 num_ports; /* number Of Port Entries */ 124 wwn_t port_entry; /* one or more */ 125}; 126 127/* 128 * Port Attribute Block 129 */ 130struct fdmi_port_attr_s { 131 u32 attr_count; /* # of attributes */ 132 struct fdmi_attr_s port_attr; /* n attributes */ 133}; 134 135/* 136 * FDMI Register HBA Attributes 137 */ 138struct fdmi_rhba_s { 139 wwn_t hba_id; /* HBA Identifier */ 140 struct fdmi_port_list_s port_list; /* Registered Port List */ 141 struct fdmi_hba_attr_s hba_attr_blk; /* HBA attribute block */ 142}; 143 144/* 145 * FDMI Register Port 146 */ 147struct fdmi_rprt_s { 148 wwn_t hba_id; /* HBA Identifier */ 149 wwn_t port_name; /* Port wwn */ 150 struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */ 151}; 152 153/* 154 * FDMI Register Port Attributes 155 */ 156struct fdmi_rpa_s { 157 wwn_t port_name; /* port wwn */ 158 struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */ 159}; 160 161#pragma pack() 162 163#endif 164