xref: /onnv-gate/usr/src/uts/common/sys/ib/adapters/hermon/hermon_ioctl.h (revision 9517:b4839b0aa7a4)
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