Subject: Re: [PATCH 12/15] BE NIC driver - f/w header files

From: Stephen Hemminger <[email-masked]>
Date: Thu, 15 May 2008 13:25:19 -0700

On Thu, 15 May 2008 02:46:14 -0700
"Subbu Seetharaman" <[email-masked]> wrote:

> Signed-off-by: Subbu Seetharaman <[email-masked]> 
> ---
>  drivers/message/beclib/fw/amap/ioctl_defs.h    |  101 +++
>  drivers/message/beclib/fw/amap/ioctl_eth.h     |   72 +++
>  drivers/message/beclib/fw/amap/ioctl_hdr.h     |   80 +++
>  drivers/message/beclib/fw/amap/ioctl_mcc.h     |  109 ++++
>  drivers/message/beclib/fw/amap/ioctl_opcodes.h |  791 ++++++++++++++++++++++++
>  drivers/message/beclib/fw/amap/ioctl_top.h     |   44 ++
>  drivers/message/beclib/fw/amap/ioctl_types.h   |  450 ++++++++++++++
>  7 files changed, 1647 insertions(+), 0 deletions(-)
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_defs.h
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_eth.h
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_hdr.h
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_mcc.h
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_opcodes.h
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_top.h
>  create mode 100644 drivers/message/beclib/fw/amap/ioctl_types.h
> 
> diff --git a/drivers/message/beclib/fw/amap/ioctl_defs.h b/drivers/message/beclib/fw/amap/ioctl_defs.h
> new file mode 100644
> index 0000000..e6208ef
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_defs.h
> @@ -0,0 +1,101 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_defs_amap_h__
> +#define __ioctl_defs_amap_h__
> +
> +/* --- IOCTLDEF_DEFINED_ENUMS --- */
> +#define MGMT_MAX_CONNECTIONS_PER_SESSION (1)
> +#define MGMT_MAX_INITIATOR_PORTALS      (1)
> +#define MGMT_MAX_NIC_PORTS              (2)
> +#define MGMT_MAX_ISCSI_PORTS            (2)
> +#define MGMT_MAX_PORTALS_PER_PG         (4)
> +#define MGMT_IPV4_ADDRESS_LEN           (4)
> +#define MGMT_IPV4_SUBNET_MASK_LEN       (4)
> +#define MGMT_MAX_DNS_SERVER             (5)
> +#define MGMT_MAX_MULTICAST_TIMEOUT_ENTRIES (5)
> +#define MGMT_ISID_LENGTH                (6)
> +#define MGMT_MAX_SCSI_CHANNELS          (8)
> +#define MGMT_MAX_BOOTABLE_LUN           (8)
> +#define MGMT_LUN_SIZE                   (8)
> +#define MGMT_IOCTL_MIN_SRB_TIMEOUT_VALUE (10)
> +#define MGMT_DIGEST_KEY_LEN             (12)
> +#define MGMT_CHAP_SECRET_MIN_LEN        (12)
> +#define MGMT_MAX_ROUTE_ENTRIES          (16)
> +#define MGMT_CHAP_SECRET_LEN            (16)
> +#define MGMT_IPV6_ADDRESS_LEN           (16)
> +#define MGMT_IPV6_SUBNET_MASK_LEN       (16)
> +#define MGMT_MAX_CDB_LEN                (16)
> +#define MGMT_SENSE_BUFFER_LEN           (18)
> +#define MGMT_MAX_SG_COUNT               (19)
> +#define MGMT_SECURITY_KEY_LEN           (30)
> +#define MGMT_ISCSI_ALIAS_LEN            (32)
> +#define MGMT_MAX_MANUFACTURER_STRING    (32)
> +#define MGMT_MAX_MODEL_NUMBER_STRING    (32)
> +#define MGMT_MAX_CTLR_SERIALNO_STRING   (32)
> +#define MGMT_MAX_FLASHROM_VERSION_STRING (32)
> +#define MGMT_MAX_FW_VERSION_STRING      (32)
> +#define MGMT_MAX_IP_VERSION_STRING      (32)
> +#define MGMT_MAX_ISCSI_VERSION_STRING   (32)
> +#define MGMT_MAX_BIOS_VERSION_STRING    (32)
> +#define MGMT_MAX_REDBOOT_VERSION_STRING (32)
> +#define MGMT_MAX_DRV_VERSION_STRING     (32)
> +#define MGMT_MAX_INITIATOR_ALLOWED      (32)
> +#define MGMT_MAX_TGT_IP_SUPPORTED       (32)
> +#define MGMT_MAX_TARGETS_ALLOWED_USING_DISCOVERY (64)
> +#define MGMT_MAX_ARP_ENTRIES            (64)
> +#define MGMT_DNS_NAME_LEN               (64)
> +#define MGMT_MAX_CTLR_DESCRIPTION_STRING (64)
> +#define MGMT_MAX_PORTAL_GROUPS          (128)
> +#define MGMT_ISCSI_NAME_LEN             (224)
> +#define MGMT_ISNS_PORTAL_SYM_NAME_LEN   (256)
> +#define MGMT_CHAP_NAME_LEN              (256)
> +#define MGMT_SEND_TARGET_TEXTKEY        (256)
> +#define MGMT_MAX_SCOPE_LIST_LENGTH      (256)
> +#define MGMT_MAX_QUERY_LIST_LENGTH      (256)
> +#define MGMT_PRESHARED_KEYSIZE          (256)
> +#define MGMT_IPSEC_ID_SIZE              (256)
> +#define MGMT_MAX_TARGETS_ALLOWED        (512)
> +#define MGMT_MAX_LUNS                   (512)
> +#define MGMT_MAX_HOST_TABLE             (512)
> +#define MGMT_MAX_ISCSI_SESSIONS_ALLOWED (512)
> +#define MGMT_MAX_CONNECTIONS            (512)
> +#define MGMT_MAX_PORTALS                (1024)
> +#define MAX_SEEPROM_SIZE                (1024)
> +#define MGMT_MAX_IOCTL_PAYLOAD_SIZE     (73728)
> +
> +#ifdef SG_PRAGMA_PACK
> +#pragma pack(pop)
> +#endif
> +
> +#endif /* __ioctl_defs_amap_h__ */
> diff --git a/drivers/message/beclib/fw/amap/ioctl_eth.h b/drivers/message/beclib/fw/amap/ioctl_eth.h
> new file mode 100644
> index 0000000..bdc717e
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_eth.h
> @@ -0,0 +1,72 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_eth_amap_h__
> +#define __ioctl_eth_amap_h__
> +#include "ioctl_hdr.h"
> +#include "ioctl_types.h"
> +
> +/* --- RXF_STATS_INTERESTING_OFFSETS --- */
> +#define P0_RECVD_TOTAL_BYTES_LSD_DWORD_OFFSET (0)
> +#define P0_RECVD_TOTAL_BYTES_MSD_DWORD_OFFSET (1)
> +#define P0_XMIT_BYTES_LSD_DWORD_OFFSET  (40)
> +#define P0_XMIT_BYTES_MSD_DWORD_OFFSET  (41)
> +#define P1_RECVD_TOTAL_BYTES_LSD_DWORD_OFFSET (59)
> +#define P1_RECVD_TOTAL_BYTES_MSD_DWORD_OFFSET (60)
> +#define P1_XMIT_BYTES_LSD_DWORD_OFFSET  (99)
> +#define P1_XMIT_BYTES_MSD_DWORD_OFFSET  (100)
> +/*
> + * --- ENABLE_RSS_ENUM ---
> + * Enable RSS enum.
> + */
> +#define RSS_ENABLE_NONE            (0)	/* No RSS */
> +#define RSS_ENABLE_IPV4            (1)	/* IPV4 HASH only (i.e. only IP */
> +					  /* source/dest two-tuple) */
> +#define RSS_ENABLE_TCP_IPV4        (2)	/* TCP IPV4 HASH only
> +					(i.e. only TCP/IP four-tuple) */
> +#define RSS_ENABLE_IPV4_OR_TCP_IPV4 (3)	/* IPV4 or TCP IPV4 HASH (i.e. if */
> +					/*
> +					* TCP/IP, then use four-tuple, else if
> +					* IP use two-tuple)
> +					*/
> +/*
> + * --- RSS_FLUSH_CQ_ENUM ---
> + * Flush CQ enum.
> + */
> +#define RSS_FLUSH_CQ_DEFAULT (1)	/* Flush default host networking CQ */
> +#define RSS_FLUSH_CQ_PROC0   (2)	/* Flush RSS CQ for processor 0 */
> +#define RSS_FLUSH_CQ_PROC1   (4)	/* Flush RSS CQ for processor 1 */
> +#define RSS_FLUSH_CQ_PROC2   (8)	/* Flush RSS CQ for processor 2 */
> +#define RSS_FLUSH_CQ_PROC3   (16)	/* Flush RSS CQ for processor 3 */
> +
> +#endif /* __ioctl_eth_amap_h__ */
> diff --git a/drivers/message/beclib/fw/amap/ioctl_hdr.h b/drivers/message/beclib/fw/amap/ioctl_hdr.h
> new file mode 100644
> index 0000000..7e96fd1
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_hdr.h
> @@ -0,0 +1,80 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_hdr_amap_h__
> +#define __ioctl_hdr_amap_h__
> +#include "nativedefs.h"
> +#include "ioctl_defs.h"
> +#include "ioctl_opcodes.h"
> +
> +struct BE_IOCTL_REQUEST_HEADER_AMAP {
> +	struct BE_UEXACT8_AMAP opcode;
> +	struct BE_UEXACT8_AMAP subsystem;
> +	struct BE_UEXACT8_AMAP port_number;
> +	struct BE_UEXACT8_AMAP domain;
> +	struct BE_UEXACT32_AMAP timeout;
> +	struct BE_UEXACT32_AMAP request_length;
> +	BE_BIT rsvd0[32];	/* DWORD 3 */
> +} SG_PACK;
> +struct IOCTL_REQUEST_HEADER_AMAP {
> +	u32 dw[4];
> +};
> +
> +struct BE_IOCTL_RESPONSE_HEADER_AMAP {
> +	struct BE_UEXACT8_AMAP opcode;
> +	struct BE_UEXACT8_AMAP subsystem;
> +	BE_BIT rsvd0[8];	/* DWORD 0 */
> +	struct BE_UEXACT8_AMAP domain;
> +	struct BE_UEXACT8_AMAP status;
> +	struct BE_UEXACT8_AMAP additional_status;
> +	BE_BIT rsvd1[16];	/* DWORD 1 */
> +	struct BE_UEXACT32_AMAP response_length;
> +	struct BE_UEXACT32_AMAP actual_response_length;
> +} SG_PACK;
> +struct IOCTL_RESPONSE_HEADER_AMAP {
> +	u32 dw[4];
> +};
> +
> +/*
> + * The firmware/driver overwrites the input IOCTL_REQUEST_HEADER with the
> + * output IOCTL_RESPONSE_HEADER.
> + */
> +union BE_IOCTL_HEADER_AMAP {
> +	struct BE_IOCTL_REQUEST_HEADER_AMAP request;
> +	struct BE_IOCTL_RESPONSE_HEADER_AMAP response;
> +} SG_PACK;
> +struct IOCTL_HEADER_AMAP {
> +	u32 dw[4];
> +};
> +
> +#endif /* __ioctl_hdr_amap_h__ */
> diff --git a/drivers/message/beclib/fw/amap/ioctl_mcc.h b/drivers/message/beclib/fw/amap/ioctl_mcc.h
> new file mode 100644
> index 0000000..ccb463b
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_mcc.h
> @@ -0,0 +1,109 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_mcc_amap_h__
> +#define __ioctl_mcc_amap_h__
> +#include "ioctl_defs.h"
> +#include "ioctl_opcodes.h"
> +
> +/*
> + * Where applicable, a WRB, may contain a list of Scatter-gather elements.
> + * Each element supports a 64 bit address and a 32bit length field.
> + */
> +struct BE_MCC_SGE_AMAP {
> +	BE_BIT pa_lo[32];	/* DWORD 0 */
> +	BE_BIT pa_hi[32];	/* DWORD 1 */
> +	BE_BIT length[32];	/* DWORD 2 */
> +} SG_PACK;
> +struct MCC_SGE_AMAP {
> +	u32 dw[3];
> +};
> +
> +/*
> + * The design of an [link]MCC_SGE[/link] allows up to 19 elements to be
> + * embedded in a WRB, supporting 64KB data transfers (assuming a 4KB page size).
> + */
> +union BE_MCC_WRB_PAYLOAD_AMAP {
> +	struct BE_MCC_SGE_AMAP sgl[19];
> +	BE_BIT embedded[59][32];	/* DWORD 0 */
> +} SG_PACK;
> +struct MCC_WRB_PAYLOAD_AMAP {
> +	u32 dw[59];
> +};
> +
> +/*
> + * This is the structure of the MCC Command WRB for commands
> + * sent to the Management Processing Unit (MPU). See section
> + * for usage in embedded and non-embedded modes.
> + */
> +struct BE_MCC_WRB_AMAP {
> +	BE_BIT embedded;	/* DWORD 0 */
> +	BE_BIT rsvd0[2];	/* DWORD 0 */
> +	BE_BIT sge_count[5];	/* DWORD 0 */
> +	BE_BIT rsvd1[16];	/* DWORD 0 */
> +	BE_BIT special[8];	/* DWORD 0 */
> +	BE_BIT payload_length[32];	/* DWORD 1 */
> +	BE_BIT tag[2][32];	/* DWORD 2 */
> +	BE_BIT rsvd2[32];	/* DWORD 4 */
> +	union BE_MCC_WRB_PAYLOAD_AMAP payload;
> +} SG_PACK;
> +struct MCC_WRB_AMAP {
> +	u32 dw[64];
> +};
> +
> +/*  This is the structure of the MCC Completion queue entry  */
> +struct BE_MCC_CQ_ENTRY_AMAP {
> +	BE_BIT completion_status[16];	/* DWORD 0 */
> +	BE_BIT extended_status[16];	/* DWORD 0 */
> +	BE_BIT mcc_tag[2][32];	/* DWORD 1 */
> +	BE_BIT rsvd0[27];	/* DWORD 3 */
> +	BE_BIT consumed;	/* DWORD 3 */
> +	BE_BIT completed;	/* DWORD 3 */
> +	BE_BIT hpi_buffer_completion;	/* DWORD 3 */
> +	BE_BIT async_event;	/* DWORD 3 */
> +	BE_BIT valid;		/* DWORD 3 */
> +} SG_PACK;
> +struct MCC_CQ_ENTRY_AMAP {
> +	u32 dw[4];
> +};
> +
> +/* Mailbox structures used by the MPU during bootstrap */
> +struct BE_MCC_MAILBOX_AMAP {
> +	struct BE_MCC_WRB_AMAP wrb;
> +	struct BE_MCC_CQ_ENTRY_AMAP cq;
> +} SG_PACK;
> +struct MCC_MAILBOX_AMAP {
> +	u32 dw[68];
> +};
> +
> +#endif /* __ioctl_mcc_amap_h__ */
> diff --git a/drivers/message/beclib/fw/amap/ioctl_opcodes.h b/drivers/message/beclib/fw/amap/ioctl_opcodes.h
> new file mode 100644
> index 0000000..3627f7f
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_opcodes.h
> @@ -0,0 +1,791 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_opcodes_amap_h__
> +#define __ioctl_opcodes_amap_h__
> +
> +/*
> + * --- IOCTL_SUBSYSTEMS ---
> + * The IOCTLs are grouped into the following subsystems. The subsystem
> + * code along with the opcode uniquely identify a particular IOCTL.
> + */
> +#define IOCTL_SUBSYSTEM_RSVD  (0)	/* This subsystem is reserved. It is */
> +						  /* never used. */
> +#define IOCTL_SUBSYSTEM_COMMON (1)	/* IOCTLs in this group are common to
> +					* all subsystems. See
> +					* COMMON_SUBSYSTEM_OPCODES for opcodes
> +					* and Common Host Configuration IOCTLs
> +					* for the IOCTL descriptions.
> +					*/
> +#define IOCTL_SUBSYSTEM_COMMON_ISCSI    (2) /* IOCTLs in this group are */
> +					/*
> +					* common to Initiator and Target. See
> +					* COMMON_ISCSI_SUBSYSTEM_OPCODES and
> +					* Common iSCSI Initiator and Target
> +					* IOCTLs for the IOCTL descriptions.
> +					*/
> +#define IOCTL_SUBSYSTEM_ETH             (3)	/* This subsystem is used to
> +						execute  Ethernet commands.  */
> +
> +#define IOCTL_SUBSYSTEM_TPM             (4)	/* This subsystem is used
> +						 to execute TPM  commands.  */
> +#define IOCTL_SUBSYSTEM_PXE_UNDI        (5)	/* This subsystem is used
> +						* to execute PXE
> +						* and UNDI specific commands.
> +						*/
> +
> +#define IOCTL_SUBSYSTEM_ISCSI_INI       (6)	/* This subsystem is used to
> +						execute ISCSI Initiator
> +						specific commands.
> +						*/
> +#define IOCTL_SUBSYSTEM_ISCSI_TGT       (7)	/* This subsystem is used
> +						to execute iSCSI Target
> +						specific commands.between
> +						PTL and ARM firmware.
> +						*/
> +#define IOCTL_SUBSYSTEM_MILI_PTL        (8)	/* This subsystem is used to
> +						execute iSCSI Target specific
> +						commands.between MILI
> +						and PTL.  */
> +#define IOCTL_SUBSYSTEM_MILI_TMD        (9)	/* This subsystem is used to
> +						execute iSCSI Target specific
> +						commands between MILI
> +						and TMD.  */
> +#define IOCTL_SUBSYSTEM_PROXY           (11)	/* This subsystem is used
> +						to execute proxied commands
> +						within the host at the
> +						explicit request of a
> +						non priviledged domain.
> +						This 'subsystem' is entirely
> +						virtual from the controller
> +						and firmware perspective as
> +						it is implemented in host
> +						drivers.
> +						*/
> +
> +/*
> + * --- COMMON_SUBSYSTEM_OPCODES ---
> + * These opcodes are common to both networking and storage PCI
> + * functions. They are used to reserve resources and configure
> + * BladeEngine. These opcodes all use the IOCTL_SUBSYSTEM_COMMON
> + * subsystem code.
> + */
> +#define OPCODE_COMMON_NTWK_MAC_QUERY    (1)
> +#define SUBSYSTEM_COMMON_NTWK_MAC_QUERY (1)
> +#define SUBSYSTEM_COMMON_NTWK_MAC_SET   (1)
> +#define SUBSYSTEM_COMMON_NTWK_MULTICAST_SET (1)
> +#define SUBSYSTEM_COMMON_NTWK_VLAN_CONFIG (1)
> +#define SUBSYSTEM_COMMON_NTWK_LINK_STATUS_QUERY (1)
> +#define SUBSYSTEM_COMMON_READ_FLASHROM  (1)
> +#define SUBSYSTEM_COMMON_WRITE_FLASHROM (1)
> +#define SUBSYSTEM_COMMON_QUERY_MAX_IOCTL_BUFFER_SIZE (1)
> +#define SUBSYSTEM_COMMON_ADD_PAGE_TABLES (1)
> +#define SUBSYSTEM_COMMON_REMOVE_PAGE_TABLES (1)
> +#define SUBSYSTEM_COMMON_RING_DESTROY   (1)
> +#define SUBSYSTEM_COMMON_CQ_CREATE      (1)
> +#define SUBSYSTEM_COMMON_EQ_CREATE      (1)
> +#define SUBSYSTEM_COMMON_ETH_RX_CREATE  (1)
> +#define SUBSYSTEM_COMMON_ETH_TX_CREATE  (1)
> +#define SUBSYSTEM_COMMON_ISCSI_DEFQ_CREATE (1)
> +#define SUBSYSTEM_COMMON_ISCSI_WRBQ_CREATE (1)
> +#define SUBSYSTEM_COMMON_MCC_CREATE     (1)
> +#define SUBSYSTEM_COMMON_JELL_CONFIG    (1)
> +#define SUBSYSTEM_COMMON_FORCE_FAILOVER (1)
> +#define SUBSYSTEM_COMMON_ADD_TEMPLATE_HEADER_BUFFERS (1)
> +#define SUBSYSTEM_COMMON_REMOVE_TEMPLATE_HEADER_BUFFERS (1)
> +#define SUBSYSTEM_COMMON_POST_ZERO_BUFFER (1)
> +#define SUBSYSTEM_COMMON_GET_QOS        (1)
> +#define SUBSYSTEM_COMMON_SET_QOS        (1)
> +#define SUBSYSTEM_COMMON_TCP_GET_STATISTICS (1)
> +#define SUBSYSTEM_COMMON_SEEPROM_READ   (1)
> +#define SUBSYSTEM_COMMON_TCP_STATE_QUERY (1)
> +#define SUBSYSTEM_COMMON_GET_CNTL_ATTRIBUTES (1)
> +#define SUBSYSTEM_COMMON_NOP            (1)
> +#define SUBSYSTEM_COMMON_NTWK_RX_FILTER (1)
> +#define SUBSYSTEM_COMMON_GET_FW_VERSION (1)
> +#define SUBSYSTEM_COMMON_SET_FLOW_CONTROL (1)
> +#define SUBSYSTEM_COMMON_GET_FLOW_CONTROL (1)
> +#define SUBSYSTEM_COMMON_SET_TCP_PARAMETERS (1)
> +#define SUBSYSTEM_COMMON_SET_FRAME_SIZE (1)
> +#define SUBSYSTEM_COMMON_GET_FAT        (1)
> +#define SUBSYSTEM_COMMON_MODIFY_EQ_DELAY (1)
> +#define SUBSYSTEM_COMMON_FIRMWARE_CONFIG (1)
> +#define SUBSYSTEM_COMMON_ENABLE_DISABLE_DOMAINS (1)
> +#define SUBSYSTEM_COMMON_GET_DOMAIN_CONFIG (1)
> +#define SUBSYSTEM_COMMON_SET_VLD_CONFIG (1)
> +#define SUBSYSTEM_COMMON_GET_VLD_CONFIG (1)
> +#define SUBSYSTEM_COMMON_GET_PORT_EQUALIZATION (1)
> +#define SUBSYSTEM_COMMON_SET_PORT_EQUALIZATION (1)
> +#define SUBSYSTEM_COMMON_RED_CONFIG     (1)
> +#define OPCODE_COMMON_NTWK_MAC_SET      (2)
> +#define OPCODE_COMMON_NTWK_MULTICAST_SET (3)
> +#define OPCODE_COMMON_NTWK_VLAN_CONFIG  (4)
> +#define OPCODE_COMMON_NTWK_LINK_STATUS_QUERY (5)
> +#define OPCODE_COMMON_READ_FLASHROM     (6)
> +#define OPCODE_COMMON_WRITE_FLASHROM    (7)
> +#define OPCODE_COMMON_QUERY_MAX_IOCTL_BUFFER_SIZE (8)
> +#define OPCODE_COMMON_ADD_PAGE_TABLES   (9)
> +#define OPCODE_COMMON_REMOVE_PAGE_TABLES (10)
> +#define OPCODE_COMMON_RING_DESTROY      (11)
> +#define OPCODE_COMMON_CQ_CREATE         (12)
> +#define OPCODE_COMMON_EQ_CREATE         (13)
> +#define OPCODE_COMMON_ETH_RX_CREATE     (14)
> +#define OPCODE_COMMON_ETH_TX_CREATE     (15)
> +#define OPCODE_COMMON_NET_RESERVED0     (16)	/* Reserved */
> +#define OPCODE_COMMON_NET_RESERVED1     (17)	/* Reserved */
> +#define OPCODE_COMMON_NET_RESERVED2     (18)	/* Reserved */
> +#define OPCODE_COMMON_ISCSI_DEFQ_CREATE (19)
> +#define OPCODE_COMMON_ISCSI_WRBQ_CREATE (20)
> +#define OPCODE_COMMON_MCC_CREATE        (21)
> +#define OPCODE_COMMON_JELL_CONFIG       (22)
> +#define OPCODE_COMMON_FORCE_FAILOVER    (23)
> +#define OPCODE_COMMON_ADD_TEMPLATE_HEADER_BUFFERS (24)
> +#define OPCODE_COMMON_REMOVE_TEMPLATE_HEADER_BUFFERS (25)
> +#define OPCODE_COMMON_POST_ZERO_BUFFER  (26)
> +#define OPCODE_COMMON_GET_QOS           (27)
> +#define OPCODE_COMMON_SET_QOS           (28)
> +#define OPCODE_COMMON_TCP_GET_STATISTICS (29)
> +#define OPCODE_COMMON_SEEPROM_READ      (30)
> +#define OPCODE_COMMON_TCP_STATE_QUERY   (31)
> +#define OPCODE_COMMON_GET_CNTL_ATTRIBUTES (32)
> +#define OPCODE_COMMON_NOP               (33)
> +#define OPCODE_COMMON_NTWK_RX_FILTER    (34)
> +#define OPCODE_COMMON_GET_FW_VERSION    (35)
> +#define OPCODE_COMMON_SET_FLOW_CONTROL  (36)
> +#define OPCODE_COMMON_GET_FLOW_CONTROL  (37)
> +#define OPCODE_COMMON_SET_TCP_PARAMETERS (38)
> +#define OPCODE_COMMON_SET_FRAME_SIZE    (39)
> +#define OPCODE_COMMON_GET_FAT           (40)
> +#define OPCODE_COMMON_MODIFY_EQ_DELAY   (41)
> +#define OPCODE_COMMON_FIRMWARE_CONFIG   (42)
> +#define OPCODE_COMMON_ENABLE_DISABLE_DOMAINS (43)
> +#define OPCODE_COMMON_GET_DOMAIN_CONFIG (44)
> +#define OPCODE_COMMON_SET_VLD_CONFIG    (45)
> +#define OPCODE_COMMON_GET_VLD_CONFIG    (46)
> +#define OPCODE_COMMON_GET_PORT_EQUALIZATION (47)
> +#define OPCODE_COMMON_SET_PORT_EQUALIZATION (48)
> +#define OPCODE_COMMON_RED_CONFIG        (49)
> +
> +/*
> + * --- COMMON_ISCSI_SUBSYSTEM_OPCODES ---
> + * IOCTLs used to configure discovery and networking parameters in
> + * iSCSI Initiator and Target modes. These opcodes all use the
> + * IOCTL_SUBSYSTEM_COMMON_ISCSI subsystem code.
> + */
> +#define OPCODE_COMMON_ISCSI_ERROR_RECOVERY_INVALIDATE_COMMANDS (1)
> +#define SUBSYSTEM_COMMON_ISCSI_ERROR_RECOVERY_INVALIDATE_COMMANDS (2)
> +#define OPCODE_COMMON_ISCSI_CFG_POST_SGL_PAGES (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CFG_POST_SGL_PAGES (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CFG_REMOVE_SGL_PAGES (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CFG_POST_OOO_BUFFERS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CFG_REMOVE_OOO_BUFFERS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_NTWK_PING (2)
> +#define SUBSYSTEM_COMMON_ISCSI_NTWK_GET_NIC_CONFIG (2)
> +#define SUBSYSTEM_COMMON_ISCSI_NTWK_GET_ARP_TABLE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_NTWK_SET_ARP_TABLE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_NTWK_GET_ROUTE_TABLE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_NTWK_SET_ROUTE_TABLE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_DISCOVERY_GET_PARAMETERS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_DISCOVERY_SET_PARAMETERS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_STATS_GET_NODE_ATTRIBUTES (2)
> +#define SUBSYSTEM_COMMON_ISCSI_STATS_GET_NIC_STATISTICS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_DOWNLOAD_XML (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_DELETE_XML (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_RX_STATS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_TX_STATS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ADD_CERTIFICATE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_DEL_CERTIFICATE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ADD_PRIVATE_KEY (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_DEL_PRIVATE_KEY (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ADD_PASSPHRASE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_DEL_PASSPHRASE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ENABLE_DISABLE_FLASH_ENCRYPTION (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_GROUP_NAMES (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_SINGLE_GROUP_NAME (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ADD_GROUP (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_DELETE_GROUP (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_QMSTATS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_MMSTATS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_STATE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_CLEAR_PSK_CACHE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_PSK (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_SET_GUID (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_SET_PSK (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_SET_TUNNEL_MODE_OUTER_ADDRESS (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_GET_SECURITY_CAPABILITIES (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_SET_GROUP_PSK (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ADD_ROOT_CERTIFICATE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_IPSEC_ENABLE_DISABLE (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CLEANUP  (2)
> +#define SUBSYSTEM_COMMON_ISCSI_ADD_8BYTE_LUN (2)
> +#define SUBSYSTEM_COMMON_ISCSI_SET_FRAGNUM_BITS_FOR_SGL_CRA (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CFG_CLEAR_EVENT_LOG (2)
> +#define SUBSYSTEM_COMMON_ISCSI_CFG_READ_EVENT_LOG (2)
> +#define OPCODE_COMMON_ISCSI_CFG_REMOVE_SGL_PAGES (3)
> +#define OPCODE_COMMON_ISCSI_CFG_POST_OOO_BUFFERS (4)
> +#define OPCODE_COMMON_ISCSI_CFG_REMOVE_OOO_BUFFERS (5)
> +#define OPCODE_COMMON_ISCSI_NTWK_PING   (6)
> +#define OPCODE_COMMON_ISCSI_NTWK_GET_NIC_CONFIG (7)
> +#define OPCODE_COMMON_ISCSI_NTWK_GET_ARP_TABLE (8)
> +#define OPCODE_COMMON_ISCSI_NTWK_SET_ARP_TABLE (9)
> +#define OPCODE_COMMON_ISCSI_NTWK_GET_ROUTE_TABLE (10)
> +#define OPCODE_COMMON_ISCSI_NTWK_SET_ROUTE_TABLE (11)
> +#define OPCODE_COMMON_ISCSI_DISCOVERY_GET_PARAMETERS (12)
> +#define OPCODE_COMMON_ISCSI_DISCOVERY_SET_PARAMETERS (13)
> +#define OPCODE_COMMON_ISCSI_STATS_GET_NODE_ATTRIBUTES (14)
> +#define OPCODE_COMMON_ISCSI_STATS_GET_NIC_STATISTICS (15)
> +#define OPCODE_COMMON_ISCSI_IPSEC_DOWNLOAD_XML (16)
> +#define OPCODE_COMMON_ISCSI_IPSEC_DELETE_XML (17)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_RX_STATS (18)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_TX_STATS (19)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ADD_CERTIFICATE (20)
> +#define OPCODE_COMMON_ISCSI_IPSEC_DEL_CERTIFICATE (21)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ADD_PRIVATE_KEY (22)
> +#define OPCODE_COMMON_ISCSI_IPSEC_DEL_PRIVATE_KEY (23)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ADD_PASSPHRASE (24)
> +#define OPCODE_COMMON_ISCSI_IPSEC_DEL_PASSPHRASE (25)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ENABLE_DISABLE_FLASH_ENCRYPTION (26)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_GROUP_NAMES (27)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_SINGLE_GROUP_NAME (28)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ADD_GROUP (29)
> +#define OPCODE_COMMON_ISCSI_IPSEC_DELETE_GROUP (30)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_QMSTATS (31)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_MMSTATS (32)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_STATE (33)
> +#define OPCODE_COMMON_ISCSI_IPSEC_CLEAR_PSK_CACHE (34)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_PSK (35)
> +#define OPCODE_COMMON_ISCSI_IPSEC_SET_GUID (36)
> +#define OPCODE_COMMON_ISCSI_IPSEC_SET_PSK (37)
> +#define OPCODE_COMMON_ISCSI_IPSEC_SET_TUNNEL_MODE_OUTER_ADDRESS (38)
> +#define OPCODE_COMMON_ISCSI_IPSEC_GET_SECURITY_CAPABILITIES (39)
> +#define OPCODE_COMMON_ISCSI_IPSEC_SET_GROUP_PSK (40)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ADD_ROOT_CERTIFICATE (41)
> +#define OPCODE_COMMON_ISCSI_IPSEC_ENABLE_DISABLE (42)
> +#define OPCODE_COMMON_ISCSI_CLEANUP     (43)
> +#define OPCODE_COMMON_ISCSI_ADD_8BYTE_LUN (44)
> +#define OPCODE_COMMON_ISCSI_SET_FRAGNUM_BITS_FOR_SGL_CRA (45)
> +#define OPCODE_COMMON_ISCSI_CFG_CLEAR_EVENT_LOG (46)
> +#define OPCODE_COMMON_ISCSI_CFG_READ_EVENT_LOG (47)
> +
> +/*
> + * --- ISCSI_INI_SUBSYSTEM_OPCODES ---
> + * Opcodes applicable to the IOCTL_SUBSYSTEM_ISCSI_INI subsystem.
> + */
> +#define OPCODE_ISCSI_INI_NTWK_GET_TCPIP_CONFIG (1)
> +#define OPCODE_ISCSI_INI_NTWK_SET_TCPIP_CONFIG (2)
> +#define OPCODE_ISCSI_INI_NTWK_GET_DHCP_STATUS (3)
> +#define OPCODE_ISCSI_INI_CFG_GET_CNTL_ATTRIBUTES (4)
> +#define OPCODE_ISCSI_INI_CFG_GET_HBA_COUNT (5)
> +#define SUBSYSTEM_ISCSI_INI_NTWK_GET_TCPIP_CONFIG (6)
> +#define SUBSYSTEM_ISCSI_INI_NTWK_SET_TCPIP_CONFIG (6)
> +#define SUBSYSTEM_ISCSI_INI_NTWK_GET_DHCP_STATUS (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_GET_CNTL_ATTRIBUTES (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_GET_HBA_COUNT (6)
> +#define OPCODE_ISCSI_INI_CFG_GET_HBA_NAME (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_GET_HBA_NAME (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_SET_HBA_NAME (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_SET_HBA_TIME (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_GET_CHAP_SECRET (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_SET_CHAP_SECRET (6)
> +#define SUBSYSTEM_ISCSI_INI_CFG_GET_HBA_STATUS (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_ALL_SESSIONS (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_SESSION_LIST (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_A_SESSION (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_ALL_CONNECTIONS (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_CONFIGURATION (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_SET_CONFIGURATION (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_CONFIGURATION_LIST (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_MODIFY_SESSION_LOGINKEYS (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_MODIFY_CONNECTION_LOGINKEYS (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_ADD_CONNECTION_TO_SESSION (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_CLOSE_CONNECTION (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_LOGIN_TARGET (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_LOGOUT_TARGET (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_ALL_PLOGIN_TGTNAME_PORTAL (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_QUERY_A_PERSISTENT_LOGIN (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_QUERY_PERSISTENT_LOGINS (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_ADD_PERSISTENT_LOGIN (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_DELETE_PERSISTENT_LOGIN (6)
> +#define SUBSYSTEM_ISCSI_INI_SESSION_GET_ALL_SESSION_ID (6)
> +#define SUBSYSTEM_ISCSI_INI_DISCOVERY_GET_ALL_DISCOVERED_TARGET_ID (6)
> +#define SUBSYSTEM_ISCSI_INI_DISCOVERY_REPORT_ALL_TARGETS (6)
> +#define SUBSYSTEM_ISCSI_INI_DISCOVERY_REPORT_A_TARGET (6)
> +#define SUBSYSTEM_ISCSI_INI_DISCOVERY_SEND_TARGETS (6)
> +#define SUBSYSTEM_ISCSI_INI_RETRIEVE_PARSED_TARGET_INFO (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_REOPEN_A_SESSION (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_REOPEN_ALL_SESSIONS (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_REOPEN_A_CONN (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_DEL_ALL_NONPERSISTENT_SESSIONS (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_STORE_NONPERSISTENT_SESSIONS (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_LOGIN_ALL_SESSIONS (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_OFFLOAD_SESSION (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_INVALIDATE_CONNECTION (6)
> +#define SUBSYSTEM_ISCSI_INI_DRIVER_OFFLOAD_CONN (6)
> +#define SUBSYSTEM_ISCSI_INI_BTL_MAPPING_QUERY_OS_BT_INUSE (6)
> +#define SUBSYSTEM_ISCSI_INI_BTL_MAPPING_MAX_OS_SUPPORTED_BTL (6)
> +#define SUBSYSTEM_ISCSI_INI_STATS_GET_INSTANCE_STATISTICS (6)
> +#define SUBSYSTEM_ISCSI_INI_STATS_GET_LOGIN_STATISTICS (6)
> +#define SUBSYSTEM_ISCSI_INI_STATS_GET_SESSION_ATTRIBUTES (6)
> +#define SUBSYSTEM_ISCSI_INI_STATS_GET_A_SESSION_STATISTICS (6)
> +#define SUBSYSTEM_ISCSI_INI_STATS_GET_CONN_STATISTICS_PER_SESSION (6)
> +#define SUBSYSTEM_ISCSI_INI_STATS_GET_IPSEC_STATISTICS (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_GET_BOOT_TARGET (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_SET_BOOT_TARGET (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_GET_BOOT_LUN (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_SET_BOOT_LUN (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_READ_WRITE (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_GET_BIOS_CONFIGURATION (6)
> +#define SUBSYSTEM_ISCSI_INI_BOOT_SET_BIOS_CONFIGURATION (6)
> +#define SUBSYSTEM_ISCSI_INI_SCSI_PASS_THRU (6)
> +#define OPCODE_ISCSI_INI_CFG_SET_HBA_NAME (7)
> +#define OPCODE_ISCSI_INI_CFG_SET_HBA_TIME (8)
> +#define OPCODE_ISCSI_INI_CFG_GET_CHAP_SECRET (9)
> +#define OPCODE_ISCSI_INI_CFG_SET_CHAP_SECRET (10)
> +#define OPCODE_ISCSI_INI_CFG_GET_HBA_STATUS (11)
> +#define OPCODE_ISCSI_INI_SESSION_GET_ALL_SESSIONS (12)
> +#define OPCODE_ISCSI_INI_SESSION_GET_SESSION_LIST (13)
> +#define OPCODE_ISCSI_INI_SESSION_GET_A_SESSION (14)
> +#define OPCODE_ISCSI_INI_SESSION_GET_ALL_CONNECTIONS (15)
> +#define OPCODE_ISCSI_INI_SESSION_GET_CONFIGURATION (16)
> +#define OPCODE_ISCSI_INI_SESSION_SET_CONFIGURATION (17)
> +#define OPCODE_ISCSI_INI_SESSION_GET_CONFIGURATION_LIST (18)
> +#define OPCODE_ISCSI_INI_SESSION_MODIFY_SESSION_LOGINKEYS (19)
> +#define OPCODE_ISCSI_INI_SESSION_MODIFY_CONNECTION_LOGINKEYS (20)
> +#define OPCODE_ISCSI_INI_SESSION_ADD_CONNECTION_TO_SESSION (21)
> +#define OPCODE_ISCSI_INI_SESSION_CLOSE_CONNECTION (22)
> +#define OPCODE_ISCSI_INI_SESSION_LOGIN_TARGET (23)
> +#define OPCODE_ISCSI_INI_SESSION_LOGOUT_TARGET (24)
> +#define OPCODE_ISCSI_INI_SESSION_GET_ALL_PLOGIN_TGTNAME_PORTAL (25)
> +#define OPCODE_ISCSI_INI_SESSION_QUERY_A_PERSISTENT_LOGIN (26)
> +#define OPCODE_ISCSI_INI_SESSION_QUERY_PERSISTENT_LOGINS (27)
> +#define OPCODE_ISCSI_INI_SESSION_ADD_PERSISTENT_LOGIN (28)
> +#define OPCODE_ISCSI_INI_SESSION_DELETE_PERSISTENT_LOGIN (29)
> +#define OPCODE_ISCSI_INI_SESSION_GET_ALL_SESSION_ID (30)
> +#define OPCODE_ISCSI_INI_DISCOVERY_GET_ALL_DISCOVERED_TARGET_ID (31)
> +#define OPCODE_ISCSI_INI_DISCOVERY_REPORT_ALL_TARGETS (32)
> +#define OPCODE_ISCSI_INI_DISCOVERY_REPORT_A_TARGET (33)
> +#define OPCODE_ISCSI_INI_DISCOVERY_SEND_TARGETS (34)
> +#define OPCODE_ISCSI_INI_RETRIEVE_PARSED_TARGET_INFO (35)
> +#define OPCODE_ISCSI_INI_DRIVER_REOPEN_A_SESSION (36)
> +#define OPCODE_ISCSI_INI_DRIVER_REOPEN_ALL_SESSIONS (37)
> +#define OPCODE_ISCSI_INI_DRIVER_REOPEN_A_CONN (38)
> +#define OPCODE_ISCSI_INI_DRIVER_DEL_ALL_NONPERSISTENT_SESSIONS (39)
> +#define OPCODE_ISCSI_INI_DRIVER_STORE_NONPERSISTENT_SESSIONS (40)
> +#define OPCODE_ISCSI_INI_DRIVER_LOGIN_ALL_SESSIONS (41)
> +#define OPCODE_ISCSI_INI_DRIVER_OFFLOAD_SESSION (42)
> +#define OPCODE_ISCSI_INI_DRIVER_INVALIDATE_CONNECTION (43)
> +#define OPCODE_ISCSI_INI_DRIVER_OFFLOAD_CONN (44)
> +#define OPCODE_ISCSI_INI_BTL_MAPPING_QUERY_OS_BT_INUSE (45)
> +#define OPCODE_ISCSI_INI_BTL_MAPPING_MAX_OS_SUPPORTED_BTL (46)
> +#define OPCODE_ISCSI_INI_STATS_GET_INSTANCE_STATISTICS (47)
> +#define OPCODE_ISCSI_INI_STATS_GET_LOGIN_STATISTICS (48)
> +#define OPCODE_ISCSI_INI_STATS_GET_SESSION_ATTRIBUTES (49)
> +#define OPCODE_ISCSI_INI_STATS_GET_A_SESSION_STATISTICS (50)
> +#define OPCODE_ISCSI_INI_STATS_GET_CONN_STATISTICS_PER_SESSION (51)
> +#define OPCODE_ISCSI_INI_STATS_GET_IPSEC_STATISTICS (52)
> +#define OPCODE_ISCSI_INI_BOOT_GET_BOOT_TARGET (53)
> +#define OPCODE_ISCSI_INI_BOOT_SET_BOOT_TARGET (54)
> +#define OPCODE_ISCSI_INI_BOOT_GET_BOOT_LUN (55)
> +#define OPCODE_ISCSI_INI_BOOT_SET_BOOT_LUN (56)
> +#define OPCODE_ISCSI_INI_BOOT_READ_WRITE (57)
> +#define OPCODE_ISCSI_INI_BOOT_GET_BIOS_CONFIGURATION (58)
> +#define OPCODE_ISCSI_INI_BOOT_SET_BIOS_CONFIGURATION (59)
> +#define OPCODE_ISCSI_INI_SCSI_PASS_THRU (60)
> +
> +
> +/*
> + * --- ISCSI_TGT_SUBSYSTEM_OPCODES ---
> + * Opcodes in the IOCTL_SUBSYSTEM_ISCSI_TGT subsystem.
> + */
> +#define OPCODE_ISCSI_TGT_START_LISTEN_SERVER (1)
> +#define OPCODE_ISCSI_TGT_STOP_LISTEN_SERVER (2)
> +#define OPCODE_ISCSI_TGT_GET_CONNECTION_INFO (3)
> +#define OPCODE_ISCSI_TGT_CONNECTION_REJECT (4)
> +#define OPCODE_ISCSI_TGT_OFFLOAD_CONNECTION (5)
> +#define OPCODE_ISCSI_TGT_ISNS_SEND_PACKET (6)
> +#define SUBSYSTEM_ISCSI_TGT_START_LISTEN_SERVER (7)
> +#define SUBSYSTEM_ISCSI_TGT_STOP_LISTEN_SERVER (7)
> +#define SUBSYSTEM_ISCSI_TGT_GET_CONNECTION_INFO (7)
> +#define SUBSYSTEM_ISCSI_TGT_CONNECTION_REJECT (7)
> +#define SUBSYSTEM_ISCSI_TGT_OFFLOAD_CONNECTION (7)
> +#define SUBSYSTEM_ISCSI_TGT_ISNS_SEND_PACKET (7)
> +#define OPCODE_ISCSI_TGT_INVALIDATE_CONNECTION (7)
> +#define SUBSYSTEM_ISCSI_TGT_INVALIDATE_CONNECTION (7)
> +#define SUBSYSTEM_ISCSI_TGT_ADD_IP_ADDR (7)
> +#define SUBSYSTEM_ISCSI_TGT_DELETE_IP_ADDR (7)
> +#define SUBSYSTEM_ISCSI_TGT_LIST_IP_ADDR (7)
> +#define SUBSYSTEM_ISCSI_TGT_START_ESI_LISTEN (7)
> +#define SUBSYSTEM_ISCSI_TGT_STOP_ESI_LISTEN (7)
> +#define SUBSYSTEM_ISCSI_TGT_SLP_REGISTER (7)
> +#define SUBSYSTEM_ISCSI_TGT_SLP_DEREGISTER (7)
> +#define OPCODE_ISCSI_TGT_ADD_IP_ADDR    (8)
> +#define OPCODE_ISCSI_TGT_DELETE_IP_ADDR (9)
> +#define OPCODE_ISCSI_TGT_LIST_IP_ADDR   (10)
> +#define OPCODE_ISCSI_TGT_START_ESI_LISTEN (11)
> +#define OPCODE_ISCSI_TGT_STOP_ESI_LISTEN (12)
> +#define OPCODE_ISCSI_TGT_SLP_REGISTER   (13)
> +#define OPCODE_ISCSI_TGT_SLP_DEREGISTER (14)
> +
> +
> +/*
> + * --- MILI_PTL_SUBSYSTEM_OPCODES ---
> + * Opcodes in the IOCTL_SUBSYSTEM_MILI_PTL subsystem.
> + */
> +#define OPCODE_MILI_PTL_CREATE_PORTAL   (1)
> +#define OPCODE_MILI_PTL_DELETE_PORTAL   (2)
> +#define OPCODE_MILI_PTL_CREATE_PORTAL_GROUP (3)
> +#define OPCODE_MILI_PTL_DELETE_PORTAL_GROUP (4)
> +#define OPCODE_MILI_PTL_ADD_PORTAL_TO_PORTAL_GROUP (5)
> +#define OPCODE_MILI_PTL_DELETE_PORTAL_FROM_PORTAL_GROUP (6)
> +#define OPCODE_MILI_PTL_ADD_TARGET      (7)
> +#define SUBSYSTEM_MILI_PTL_CREATE_PORTAL (8)
> +#define SUBSYSTEM_MILI_PTL_DELETE_PORTAL (8)
> +#define SUBSYSTEM_MILI_PTL_CREATE_PORTAL_GROUP (8)
> +#define SUBSYSTEM_MILI_PTL_DELETE_PORTAL_GROUP (8)
> +#define SUBSYSTEM_MILI_PTL_ADD_PORTAL_TO_PORTAL_GROUP (8)
> +#define SUBSYSTEM_MILI_PTL_DELETE_PORTAL_FROM_PORTAL_GROUP (8)
> +#define SUBSYSTEM_MILI_PTL_ADD_TARGET   (8)
> +#define OPCODE_MILI_PTL_DELETE_TARGET   (8)
> +#define SUBSYSTEM_MILI_PTL_DELETE_TARGET (8)
> +#define SUBSYSTEM_MILI_PTL_ADD_PORTAL_GROUP_TO_TARGET (8)
> +#define SUBSYSTEM_MILI_PTL_DELETE_PORTAL_GROUP_FROM_TARGET (8)
> +#define SUBSYSTEM_MILI_PTL_SET_TARGET_LOGIN_PARAMS (8)
> +#define SUBSYSTEM_MILI_PTL_START_LISTEN_SERVER (8)
> +#define SUBSYSTEM_MILI_PTL_STOP_LISTEN_SERVER (8)
> +#define SUBSYSTEM_MILI_PTL_MIB_GET_ISCSI_INSTANCE_ATTRIBUTES (8)
> +#define SUBSYSTEM_MILI_PTL_MIB_GET_ISCSI_INSTANCE_SSN_ERROR_STATS (8)
> +#define SUBSYSTEM_MILI_PTL_MIB_GET_ISCSI_TARGET_ATTRIBUTES (8)
> +#define SUBSYSTEM_MILI_PTL_MIB_GET_ISCSI_TARGET_LOGIN_LOGOUT_STATS (8)
> +#define SUBSYSTEM_MILI_PTL_MIB_GET_ISCSI_SESSION_ATTRIBUTES_AND_STATS (8)
> +#define SUBSYSTEM_MILI_PTL_MIB_GET_ISCSI_CONNECTION_ATTRIBUTES_AND_STATS (8)
> +#define SUBSYSTEM_MILI_PTL_GET_ISCSI_SESSION_LIST (8)
> +#define SUBSYSTEM_MILI_PTL_KILL_SESSION (8)
> +#define OPCODE_MILI_PTL_ADD_PORTAL_GROUP_TO_TARGET (9)
> +#define OPCODE_MILI_PTL_DELETE_PORTAL_GROUP_FROM_TARGET (10)
> +#define OPCODE_MILI_PTL_SET_TARGET_LOGIN_PARAMS (11)
> +#define OPCODE_MILI_PTL_START_LISTEN_SERVER (12)
> +#define OPCODE_MILI_PTL_STOP_LISTEN_SERVER (13)
> +#define OPCODE_MILI_PTL_MIB_GET_ISCSI_INSTANCE_ATTRIBUTES (14)
> +#define OPCODE_MILI_PTL_MIB_GET_ISCSI_INSTANCE_SSN_ERROR_STATS (15)
> +#define OPCODE_MILI_PTL_MIB_GET_ISCSI_TARGET_ATTRIBUTES (16)
> +#define OPCODE_MILI_PTL_MIB_GET_ISCSI_TARGET_LOGIN_LOGOUT_STATS (17)
> +#define OPCODE_MILI_PTL_MIB_GET_ISCSI_SESSION_ATTRIBUTES_AND_STATS (18)
> +#define OPCODE_MILI_PTL_MIB_GET_ISCSI_CONNECTION_ATTRIBUTES_AND_STATS (19)
> +#define OPCODE_MILI_PTL_GET_ISCSI_SESSION_LIST (20)
> +#define OPCODE_MILI_PTL_KILL_SESSION    (21)
> +
> +/*
> + * --- MILI_TMD_SUBSYSTEM_OPCODES ---
> + * Opcodes in the IOCTL_SUBSYSTEM_MILI_TMD subsystem.
> + */
> +#define OPCODE_MILI_TMD_ADD_TARGET      (1)
> +#define OPCODE_MILI_TMD_DELETE_TARGET   (2)
> +#define OPCODE_MILI_TMD_UPDATE_TARGET_AUTH_PARAMS (3)
> +#define OPCODE_MILI_TMD_ADD_INITIATOR   (4)
> +#define OPCODE_MILI_TMD_DELETE_INITIATOR (5)
> +#define OPCODE_MILI_TMD_UPDATE_INITIATOR_AUTH_PARAMS (6)
> +#define OPCODE_MILI_TMD_BIND_INITIATOR_TO_TARGET (7)
> +#define OPCODE_MILI_TMD_DELETE_IT_BINDING (8)
> +#define SUBSYSTEM_MILI_TMD_ADD_TARGET   (9)
> +#define SUBSYSTEM_MILI_TMD_DELETE_TARGET (9)
> +#define SUBSYSTEM_MILI_TMD_UPDATE_TARGET_AUTH_PARAMS (9)
> +#define SUBSYSTEM_MILI_TMD_ADD_INITIATOR (9)
> +#define SUBSYSTEM_MILI_TMD_DELETE_INITIATOR (9)
> +#define SUBSYSTEM_MILI_TMD_UPDATE_INITIATOR_AUTH_PARAMS (9)
> +#define SUBSYSTEM_MILI_TMD_BIND_INITIATOR_TO_TARGET (9)
> +#define SUBSYSTEM_MILI_TMD_DELETE_IT_BINDING (9)
> +#define OPCODE_MILI_TMD_ACTIVATE_TARGET (9)
> +#define SUBSYSTEM_MILI_TMD_ACTIVATE_TARGET (9)
> +#define SUBSYSTEM_MILI_TMD_DEACTIVATE_TARGET (9)
> +#define SUBSYSTEM_MILI_TMD_SET_INITIATOR_QOS (9)
> +#define OPCODE_MILI_TMD_DEACTIVATE_TARGET (10)
> +#define OPCODE_MILI_TMD_SET_INITIATOR_QOS (11)
> +
> +
> +/*
> + * --- ETH_SUBSYSTEM_OPCODES ---
> + * These opcodes are used for configuring the Ethernet interfaces. These
> + * opcodes all use the IOCTL_SUBSYSTEM_ETH subsystem code.
> + */
> +#define OPCODE_ETH_RSS_CONFIG           (1)
> +#define OPCODE_ETH_ACPI_CONFIG          (2)
> +#define SUBSYSTEM_ETH_RSS_CONFIG        (3)
> +#define SUBSYSTEM_ETH_ACPI_CONFIG       (3)
> +#define OPCODE_ETH_PROMISCUOUS          (3)
> +#define SUBSYSTEM_ETH_PROMISCUOUS       (3)
> +#define SUBSYSTEM_ETH_GET_STATISTICS    (3)
> +#define SUBSYSTEM_ETH_GET_RX_FRAG_SIZE  (3)
> +#define SUBSYSTEM_ETH_SET_RX_FRAG_SIZE  (3)
> +#define OPCODE_ETH_GET_STATISTICS       (4)
> +#define OPCODE_ETH_GET_RX_FRAG_SIZE     (5)
> +#define OPCODE_ETH_SET_RX_FRAG_SIZE     (6)
> +
> +
> +/*
> + * --- TPM_SUBSYSTEM_OPCODES ---
> + * These opcodes are used for configuring TCP protocol Module functionality.
> + * These opcodes all use the IOCTL_SUBSYSTEM_COMMON_ISCSI subsystem code.
> + */
> +#define OPCODE_TPM_CONNECTION_OFFLOAD   (1)
> +#define OPCODE_TPM_CONNECTION_UPLOAD    (2)
> +#define OPCODE_TPM_CONNECTION_UPDATE    (3)
> +#define SUBSYSTEM_TPM_CONNECTION_OFFLOAD (4)
> +#define SUBSYSTEM_TPM_CONNECTION_UPLOAD (4)
> +#define SUBSYSTEM_TPM_CONNECTION_UPDATE (4)
> +#define OPCODE_TPM_GET_STATISTICS       (4)
> +#define SUBSYSTEM_TPM_GET_STATISTICS    (4)
> +#define SUBSYSTEM_TPM_CONNECTION_QUERY  (4)
> +#define OPCODE_TPM_CONNECTION_QUERY     (5)
> +
> +/*
> + * --- PXE_UNDI_SUBSYSTEM_OPCODES ---
> + * These opcodes are used for configuring PXE and UNDI functionality.
> + * These opcodes use the IOCTL_SUBSYSTEM_PXE_UNDI subsystem code.
> + */
> +#define OPCODE_PXE_UNDI_CONTROL         (1)
> +#define OPCODE_PXE_UNDI_TRANSMIT        (2)
> +#define OPCODE_PXE_UNDI_RECEIVE         (3)
> +#define OPCODE_PXE_UNDI_GET_STATISTICS  (4)
> +#define SUBSYSTEM_PXE_UNDI_CONTROL      (5)
> +#define SUBSYSTEM_PXE_UNDI_TRANSMIT     (5)
> +#define SUBSYSTEM_PXE_UNDI_RECEIVE      (5)
> +#define SUBSYSTEM_PXE_UNDI_GET_STATISTICS (5)
> +
> +
> +/*
> + * --- MCC_STATUS_CODE ---
> + * These are the global status codes used by all subsystems
> + */
> +#define MCC_STATUS_SUCCESS              (0)	/* Indicates a successful
> +						completion of  the command */
> +#define MCC_STATUS_INSUFFICIENT_PRIVILEGES (1)	/* The client does not have
> +						sufficient privileges to
> +						execute the command */
> +#define MCC_STATUS_INVALID_PARAMETER    (2)	/* A parameter in the command
> +						was invalid. The extended
> +						status contains the index
> +						of the parameter */
> +#define MCC_STATUS_INSUFFICIENT_RESOURCES (3)	/* There are insufficient
> +						chip resources to execute
> +						the command */
> +#define MCC_STATUS_QUEUE_FLUSHING       (4)	/* The command is completing
> +						because the queue was
> +						getting flushed */
> +#define MCC_STATUS_DMA_FAILED           (5)	/* The command is completing
> +						with a DMA error */
> +
> +/*
> + * --- MGMT_ERROR_CODES ---
> + * Error Codes returned in the status field of the IOCTL response header
> + */
> +#define MGMT_STATUS_SUCCESS             (0)	/* The IOCTL completed
> +						without errors */
> +#define MGMT_STATUS_FAILED              (1)	/* Error status in the Status
> +						field of  the
> +						struct IOCTL_RESPONSE_HEADER */
> +#define MGMT_STATUS_ILLEGAL_REQUEST     (2)	/* Invalid IOCTL opcode */
> +#define MGMT_STATUS_ILLEGAL_FIELD       (3)	/* Invalid parameter in
> +						the IOCTL  payload */
> +/* The buffer provided by MILI is insufficient for Firmware/OSM to
> + * return IOCTL output. Firmware/OSM sets the buffer size requirement in
> + * the required_data_length field. Note: required_data_length must
> + * be larger than expected_data_length.
> + */
> +#define MGMT_STATUS_INSUFFICIENT_BUFFER (4)
> +/* This domain is not permitted to execute such request Applicable to
> + * BE-VM only
> + * */
> +#define MGMT_STATUS_UNAUTHORIZED_REQUEST (5)	/* This domain is not
> +						permitted to */
> +#define MGMT_STATUS_INVALID_ISNS_ADDRESS (10)
> +#define MGMT_STATUS_INVALID_IPADDR      (11)
> +#define MGMT_STATUS_INVALID_GATEWAY     (12)
> +#define MGMT_STATUS_INVALID_SUBNETMASK  (13)
> +#define MGMT_STATUS_INVALID_PREFERRED_DNS (14)
> +#define MGMT_STATUS_INVALID_ALTERNATE_DNS (15)
> +#define MGMT_STATUS_INVALID_TARGET_IPADDR (16)
> +#define MGMT_STATUS_UNRESOLVED_DNS_NAME (17)
> +#define MGMT_STATUS_INVALID_ISCSI_INI_NAME (18)
> +#define MGMT_STATUS_INVALID_ISCSI_INI_ALIAS (19)
> +#define MGMT_STATUS_TGTTBL_FULL         (20)
> +#define MGMT_STATUS_LUNTBL_FULL         (21)
> +#define MGMT_STATUS_IPSEC_NOT_SUPPORTED (22)
> +#define MGMT_STATUS_FLASHROM_SAVE_FAILED (23)
> +#define MGMT_STATUS_FLASHROM_RESTORE_FAILED (24)
> +#define MGMT_STATUS_INVALID_TCPPORT     (25)
> +#define MGMT_STATUS_ICCBINDEX_ALLOC_FAILED (26)
> +#define MGMT_STATUS_IOCTLHANDLE_ALLOC_FAILED (27)
> +#define MGMT_STATUS_INVALID_PHY_ADDR_FROM_OSM (28)	/* Invalid physical
> +							address from OSM */
> +#define MGMT_STATUS_INVALID_PHY_ADDR_LEN_FROM_OSM (29)
> +#define MGMT_STATUS_ASSERT_FAILED       (30)
> +#define MGMT_STATUS_INVALID_SESSION     (31)	/* Invalid SESSION id */
> +#define MGMT_STATUS_INVALID_CONNECTION  (32)	/* Invalid connection id */
> +#define MGMT_STATUS_BTL_PATH_EXCEEDS_OSM_LIMIT (33)
> +#define MGMT_STATUS_BTL_TGTID_EXCEEDS_OSM_LIMIT (34)
> +#define MGMT_STATUS_BTL_PATH_TGTID_OCCUPIED (35)	/* In the OSM target
> +							table the slot of the
> +							specified Path and
> +							TargetID is already
> +							occupied by another
> +							target.  */
> +#define MGMT_STATUS_BTL_NO_FREE_SLOT_PATH (36)	/* OSM can't locate a free
> +						   slot in it's target table
> +						   for the specified path ID
> +						  */
> +#define MGMT_STATUS_BTL_NO_FREE_SLOT_TGTID (37)	/* OSM can't locate a free
> +						   slot in it's target table
> +						   for the specified target ID
> +						   */
> +#define MGMT_STATUS_OSM_DEVSLOT_NOT_FOUND (38)	/* OSM can't locate the entry
> +						   in it's target table for
> +						   the specified iSCSI
> +						   SESSION/target
> +						   */
> +#define MGMT_STATUS_FLASHROM_READ_FAILED (39)
> +#define MGMT_STATUS_POLL_IOCTL_TIMEOUT  (40)	/* Polling IOCTL is timeout */
> +#define MGMT_STATUS_ERROR_ACITISCSI     (41)	/* Error returned from
> +						   ACIT-ISCSI module */
> +#define MGMT_STATUS_ERROR_ACITMAIN      (42)	/* Error returned from
> +						   ACIT-Main module */
> +/*
> + * This error indicates that ioctl buffer size is too big for either the
> + * OSM or OS to handle. In Windows, after MILI allocates the
> + * buffer, OS will forward the IOCTL request to the driver
> + * IF the IOCTL buffer size is less than / equal to the
> + * maximum IO size. When the OSM detects this situation,
> + * OSM set this status in the IOCTL header.
> + */
> +#define MGMT_STATUS_BUFFER_SIZE_EXCEED_OSM_OR_OS_LIMIT (43)
> +#define MGMT_STATUS_REBOOT_REQUIRED     (44)
> +#define MGMT_STATUS_INSUFFICIENT_TIMEOUT (45)
> +#define MGMT_STATUS_IPADDR_NOT_SET      (46)
> +#define MGMT_STATUS_IPADDR_DUP_DETECTED (47)
> +#define MGMT_STATUS_CANT_REMOVE_LAST_CONNECTION (48)
> +#define MGMT_STATUS_TARGET_NOT_FOUND    (48)
> +#define MGMT_STATUS_TARGET_BUSY         (49)
> +#define MGMT_STATUS_TGT_ERR_LISTEN_SOCKET (50)
> +#define MGMT_STATUS_TGT_ERR_BIND_SOCKET (51)
> +#define MGMT_STATUS_TGT_ERR_NO_SOCKET   (52)
> +#define MGMT_STATUS_TGT_ERR_PORTAL_NOT_FOUND (53)
> +#define MGMT_STATUS_TGT_ERR_IP_ADDR_MAX_REACHED (54)
> +#define MGMT_STATUS_TGT_ERR_ISNS_COMM_FAILED (55)
> +#define MGMT_STATUS_CANNOT_DELETE_BOOT_TARGET (56)
> +#define MGMT_STATUS_TGT_PORTAL_MODE_IN_LISTEN (57)
> +
> +
> +/*
> + * --- MGMT_ADDL_STATUS ---
> + * Values for the Additional Status field of IOCTL_RESPONSE_BUFFER. This field
> + */
> +#define MGMT_ADDI_STATUS_NO_STATUS      (0)
> +#define MGMT_ADDI_STATUS_INVALID_IPTYPE (1)
> +#define MGMT_ADDI_STATUS_IPV6_UNSUPPORTED (2)
> +#define MGMT_ADDI_STATUS_DNSTEXT_TOO_LONG (3)
> +#define MGMT_ADDI_STATUS_INVALID_INTR_ININAME (4)
> +#define MGMT_ADDI_STATUS_INVALID_TGT_ININAME (5)
> +#define MGMT_ADDI_STATUS_INVALID_ISNS_ININAME (6)
> +#define MGMT_ADDI_STATUS_INVALID_INTR_ALIAS (7)
> +#define MGMT_ADDI_STATUS_INVALID_TGT_ALIAS (8)
> +#define MGMT_ADDI_STATUS_TARGET_HANDLE_NOT_FOUND (9)
> +#define MGMT_ADDI_STATUS_SESSION_HANDLE_NOT_FOUND (10)
> +#define MGMT_ADDI_STATUS_CONNECTION_HANDLE_NOT_FOUND (11)
> +#define MGMT_ADDI_STATUS_PORTALGROUP_HANDLE_NOT_FOUND (12)
> +#define MGMT_ADDI_STATUS_PORTAL_HANDLE_NOT_FOUND (13)
> +#define MGMT_ADDI_STATUS_INVALID_INTR_PORT (14)
> +#define MGMT_ADDI_STATUS_INVALID_TGT_PORT (15)
> +#define MGMT_ADDI_STATUS_ACTIVE_SESSIONS_PRESENT (16)
> +#define MGMT_ADDI_STATUS_SESSION_ALREADY_OPENED (17)
> +#define MGMT_ADDI_STATUS_SESSION_ALREADY_CLOSED (18)
> +#define MGMT_ADDI_STATUS_DEST_HOST_UNREACHABLE (19)
> +#define MGMT_ADDI_STATUS_LOGIN_IN_PROGRESS (20)
> +#define MGMT_ADDI_STATUS_TCP_CONNECT_FAILED (21)
> +#define MGMT_ADDI_STATUS_INSUFFICIENT_RESOURCES (22)
> +#define MGMT_ADDI_STATUS_LINK_DOWN      (23)
> +#define MGMT_ADDI_STATUS_DHCP_ERROR     (24)
> +#define MGMT_ADDI_STATUS_CONNECTION_OFFLOADED (25)
> +#define MGMT_ADDI_STATUS_CONNECTION_NOT_OFFLOADED (26)
> +#define MGMT_ADDI_STATUS_CONNECTION_UPLOAD_IN_PROGRESS (27)
> +#define MGMT_ADDI_STATUS_REQUEST_REJECTED (28)	/* Used to communicate
> +						  a flush or upload/close
> +						   request on a connection
> +						   was rejected by protocol
> +						   firmware.
> +						   */
> +#define MGMT_ADDI_STATUS_INVALID_SUBSYSTEM (29)
> +#define MGMT_ADDI_STATUS_INVALID_OPCODE (30)
> +#define MGMT_ADDI_STATUS_INVALID_MAXCONNECTION_PARAM (31)
> +#define MGMT_ADDI_STATUS_INVALID_KEY    (32)
> +#define MGMT_ADDI_STATUS_PORTAL_GROUP_BOUND_TO_TARGET (33)
> +#define MGMT_ADDI_STATUS_PORTALS_BOUND_TO_PORTAL_GROUP (34) /* Unbind Portals
> +							from Portal  Group
> +							before deleting  */
> +/* The domain number in the IOCTL header
> +* is invalid or out-of-range. The domain number passed-in to the IOCTL
> +* must be <= to the number of domains enabled by the manufacturer.Check the
> +* response data from IOCTL_COMMON_GET_CNTL_ATTRIBUTES to
> +* determine the actual number of domains supported
> +*/
> +#define MGMT_ADDI_STATUS_INVALID_DOMAIN (35)
> +#define MGMT_ADDL_STATUS_TGT_CONN_RST   (36)
> +#define MGMT_ADDL_STATUS_TGT_INVALID_CONN_HANDLE (37)
> +#define MGMT_ADDL_STATUS_TGT_INVALID_CID (38)
> +#define MGMT_ADDL_STATUS_TGT_INVALID_CQID (39)
> +#define MGMT_ADDL_STATUS_TGT_INVALID_CHUTE (40)
> +#define MGMT_ADDL_STATUS_CONN_RST       (41)
> +#define MGMT_ADDL_STATUS_DUPLICATE_KEY  (42)
> +#define MGMT_ADDI_STATUS_LOGIN_INITIATOR_ERROR (43)
> +#define MGMT_ADDI_STATUS_LOGIN_AUTHENTICATION_ERROR (44)
> +#define MGMT_ADDI_STATUS_LOGIN_AUTHORIZATION_ERROR (45)
> +#define MGMT_ADDI_STATUS_LOGIN_NOT_FOUND (46)
> +#define MGMT_ADDI_STATUS_LOGIN_TARGET_REMOVED (47)
> +#define MGMT_ADDI_STATUS_LOGIN_UNSUPPORTED_VERSION (48)
> +#define MGMT_ADDI_STATUS_LOGIN_TOO_MANY_CONNECTIONS (49)
> +#define MGMT_ADDI_STATUS_LOGIN_MISSING_PARAMETER (50)
> +#define MGMT_ADDI_STATUS_LOGIN_NO_SESSION_SPANNING (51)
> +#define MGMT_ADDI_STATUS_LOGIN_SESSION_TYPE_NOT_SUPPORTED (52)
> +#define MGMT_ADDI_STATUS_LOGIN_SESSION_DOES_NOT_EXIST (53)
> +#define MGMT_ADDI_STATUS_LOGIN_INVALID_DURING_LOGIN (54)
> +#define MGMT_ADDI_STATUS_LOGIN_TARGET_ERROR (55)
> +#define MGMT_ADDI_STATUS_LOGIN_SERVICE_UNAVAILABLE (56)
> +#define MGMT_ADDI_STATUS_LOGIN_OUT_OF_RESOURCES (57)
> +#define MGMT_ADDI_STATUS_SAME_CHAP_SECRET (58)
> +#define MGMT_ADDI_STATUS_INVALID_SECRET_LENGTH (59)
> +#define MGMT_ADDI_STATUS_DUPLICATE_ENTRY (60)	/* an entry with same
> +						attribtues already  exists
> +						with a different key  */
> +#define MGMT_ADDI_STATUS_INITIATOR_HANDLE_NOT_FOUND (61)
> +#define MGMT_ADDI_STATUS_ITBINDING_HANDLE_NOT_FOUND (62)
> +#define MGMT_ADDI_STATUS_SETTINGS_MODIFIED_REBOOT_REQD (63)
> +
> +#endif /* __ioctl_opcodes_amap_h__ */
> diff --git a/drivers/message/beclib/fw/amap/ioctl_top.h b/drivers/message/beclib/fw/amap/ioctl_top.h
> new file mode 100644
> index 0000000..39b2dac
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_top.h
> @@ -0,0 +1,44 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_top_amap_h__
> +#define __ioctl_top_amap_h__
> +#include "asyncmesg.h"
> +#include "ioctl_opcodes.h"
> +#include "ioctl_defs.h"
> +#include "ioctl_types.h"
> +#include "ioctl_mcc.h"
> +#include "ioctl_common.h"
> +#include "ioctl_eth.h"
> +
> +#endif /* __ioctl_top_amap_h__ */
> diff --git a/drivers/message/beclib/fw/amap/ioctl_types.h b/drivers/message/beclib/fw/amap/ioctl_types.h
> new file mode 100644
> index 0000000..85f91ca
> --- /dev/null
> +++ b/drivers/message/beclib/fw/amap/ioctl_types.h
> @@ -0,0 +1,450 @@
> +/*
> + * Copyright (C) 2005 - 2008 ServerEngines
> + * All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or at your option any later version.
> + *
> + * 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.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, 5th Floor
> + * Boston, MA 02110-1301 USA
> + *
> + *
> + * The full GNU General Public License is included in this distribution
> + * in the file called GPL.
> + *
> + * Contact Information:
> + * [email-masked]
> + *
> + * ServerEngines
> + * 209 N. Fair Oaks Ave
> + * Sunnyvale, CA 94085
> + */
> +/*
> + * Autogenerated by srcgen version: 0127
> + */
> +#ifndef __ioctl_types_amap_h__
> +#define __ioctl_types_amap_h__
> +#include "nativedefs.h"
> +#include "ioctl_defs.h"
> +#include "host_struct.h"
> +#include "post_codes.h"
> +
> +/*
> + * --- IPVERSIONS ---
> + * Defintion for IPVersion in IP_ADDRESS_SUBNET_FORMAT and IP_ADDRESS_FORMAT
> + */
> +#define IPVERSION_V4                    (0)
> +#define IPVERSION_V6                    (1)
> +
> +/* MAC address format  */
> +struct BE_MAC_ADDRESS_FORMAT_AMAP {
> +	struct BE_UEXACT16_AMAP SizeOfStructure;
> +	struct BE_UEXACT8_AMAP MACAddress[6];
> +} SG_PACK;
> +struct MAC_ADDRESS_FORMAT_AMAP {
> +	u32 dw[2];
> +};
> +

No, a large device specific management interface using ioctl's (with no documentation)
is not going to be accepted.