1*9517SBill.Taylor@Sun.COM /* 2*9517SBill.Taylor@Sun.COM * CDDL HEADER START 3*9517SBill.Taylor@Sun.COM * 4*9517SBill.Taylor@Sun.COM * The contents of this file are subject to the terms of the 5*9517SBill.Taylor@Sun.COM * Common Development and Distribution License (the "License"). 6*9517SBill.Taylor@Sun.COM * You may not use this file except in compliance with the License. 7*9517SBill.Taylor@Sun.COM * 8*9517SBill.Taylor@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*9517SBill.Taylor@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*9517SBill.Taylor@Sun.COM * See the License for the specific language governing permissions 11*9517SBill.Taylor@Sun.COM * and limitations under the License. 12*9517SBill.Taylor@Sun.COM * 13*9517SBill.Taylor@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*9517SBill.Taylor@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*9517SBill.Taylor@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*9517SBill.Taylor@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*9517SBill.Taylor@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*9517SBill.Taylor@Sun.COM * 19*9517SBill.Taylor@Sun.COM * CDDL HEADER END 20*9517SBill.Taylor@Sun.COM */ 21*9517SBill.Taylor@Sun.COM 22*9517SBill.Taylor@Sun.COM /* 23*9517SBill.Taylor@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*9517SBill.Taylor@Sun.COM * Use is subject to license terms. 25*9517SBill.Taylor@Sun.COM */ 26*9517SBill.Taylor@Sun.COM 27*9517SBill.Taylor@Sun.COM #ifndef _SYS_IB_ADAPTERS_HERMON_IOCTL_H 28*9517SBill.Taylor@Sun.COM #define _SYS_IB_ADAPTERS_HERMON_IOCTL_H 29*9517SBill.Taylor@Sun.COM 30*9517SBill.Taylor@Sun.COM #include <sys/cred.h> 31*9517SBill.Taylor@Sun.COM 32*9517SBill.Taylor@Sun.COM /* 33*9517SBill.Taylor@Sun.COM * hermon_ioctl.h 34*9517SBill.Taylor@Sun.COM * Contains all of the prototypes, #defines, and structures necessary 35*9517SBill.Taylor@Sun.COM * for all ioctl access into the driver. This includes everything 36*9517SBill.Taylor@Sun.COM * necessary for updating firmware, accessing the hermon flash device, 37*9517SBill.Taylor@Sun.COM * providing interfaces for VTS. 38*9517SBill.Taylor@Sun.COM */ 39*9517SBill.Taylor@Sun.COM 40*9517SBill.Taylor@Sun.COM #ifdef __cplusplus 41*9517SBill.Taylor@Sun.COM extern "C" { 42*9517SBill.Taylor@Sun.COM #endif 43*9517SBill.Taylor@Sun.COM 44*9517SBill.Taylor@Sun.COM int hermon_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, 45*9517SBill.Taylor@Sun.COM int *rvalp); 46*9517SBill.Taylor@Sun.COM 47*9517SBill.Taylor@Sun.COM /* 48*9517SBill.Taylor@Sun.COM * Enumerated type for the Hermon ioctl() interface types 49*9517SBill.Taylor@Sun.COM */ 50*9517SBill.Taylor@Sun.COM /* 51*9517SBill.Taylor@Sun.COM * originally, to make a unique set of IOCTLs but now share the actual 52*9517SBill.Taylor@Sun.COM * value w/ tavor & arbel (memfree) to make VTS consistent & simpler 53*9517SBill.Taylor@Sun.COM * 54*9517SBill.Taylor@Sun.COM * #define HERMON_IOCTL ('h' << 8) 55*9517SBill.Taylor@Sun.COM */ 56*9517SBill.Taylor@Sun.COM #define HERMON_IOCTL ('t' << 8) 57*9517SBill.Taylor@Sun.COM 58*9517SBill.Taylor@Sun.COM #ifdef DEBUG 59*9517SBill.Taylor@Sun.COM typedef enum { 60*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_READ = HERMON_IOCTL | 0x00, 61*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_WRITE = HERMON_IOCTL | 0x01, 62*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_ERASE = HERMON_IOCTL | 0x02, 63*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_INIT = HERMON_IOCTL | 0x03, 64*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_FINI = HERMON_IOCTL | 0x04, 65*9517SBill.Taylor@Sun.COM HERMON_IOCTL_REG_WRITE = HERMON_IOCTL | 0x10, 66*9517SBill.Taylor@Sun.COM HERMON_IOCTL_REG_READ = HERMON_IOCTL | 0x11, 67*9517SBill.Taylor@Sun.COM HERMON_IOCTL_LOOPBACK = HERMON_IOCTL | 0x20, 68*9517SBill.Taylor@Sun.COM HERMON_IOCTL_INFO = HERMON_IOCTL | 0x21, 69*9517SBill.Taylor@Sun.COM HERMON_IOCTL_PORTS = HERMON_IOCTL | 0x22, 70*9517SBill.Taylor@Sun.COM HERMON_IOCTL_DDR_READ = HERMON_IOCTL | 0x23, 71*9517SBill.Taylor@Sun.COM HERMON_IOCTL_WRITE_BOOT_ADDR = HERMON_IOCTL | 0x24 72*9517SBill.Taylor@Sun.COM } hermon_ioctl_enum_t; 73*9517SBill.Taylor@Sun.COM #else 74*9517SBill.Taylor@Sun.COM typedef enum { 75*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_READ = HERMON_IOCTL | 0x00, 76*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_WRITE = HERMON_IOCTL | 0x01, 77*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_ERASE = HERMON_IOCTL | 0x02, 78*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_INIT = HERMON_IOCTL | 0x03, 79*9517SBill.Taylor@Sun.COM HERMON_IOCTL_FLASH_FINI = HERMON_IOCTL | 0x04, 80*9517SBill.Taylor@Sun.COM HERMON_IOCTL_LOOPBACK = HERMON_IOCTL | 0x20, 81*9517SBill.Taylor@Sun.COM HERMON_IOCTL_INFO = HERMON_IOCTL | 0x21, 82*9517SBill.Taylor@Sun.COM HERMON_IOCTL_PORTS = HERMON_IOCTL | 0x22, 83*9517SBill.Taylor@Sun.COM HERMON_IOCTL_DDR_READ = HERMON_IOCTL | 0x23, 84*9517SBill.Taylor@Sun.COM HERMON_IOCTL_WRITE_BOOT_ADDR = HERMON_IOCTL | 0x24 85*9517SBill.Taylor@Sun.COM } hermon_ioctl_enum_t; 86*9517SBill.Taylor@Sun.COM #endif /* DEBUG */ 87*9517SBill.Taylor@Sun.COM 88*9517SBill.Taylor@Sun.COM /* 89*9517SBill.Taylor@Sun.COM * Specific operations for each of the flash ioctl interfaces 90*9517SBill.Taylor@Sun.COM */ 91*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_READ_SECTOR 0x01 92*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_READ_QUADLET 0x02 93*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_WRITE_SECTOR 0x01 94*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_WRITE_BYTE 0x02 95*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_ERASE_SECTOR 0x01 96*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_ERASE_CHIP 0x02 97*9517SBill.Taylor@Sun.COM 98*9517SBill.Taylor@Sun.COM /* 99*9517SBill.Taylor@Sun.COM * Default values for the flash (overridden by CFI info, if available) 100*9517SBill.Taylor@Sun.COM */ 101*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_SECTOR_SZ_DEFAULT 0x10000 102*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_DEVICE_SZ_DEFAULT 0x400000 103*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_SPI_LOG_SECTOR_SIZE 0x10 104*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_SPI_SECTOR_SIZE 0x10000 105*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_SPI_DEVICE_SIZE 0x200000 106*9517SBill.Taylor@Sun.COM 107*9517SBill.Taylor@Sun.COM /* 108*9517SBill.Taylor@Sun.COM * CFI (Common Flash Interface) initialization 109*9517SBill.Taylor@Sun.COM */ 110*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_CFI_INIT 0x98 111*9517SBill.Taylor@Sun.COM 112*9517SBill.Taylor@Sun.COM /* For compatability */ 113*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_CFI_SIZE 0x4C 114*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_CFI_SIZE_QUADLET HERMON_FLASH_CFI_SIZE >> 2 115*9517SBill.Taylor@Sun.COM 116*9517SBill.Taylor@Sun.COM /* 117*9517SBill.Taylor@Sun.COM * Expand CFI data size to support the Intel Expanded Command Set. 118*9517SBill.Taylor@Sun.COM */ 119*9517SBill.Taylor@Sun.COM #define HERMON_CFI_INFO_SIZE 0x100 120*9517SBill.Taylor@Sun.COM #define HERMON_CFI_INFO_QSIZE HERMON_CFI_INFO_SIZE >> 2 121*9517SBill.Taylor@Sun.COM 122*9517SBill.Taylor@Sun.COM /* 123*9517SBill.Taylor@Sun.COM * Mellanox uses two different parallel Flash devices for Hermon 124*9517SBill.Taylor@Sun.COM * HCAs: the AMD AM29LV033C and the Intel 28F320J3C. The AM29LV033C 125*9517SBill.Taylor@Sun.COM * utilizes the AMD Standard CFI command set while the 28F320J3C 126*9517SBill.Taylor@Sun.COM * utliizes the Intel Extended CFI command set. Additionally, serial 127*9517SBill.Taylor@Sun.COM * SPI flash is supported, such as the STMicroelectronics M25Pxx family 128*9517SBill.Taylor@Sun.COM * of SPI Flash parts. 129*9517SBill.Taylor@Sun.COM */ 130*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_INTEL_CMDSET 0x0001 131*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_AMD_CMDSET 0x0002 132*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_SPI_CMDSET 0x0003 133*9517SBill.Taylor@Sun.COM #define HERMON_FLASH_UNKNOWN_CMDSET 0XFFFF 134*9517SBill.Taylor@Sun.COM 135*9517SBill.Taylor@Sun.COM /* 136*9517SBill.Taylor@Sun.COM * The firmware version structure used in HERMON_IOCTL_INFO and 137*9517SBill.Taylor@Sun.COM * HERMON_IOCTL_FLASH_INIT interfaces. The structure consists of major, 138*9517SBill.Taylor@Sun.COM * minor and subminor portions for firmware revision number. 139*9517SBill.Taylor@Sun.COM */ 140*9517SBill.Taylor@Sun.COM typedef struct hermon_fw_info_ioctl_s { 141*9517SBill.Taylor@Sun.COM uint32_t afi_maj; 142*9517SBill.Taylor@Sun.COM uint32_t afi_min; 143*9517SBill.Taylor@Sun.COM uint32_t afi_sub; 144*9517SBill.Taylor@Sun.COM } hermon_fw_info_ioctl_t; 145*9517SBill.Taylor@Sun.COM 146*9517SBill.Taylor@Sun.COM /* 147*9517SBill.Taylor@Sun.COM * structure used for read, write, and erase flash routines 148*9517SBill.Taylor@Sun.COM * Supported fields for each type: 149*9517SBill.Taylor@Sun.COM * read_sector: af_type, af_sector, af_sector_num 150*9517SBill.Taylor@Sun.COM * read_quadlet: af_type, af_addr, af_quadlet 151*9517SBill.Taylor@Sun.COM * write_sector: af_type, af_sector, af_sector_num 152*9517SBill.Taylor@Sun.COM * write_byte: af_type, af_addr, af_byte 153*9517SBill.Taylor@Sun.COM * erase_sector: af_type, af_sector_num 154*9517SBill.Taylor@Sun.COM * erase_chip: af_type 155*9517SBill.Taylor@Sun.COM * 156*9517SBill.Taylor@Sun.COM * The 'tf_sector' field must point to a sector sized portion of memory, as 157*9517SBill.Taylor@Sun.COM * all sector read/write ioctl calls are done as one complete sector only. 158*9517SBill.Taylor@Sun.COM */ 159*9517SBill.Taylor@Sun.COM typedef struct hermon_flash_ioctl_s { 160*9517SBill.Taylor@Sun.COM uint32_t af_type; 161*9517SBill.Taylor@Sun.COM caddr_t af_sector; 162*9517SBill.Taylor@Sun.COM uint32_t af_sector_num; 163*9517SBill.Taylor@Sun.COM uint32_t af_addr; 164*9517SBill.Taylor@Sun.COM uint32_t af_quadlet; 165*9517SBill.Taylor@Sun.COM uint8_t af_byte; 166*9517SBill.Taylor@Sun.COM } hermon_flash_ioctl_t; 167*9517SBill.Taylor@Sun.COM 168*9517SBill.Taylor@Sun.COM /* Structure used for flash init interface */ 169*9517SBill.Taylor@Sun.COM typedef struct hermon_flash_init_ioctl_s { 170*9517SBill.Taylor@Sun.COM uint32_t af_hwrev; 171*9517SBill.Taylor@Sun.COM hermon_fw_info_ioctl_t af_fwrev; 172*9517SBill.Taylor@Sun.COM uint32_t af_cfi_info[HERMON_FLASH_CFI_SIZE_QUADLET]; 173*9517SBill.Taylor@Sun.COM char af_hwpn[64]; 174*9517SBill.Taylor@Sun.COM int af_pn_len; 175*9517SBill.Taylor@Sun.COM } hermon_flash_init_ioctl_t; 176*9517SBill.Taylor@Sun.COM 177*9517SBill.Taylor@Sun.COM /* 178*9517SBill.Taylor@Sun.COM * The structure used for Hermon register read/write interface. 179*9517SBill.Taylor@Sun.COM * The "trg_reg_set" field indicates the register set (the BAR) from which 180*9517SBill.Taylor@Sun.COM * the access is desired (HERMON_CMD_BAR, HERMON_UAR_BAR, or HERMON_DDR_BAR). 181*9517SBill.Taylor@Sun.COM * The "trg_offset" and "trg_data" fields indicate the register and either 182*9517SBill.Taylor@Sun.COM * the destination or source of the data to be read/written. 183*9517SBill.Taylor@Sun.COM */ 184*9517SBill.Taylor@Sun.COM typedef struct hermon_reg_ioctl_s { 185*9517SBill.Taylor@Sun.COM uint_t arg_reg_set; 186*9517SBill.Taylor@Sun.COM uint_t arg_offset; 187*9517SBill.Taylor@Sun.COM uint32_t arg_data; 188*9517SBill.Taylor@Sun.COM } hermon_reg_ioctl_t; 189*9517SBill.Taylor@Sun.COM 190*9517SBill.Taylor@Sun.COM 191*9517SBill.Taylor@Sun.COM /* 192*9517SBill.Taylor@Sun.COM * Hermon VTS IOCTL revision number. This revision number is currently 193*9517SBill.Taylor@Sun.COM * expected to be passed in all Hermon VTS ioctl interfaces. 194*9517SBill.Taylor@Sun.COM */ 195*9517SBill.Taylor@Sun.COM #define HERMON_VTS_IOCTL_REVISION 1 196*9517SBill.Taylor@Sun.COM 197*9517SBill.Taylor@Sun.COM /* 198*9517SBill.Taylor@Sun.COM * The port structure used in HERMON_IOCTL_PORTS interface. 199*9517SBill.Taylor@Sun.COM * Each port has an associated guid, port number, and IBA-defined 200*9517SBill.Taylor@Sun.COM * logical port state. 201*9517SBill.Taylor@Sun.COM */ 202*9517SBill.Taylor@Sun.COM typedef struct hermon_stat_port_ioctl_s { 203*9517SBill.Taylor@Sun.COM uint64_t asp_guid; 204*9517SBill.Taylor@Sun.COM uint32_t asp_port_num; 205*9517SBill.Taylor@Sun.COM uint32_t asp_state; 206*9517SBill.Taylor@Sun.COM } hermon_stat_port_ioctl_t; 207*9517SBill.Taylor@Sun.COM 208*9517SBill.Taylor@Sun.COM /* 209*9517SBill.Taylor@Sun.COM * The structure used for the HERMON_IOCTL_PORTS interface. 210*9517SBill.Taylor@Sun.COM * The number of ports and a buffer large enough for 256 211*9517SBill.Taylor@Sun.COM * port structures will be supplied by the caller. The 212*9517SBill.Taylor@Sun.COM * revision should be set to HERMON_VTS_IOCTL_REVISION. The 213*9517SBill.Taylor@Sun.COM * number of ports ("tp_num_ports") is always returned, 214*9517SBill.Taylor@Sun.COM * regardless of success or failure otherwise. 215*9517SBill.Taylor@Sun.COM */ 216*9517SBill.Taylor@Sun.COM typedef struct hermon_ports_ioctl_s { 217*9517SBill.Taylor@Sun.COM uint_t ap_revision; 218*9517SBill.Taylor@Sun.COM hermon_stat_port_ioctl_t *ap_ports; 219*9517SBill.Taylor@Sun.COM uint8_t ap_num_ports; 220*9517SBill.Taylor@Sun.COM } hermon_ports_ioctl_t; 221*9517SBill.Taylor@Sun.COM 222*9517SBill.Taylor@Sun.COM /* 223*9517SBill.Taylor@Sun.COM * These are the status codes that can be returned by the 224*9517SBill.Taylor@Sun.COM * HERMON_IOCTL_LOOPBACK test. They are returned as part of 225*9517SBill.Taylor@Sun.COM * the hermon_loopback_ioctl_t struct (below). 226*9517SBill.Taylor@Sun.COM */ 227*9517SBill.Taylor@Sun.COM typedef enum { 228*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_SUCCESS, 229*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_INVALID_REVISION, 230*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_INVALID_PORT, 231*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_PROT_DOMAIN_ALLOC_FAIL, 232*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_SEND_BUF_INVALID, 233*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_SEND_BUF_MEM_REGION_ALLOC_FAIL, 234*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_SEND_BUF_COPY_FAIL, 235*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_BUF_MEM_REGION_ALLOC_FAIL, 236*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_XMIT_SEND_CQ_ALLOC_FAIL, 237*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_XMIT_RECV_CQ_ALLOC_FAIL, 238*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_XMIT_QP_ALLOC_FAIL, 239*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_SEND_CQ_ALLOC_FAIL, 240*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_RECV_CQ_ALLOC_FAIL, 241*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_QP_ALLOC_FAIL, 242*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_XMIT_QP_INIT_FAIL, 243*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_XMIT_QP_RTR_FAIL, 244*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_XMIT_QP_RTS_FAIL, 245*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_QP_INIT_FAIL, 246*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_QP_RTR_FAIL, 247*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_RECV_QP_RTS_FAIL, 248*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_WQE_POST_FAIL, 249*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_CQ_POLL_FAIL, 250*9517SBill.Taylor@Sun.COM HERMON_LOOPBACK_SEND_RECV_COMPARE_FAIL 251*9517SBill.Taylor@Sun.COM } hermon_loopback_error_t; 252*9517SBill.Taylor@Sun.COM 253*9517SBill.Taylor@Sun.COM /* 254*9517SBill.Taylor@Sun.COM * The structure used for HERMON_IOCTL_LOOPBACK interface. 255*9517SBill.Taylor@Sun.COM * It defines the port number, number of iterations, wait duration, 256*9517SBill.Taylor@Sun.COM * number of retries and the data pattern to be sent. Upon return, 257*9517SBill.Taylor@Sun.COM * the driver will supply the number of iterations succesfully 258*9517SBill.Taylor@Sun.COM * completed, and the kind of failure (if any, along with the failing 259*9517SBill.Taylor@Sun.COM * data pattern). 260*9517SBill.Taylor@Sun.COM */ 261*9517SBill.Taylor@Sun.COM typedef struct hermon_loopback_ioctl_s { 262*9517SBill.Taylor@Sun.COM uint_t alb_revision; 263*9517SBill.Taylor@Sun.COM caddr_t alb_send_buf; 264*9517SBill.Taylor@Sun.COM caddr_t alb_fail_buf; 265*9517SBill.Taylor@Sun.COM uint_t alb_buf_sz; 266*9517SBill.Taylor@Sun.COM uint_t alb_num_iter; 267*9517SBill.Taylor@Sun.COM uint_t alb_pass_done; 268*9517SBill.Taylor@Sun.COM uint_t alb_timeout; 269*9517SBill.Taylor@Sun.COM hermon_loopback_error_t alb_error_type; 270*9517SBill.Taylor@Sun.COM uint8_t alb_port_num; 271*9517SBill.Taylor@Sun.COM uint8_t alb_num_retry; 272*9517SBill.Taylor@Sun.COM } hermon_loopback_ioctl_t; 273*9517SBill.Taylor@Sun.COM 274*9517SBill.Taylor@Sun.COM /* 275*9517SBill.Taylor@Sun.COM * The structure used for the HERMON_IOCTL_INFO interface. It 276*9517SBill.Taylor@Sun.COM * includes firmware version, hardware version, accessable 277*9517SBill.Taylor@Sun.COM * range of adapter DDR memory, and adapter flash memory size. 278*9517SBill.Taylor@Sun.COM */ 279*9517SBill.Taylor@Sun.COM typedef struct hermon_info_ioctl_s { 280*9517SBill.Taylor@Sun.COM uint_t ai_revision; 281*9517SBill.Taylor@Sun.COM hermon_fw_info_ioctl_t ai_fw_rev; 282*9517SBill.Taylor@Sun.COM uint32_t ai_hw_rev; 283*9517SBill.Taylor@Sun.COM uint_t ai_flash_sz; 284*9517SBill.Taylor@Sun.COM uint_t rsvd1; /* DDR start */ 285*9517SBill.Taylor@Sun.COM uint_t rsvd2; /* DDR end */ 286*9517SBill.Taylor@Sun.COM } hermon_info_ioctl_t; 287*9517SBill.Taylor@Sun.COM 288*9517SBill.Taylor@Sun.COM 289*9517SBill.Taylor@Sun.COM #ifdef __cplusplus 290*9517SBill.Taylor@Sun.COM } 291*9517SBill.Taylor@Sun.COM #endif 292*9517SBill.Taylor@Sun.COM 293*9517SBill.Taylor@Sun.COM #endif /* _SYS_IB_ADAPTERS_HERMON_IOCTL_H */ 294