[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20080515095155.531ced17@mailhost.serverengines.com>
Date: Thu, 15 May 2008 02:51:55 -0700
From: "Subbu Seetharaman" <subbus@...verengines.com>
To: netdev@...r.kernel.org
Subject: [PATCH 13/15] BE NIC driver - f/w header files
Signed-off-by: Subbu Seetharaman <subbus@...verengines.com>
---
drivers/message/beclib/fw/bmap/be_common_bmap.h | 99 +++
drivers/message/beclib/fw/bmap/ioctl_common_bmap.h | 921 ++++++++++++++++++++
drivers/message/beclib/fw/bmap/ioctl_hdr_bmap.h | 68 ++
drivers/message/beclib/fw/bmap/ioctl_types_bmap.h | 43 +
4 files changed, 1131 insertions(+), 0 deletions(-)
create mode 100644 drivers/message/beclib/fw/bmap/be_common_bmap.h
create mode 100644 drivers/message/beclib/fw/bmap/ioctl_common_bmap.h
create mode 100644 drivers/message/beclib/fw/bmap/ioctl_hdr_bmap.h
create mode 100644 drivers/message/beclib/fw/bmap/ioctl_types_bmap.h
diff --git a/drivers/message/beclib/fw/bmap/be_common_bmap.h b/drivers/message/beclib/fw/bmap/be_common_bmap.h
new file mode 100644
index 0000000..6605b1a
--- /dev/null
+++ b/drivers/message/beclib/fw/bmap/be_common_bmap.h
@@ -0,0 +1,99 @@
+/*
+ * 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:
+ * linux-drivers@...verengines.com
+ *
+ * ServerEngines
+ * 209 N. Fair Oaks Ave
+ * Sunnyvale, CA 94085
+ */
+/*
+ * Autogenerated by srcgen version: 0127
+ */
+#ifndef __be_common_bmap_h__
+#define __be_common_bmap_h__
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+#if defined(__BIG_ENDIAN)
+ /* Physical Address. */
+struct PHYS_ADDR {
+ union {
+ struct {
+ u32 lo; /* DWORD 0 */
+ u32 hi; /* DWORD 1 */
+ } SG_PACK; /* unnamed struct */
+ u32 dw[2]; /* dword union */
+ }; /* unnamed union */
+} SG_PACK ;
+
+SG_C_ASSERT(__sizeof__PHYS_ADDR, sizeof(struct PHYS_ADDR) == 8);
+
+#else
+ /* Physical Address. */
+struct PHYS_ADDR {
+ union {
+ struct {
+ u32 lo; /* DWORD 0 */
+ u32 hi; /* DWORD 1 */
+ } SG_PACK; /* unnamed struct */
+ u32 dw[2]; /* dword union */
+ }; /* unnamed union */
+} SG_PACK ;
+
+SG_C_ASSERT(__sizeof__PHYS_ADDR, sizeof(struct PHYS_ADDR) == 8);
+#endif
+
+#if defined(__BIG_ENDIAN)
+ /* Virtual Address. */
+struct VIRT_ADDR {
+ union {
+ struct {
+ u32 lo; /* DWORD 0 */
+ u32 hi; /* DWORD 1 */
+ } SG_PACK; /* unnamed struct */
+ u32 dw[2]; /* dword union */
+ }; /* unnamed union */
+} SG_PACK ;
+
+SG_C_ASSERT(__sizeof__VIRT_ADDR, sizeof(struct VIRT_ADDR) == 8);
+
+#else
+ /* Virtual Address. */
+struct VIRT_ADDR {
+ union {
+ struct {
+ u32 lo; /* DWORD 0 */
+ u32 hi; /* DWORD 1 */
+ } SG_PACK; /* unnamed struct */
+ u32 dw[2]; /* dword union */
+ }; /* unnamed union */
+} SG_PACK ;
+
+SG_C_ASSERT(__sizeof__VIRT_ADDR, sizeof(struct VIRT_ADDR) == 8);
+#endif
+
+#endif /* __be_common_bmap_h__ */
diff --git a/drivers/message/beclib/fw/bmap/ioctl_common_bmap.h b/drivers/message/beclib/fw/bmap/ioctl_common_bmap.h
new file mode 100644
index 0000000..5807736
--- /dev/null
+++ b/drivers/message/beclib/fw/bmap/ioctl_common_bmap.h
@@ -0,0 +1,921 @@
+/*
+ * 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:
+ * linux-drivers@...verengines.com
+ *
+ * ServerEngines
+ * 209 N. Fair Oaks Ave
+ * Sunnyvale, CA 94085
+ */
+/*
+ * Autogenerated by srcgen version: 0127
+ */
+#ifndef __ioctl_common_bmap_h__
+#define __ioctl_common_bmap_h__
+#include "ioctl_types_bmap.h"
+#include "ioctl_hdr_bmap.h"
+
+struct BE_LINK_STATUS {
+ u8 mac0_duplex;
+ u8 mac0_speed;
+ u8 mac1_duplex;
+ u8 mac1_speed;
+ u8 mgmt_mac_duplex;
+ u8 mgmt_mac_speed;
+ u8 active_port;
+ u8 rsvd0;
+ u8 mac0_fault;
+ u8 mac1_fault;
+ u16 rsvd1;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_170_REQUEST {
+ u32 rsvd0;
+} SG_PACK;
+
+union LINK_STATUS_QUERY_PARAMS {
+ struct BE_LINK_STATUS response;
+ struct IOCTL_COMMON_ANON_170_REQUEST request;
+} SG_PACK;
+
+/*
+ * Queries the the link status for all ports. The valid values below
+ * DO NOT indicate that a particular duplex or speed is supported by
+ * BladeEngine. These enumerations simply list all possible duplexes
+ * and speeds for any port. Consult BladeEngine product documentation
+ * for the supported parameters.
+ */
+struct IOCTL_COMMON_NTWK_LINK_STATUS_QUERY {
+ union IOCTL_HEADER header;
+ union LINK_STATUS_QUERY_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_171_REQUEST {
+ u8 type;
+ u8 port;
+ u8 mac1;
+ u8 permanent;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_172_RESPONSE {
+ struct MAC_ADDRESS_FORMAT mac;
+} SG_PACK;
+
+union NTWK_MAC_QUERY_PARAMS {
+ struct IOCTL_COMMON_ANON_171_REQUEST request;
+ struct IOCTL_COMMON_ANON_172_RESPONSE response;
+} SG_PACK;
+
+/* Queries one MAC address. */
+struct IOCTL_COMMON_NTWK_MAC_QUERY {
+ union IOCTL_HEADER header;
+ union NTWK_MAC_QUERY_PARAMS params;
+} SG_PACK;
+
+struct MAC_SET_PARAMS_IN {
+ u8 type;
+ u8 port;
+ u8 mac1;
+ u8 invalidate;
+ struct MAC_ADDRESS_FORMAT mac;
+} SG_PACK;
+
+struct MAC_SET_PARAMS_OUT {
+ u32 rsvd0;
+} SG_PACK;
+
+union MAC_SET_PARAMS {
+ struct MAC_SET_PARAMS_IN request;
+ struct MAC_SET_PARAMS_OUT response;
+} SG_PACK;
+
+/* Sets a MAC address. */
+struct IOCTL_COMMON_NTWK_MAC_SET {
+ union IOCTL_HEADER header;
+ union MAC_SET_PARAMS params;
+} SG_PACK;
+
+/* MAC address list. */
+struct NTWK_MULTICAST_MAC_LIST {
+ u8 byte[6];
+} SG_PACK;
+
+struct IOCTL_COMMON_NTWK_MULTICAST_SET_REQUEST_PAYLOAD {
+ u16 num_mac;
+ u8 promiscuous;
+ u8 rsvd0;
+ struct NTWK_MULTICAST_MAC_LIST mac[32];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_174_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_173_PARAMS {
+ struct IOCTL_COMMON_NTWK_MULTICAST_SET_REQUEST_PAYLOAD request;
+ struct IOCTL_COMMON_ANON_174_RESPONSE response;
+} SG_PACK;
+
+/*
+ * Sets multicast address hash. The MPU will merge the MAC address lists
+ * from all clients, including the networking and storage functions.
+ * This ioctl may fail if the final merged list of MAC addresses exceeds
+ * 32 entries.
+ */
+struct IOCTL_COMMON_NTWK_MULTICAST_SET {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_173_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_NTWK_VLAN_CONFIG_REQUEST_PAYLOAD {
+ u16 num_vlan;
+ u8 promiscuous;
+ u8 rsvd0;
+ u16 vlan_tag[32];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_176_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_175_PARAMS {
+ struct IOCTL_COMMON_NTWK_VLAN_CONFIG_REQUEST_PAYLOAD request;
+ struct IOCTL_COMMON_ANON_176_RESPONSE response;
+} SG_PACK;
+
+/*
+ * Sets VLAN tag filter. The MPU will merge the VLAN tag list from all
+ * clients, including the networking and storage functions. This ioctl
+ * may fail if the final vlan_tag array (from all functions) is longer
+ * than 32 entries.
+ */
+struct IOCTL_COMMON_NTWK_VLAN_CONFIG {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_175_PARAMS params;
+} SG_PACK;
+
+struct RING_DESTROY_REQUEST {
+ u16 ring_type;
+ u16 id;
+ u8 bypass_flush;
+ u8 rsvd0;
+ u16 rsvd1;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_190_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_189_PARAMS {
+ struct RING_DESTROY_REQUEST request;
+ struct IOCTL_COMMON_ANON_190_RESPONSE response;
+} SG_PACK;
+/*
+ * IOCTL for destroying any ring. The connection(s) using the ring should
+ * be quiesced before destroying the ring.
+ */
+struct IOCTL_COMMON_RING_DESTROY {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_189_PARAMS params;
+} SG_PACK;
+
+
+struct IOCTL_COMMON_ANON_195_REQUEST {
+ u16 num_pages;
+ u16 new_cq_len;
+ u32 cq_threshold;
+ struct PHYS_ADDR pages[8];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_196_RESPONSE {
+ u16 pidx_old;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_194_PARAMS {
+ struct IOCTL_COMMON_ANON_195_REQUEST request;
+ struct IOCTL_COMMON_ANON_196_RESPONSE response;
+} SG_PACK;
+
+/*
+ * IOCTL to modify select attributes of a completion queue without needing
+ * to destroy and create a new one.
+ */
+struct IOCTL_COMMON_CQ_MODIFY {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_194_PARAMS params;
+} SG_PACK;
+
+
+struct IOCTL_COMMON_ANON_201_REQUEST {
+ u16 cq_id;
+ u16 bcmc_cq_id;
+ u16 num_pages;
+ u16 rsvd0;
+ struct PHYS_ADDR pages[2];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_202_RESPONSE {
+ u16 id;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_200_PARAMS {
+ struct IOCTL_COMMON_ANON_201_REQUEST request;
+ struct IOCTL_COMMON_ANON_202_RESPONSE response;
+} SG_PACK;
+
+/*
+ * IOCTL for creating Ethernet receive ring. An ERX ring contains ETH_RX_D
+ * entries (8 bytes each). An ERX ring must be 1024 entries deep
+ * (corresponding to 2 pages).
+ */
+struct IOCTL_COMMON_ETH_RX_CREATE {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_200_PARAMS params;
+} SG_PACK;
+
+
+struct IOCTL_COMMON_ANON_210_REQUEST {
+ u16 num_pages;
+ u16 rsvd0;
+ struct PHYS_ADDR pages[8];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_211_RESPONSE {
+ u16 cid;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_209_PARAMS {
+ struct IOCTL_COMMON_ANON_210_REQUEST request;
+ struct IOCTL_COMMON_ANON_211_RESPONSE response;
+} SG_PACK;
+
+/*
+ * IOCTL for creating iSCSI WRB ring. An iSCSI WRB (transmit) ring must
+ * be at least 128 entries deep (corresponding to 1 page) and at most
+ * 2k entries deep (corresponding to 4 pages). When the connection
+ * is offloaded, the encoded ring size in the context must result in
+ * a ring fitting within the number of pages posted with this IOCTL.
+ *
+ */
+struct IOCTL_COMMON_ISCSI_WRBQ_CREATE {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_209_PARAMS params;
+} SG_PACK;
+
+struct GET_QOS_IN {
+ u32 qos_params_rsvd;
+} SG_PACK;
+
+struct GET_QOS_OUT {
+ u32 max_bits_per_second_NIC;
+ u32 max_packets_per_second_NIC;
+ u32 max_ios_per_second_iSCSI;
+ u32 max_bytes_per_second_iSCSI;
+ u16 domain_VLAN_tag;
+ u16 fabric_domain_ID;
+ u32 qos_params_oem[4];
+} SG_PACK;
+
+union GET_QOS_PARAMS {
+ struct GET_QOS_IN request;
+ struct GET_QOS_OUT response;
+} SG_PACK;
+
+/* QOS/Bandwidth settings per domain. Applicable only in VMs. */
+struct IOCTL_COMMON_GET_QOS {
+ union IOCTL_HEADER header;
+ union GET_QOS_PARAMS params;
+} SG_PACK;
+
+struct SET_QOS_IN {
+ u32 valid_flags;
+ u32 max_bits_per_second_NIC;
+ u32 max_packets_per_second_NIC;
+ u32 max_ios_per_second_iSCSI;
+ u32 max_bytes_per_second_iSCSI;
+ u16 domain_VLAN_tag;
+ u16 fabric_domain_ID;
+ u32 qos_params_oem[4];
+} SG_PACK;
+
+struct SET_QOS_OUT {
+ u32 qos_params_rsvd;
+} SG_PACK;
+
+union SET_QOS_PARAMS {
+ struct SET_QOS_IN request;
+ struct SET_QOS_OUT response;
+} SG_PACK;
+
+/* QOS/Bandwidth settings per domain. Applicable only in VMs. */
+struct IOCTL_COMMON_SET_QOS {
+ union IOCTL_HEADER header;
+ union SET_QOS_PARAMS params;
+} SG_PACK;
+
+struct SET_FRAME_SIZE_IN {
+ u32 max_tx_frame_size;
+ u32 max_rx_frame_size;
+} SG_PACK;
+
+struct SET_FRAME_SIZE_OUT {
+ u32 chip_max_tx_frame_size;
+ u32 chip_max_rx_frame_size;
+} SG_PACK;
+
+union SET_FRAME_SIZE_PARAMS {
+ struct SET_FRAME_SIZE_IN request;
+ struct SET_FRAME_SIZE_OUT response;
+} SG_PACK;
+
+/* Set frame size IOCTL. Only host domain may issue this IOCTL. */
+struct IOCTL_COMMON_SET_FRAME_SIZE {
+ union IOCTL_HEADER header;
+ union SET_FRAME_SIZE_PARAMS params;
+} SG_PACK;
+
+struct FORCE_FAILOVER_IN {
+ u32 move_to_port;
+ u32 failover_config;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_231_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_230_PARAMS {
+ struct FORCE_FAILOVER_IN request;
+ struct IOCTL_COMMON_ANON_231_RESPONSE response;
+} SG_PACK;
+
+/*
+ * Use this IOCTL to control failover in BladeEngine. It may be used
+ * to failback to a restored port or to forcibly move traffic from
+ * one port to another. It may also be used to enable or disable the
+ * automatic failover feature. This IOCTL can only be issued by domain
+ * 0.
+ */
+struct IOCTL_COMMON_FORCE_FAILOVER {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_230_PARAMS params;
+} SG_PACK;
+
+struct QUERY_MAX_IOCTL_BUFFER_SIZE_PARAMS_OUT {
+ u32 max_ioctl_buffer_size;
+} SG_PACK;
+
+/*
+ * IOCTL_QUERY_MAX_IOCTL_BUFFER_SIZE MILI uses this IOCTL to find out
+ * the maximum buffer size that can be accepted by the host OS or the
+ * OSM. During MILI initialization, MILI should send this IOCTL to
+ * find out the maximum IOCTL buffer size allowed. For all the IOCTLs
+ * in the future, MILI should not allocate a buffer larger than this
+ * value. In Windows, the OS doesn't deliver the IOCTL request when
+ * the buffer size allocated by MILI is larger than the maximum I/O
+ * size allowed by OSM.
+ */
+struct IOCTL_COMMON_QUERY_MAX_IOCTL_BUFFER_SIZE {
+ union IOCTL_HEADER header;
+ struct QUERY_MAX_IOCTL_BUFFER_SIZE_PARAMS_OUT response;
+} SG_PACK;
+
+struct FLASHROM_PARAMS {
+ u32 op_code;
+ u32 op_type;
+ u32 data_buffer_size;
+ u32 offset;
+ u8 data_buffer[4];
+} SG_PACK;
+
+struct IOCTL_COMMON_FLASHROM {
+ union IOCTL_HEADER header;
+ struct FLASHROM_PARAMS params;
+} SG_PACK;
+
+struct FLASH_ROM_INFO {
+ u8 manuf_code;
+ u8 device_code;
+ u8 id[3];
+ u8 device_size;
+ u8 device_interface[2];
+ u8 buffer_size[2];
+ u8 is_block_oriented;
+ u8 num_regions[2];
+ u8 region_size[2];
+} SG_PACK;
+
+struct SEEPROM_DATA {
+ u32 jmp_addr_for_ISM;
+ u8 seeprom_version[2];
+ u8 supported_modes;
+ u8 max_domains_supported;
+ u8 storage_MAC0_port0[6];
+ u8 storage_MAC1_port0[6];
+ u8 storage_MAC0_port1[6];
+ u8 storage_MAC1_port1[6];
+ u8 ntwk_MAC0_port0[6];
+ u8 ntwk_MAC1_port0[6];
+ u8 ntwk_MAC0_port1[6];
+ u8 ntwk_MAC1_port1[6];
+ u8 ntwk_MAC_VMs[186];
+ u8 mgmt_MAC[6];
+ u8 flash_ROM_type;
+ u8 flash_ROM_size;
+ struct FLASH_ROM_INFO flash_cfi_data;
+ u8 DDR_type;
+ u8 DDR_size;
+ u8 DDR_mode;
+ u8 xml_config;
+ u8 interface_10Gb_type;
+ u16 max_iscsi_sessions;
+ u8 rsvd0[44];
+ u8 rsvd1[4];
+ u32 emph_lev_sel_port0;
+ u32 emph_lev_sel_port1;
+ u8 xaui_vo_sel;
+ u8 xaui_state;
+ u16 rsvd2;
+ u32 xaui_eq_vector;
+ u32 hba_mtu;
+ u8 vld_mode;
+ u8 pad[171];
+ u8 ism_code[508];
+ u32 digest;
+} SG_PACK;
+
+struct SEEPROM_READ_PARAMS_OUT {
+ struct SEEPROM_DATA seeprom_data;
+} SG_PACK;
+
+union SEEPROM_READ_PARAMS {
+ struct SEEPROM_READ_PARAMS_OUT response;
+} SG_PACK;
+
+/*
+ * Use this IOCTL to retrieve BE HBA/instance specific information
+ * - Functionality (or combinations of functions) supported (NIC/iSCSI/VM/RDMA
+ * etc.) - Manufacturer assigned MAC addresses for the various functions
+ * - Flash ROM type and size
+ */
+struct IOCTL_COMMON_SEEPROM_READ {
+ union IOCTL_HEADER header;
+ union SEEPROM_READ_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_240_REQUEST {
+ u64 context;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_241_RESPONSE {
+ u64 context;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_239_PARAMS {
+ struct IOCTL_COMMON_ANON_240_REQUEST request;
+ struct IOCTL_COMMON_ANON_241_RESPONSE response;
+} SG_PACK;
+
+/*
+ * This ioctl can be used by clients as a no-operation request. Typical
+ * uses for drivers are as a heartbeat mechanism, or deferred processing
+ * catalyst. The ARM will always complete this IOCTL with a good completion.
+ * The 64-bit parameter is not touched by the ARM processor.
+ */
+struct IOCTL_COMMON_NOP {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_239_PARAMS params;
+} SG_PACK;
+
+struct NTWK_RX_FILTER_SETTINGS {
+ u8 promiscuous;
+ u8 ip_cksum;
+ u8 tcp_cksum;
+ u8 udp_cksum;
+ u8 pass_err;
+ u8 pass_ckerr;
+ u8 strip_crc;
+ u8 mcast_en;
+ u8 bcast_en;
+ u8 mcast_promiscuous_en;
+ u8 unicast_en;
+ u8 vlan_promiscuous;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_242_PARAMS {
+ struct NTWK_RX_FILTER_SETTINGS request;
+ struct NTWK_RX_FILTER_SETTINGS response;
+} SG_PACK;
+
+/*
+ * This IOCTL is used to modify the ethernet receive filter configuration.
+ * Only domain 0 network function drivers may issue this IOCTL. The
+ * applied configuration is returned in the response payload. Note:
+ * Some receive packet filter settings are global on BladeEngine and
+ * can affect both the storage and network function clients that the
+ * BladeEngine hardware and firmware serve. Additionaly, depending
+ * on the revision of BladeEngine, some ethernet receive filter settings
+ * are dependent on others. If a dependency exists between settings
+ * for the BladeEngine revision, and the IOCTL request settings do
+ * not meet the dependency requirement, the invalid settings will not
+ * be applied despite the IOCTL succeeding. For example: a driver may
+ * request to enable broadcast packets, but not enable multicast packets.
+ * On early revisions of BladeEngine, there may be no distinction between
+ * broadcast and multicast filters, so broadcast could not be enabled
+ * without enabling multicast. In this scenario, the IOCTL would still
+ * succeed, but the response payload would indicate the previously
+ * configured broadcast and multicast setting.
+ */
+struct IOCTL_COMMON_NTWK_RX_FILTER {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_242_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_244_REQUEST {
+ u32 rsvd0;
+} SG_PACK;
+
+struct IOCTL_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD {
+ u8 firmware_version_string[32];
+ u8 fw_on_flash_version_string[32];
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_243_PARAMS {
+ struct IOCTL_COMMON_ANON_244_REQUEST request;
+ struct IOCTL_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD response;
+} SG_PACK;
+
+/* This IOCTL retrieves the firmware version. */
+struct IOCTL_COMMON_GET_FW_VERSION {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_243_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_246_REQUEST {
+ u16 tx_flow_control;
+ u16 rx_flow_control;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_247_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_245_PARAMS {
+ struct IOCTL_COMMON_ANON_246_REQUEST request;
+ struct IOCTL_COMMON_ANON_247_RESPONSE response;
+} SG_PACK;
+
+/*
+ * This IOCTL is used to program BladeEngine flow control behavior.
+ * Only the host networking driver is allowed to use this IOCTL.
+ */
+struct IOCTL_COMMON_SET_FLOW_CONTROL {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_245_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_249_REQUEST {
+ u32 rsvd0;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_250_RESPONSE {
+ u16 tx_flow_control;
+ u16 rx_flow_control;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_248_PARAMS {
+ struct IOCTL_COMMON_ANON_249_REQUEST request;
+ struct IOCTL_COMMON_ANON_250_RESPONSE response;
+} SG_PACK;
+
+/* This IOCTL is used to read BladeEngine flow control settings. */
+struct IOCTL_COMMON_GET_FLOW_CONTROL {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_248_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_255_REQUEST {
+ u8 clear_log;
+ u8 num_pages;
+ u16 page_offset;
+ struct PHYS_ADDR buffer_addr[27];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_256_RESPONSE {
+ u32 log_size;
+ u32 bytes_transferred;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_254_PARAMS {
+ struct IOCTL_COMMON_ANON_255_REQUEST request;
+ struct IOCTL_COMMON_ANON_256_RESPONSE response;
+} SG_PACK;
+
+/*
+ * This IOCTL retrieves a Fault Analaysis Tool (FAT) log. The log data
+ * can be anaylzed by BladeEngine support tools to diagnose faults.
+ * Only host domains may issue this IOCTL.
+ */
+struct IOCTL_COMMON_GET_FAT {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_254_PARAMS params;
+} SG_PACK;
+
+struct ENABLE_DISABLE_DOMAINS_PARAMS_IN {
+ u8 domain_function;
+ u8 enable_disable;
+ u16 rsvd0;
+} SG_PACK;
+
+struct ENABLE_DISABLE_DOMAINS_PARAMS_OUT {
+ u32 rsvd0;
+} SG_PACK;
+
+union ENABLE_DISABLE_DOMAINS_PARAMS {
+ struct ENABLE_DISABLE_DOMAINS_PARAMS_IN request;
+ struct ENABLE_DISABLE_DOMAINS_PARAMS_OUT response;
+} SG_PACK;
+
+/*
+ * This IOCTL enables or disables a domain for NIC or iSCSI functionality.
+ * If a particular domain is enabled, management utilities like SMCLP
+ * expose a logicalHBA to the user allowing the QoS, iSCSI (iqn) name
+ * etc to be set for that domain. The domain number is specified in
+ * the IOCTL_HEADER. This IOCTL can only originate from domain 0. <break>
+ * This IOCTL may return one of the following status values in the response
+ * - MGMT_STATUS_SUCCESS - MGMT_STATUS_FAILED with additional status
+ * set to MGMT_ADDI_STATUS_INVALID_DOMAIN
+ */
+struct IOCTL_COMMON_ENABLE_DISABLE_DOMAINS {
+ union IOCTL_HEADER header;
+ union ENABLE_DISABLE_DOMAINS_PARAMS params;
+} SG_PACK;
+
+struct GET_DOMAIN_CONFIG_PARAMS_IN {
+ u8 domain_function;
+ u8 enable_disable;
+ u16 rsvd0;
+} SG_PACK;
+
+struct GET_DOMAIN_CONFIG_PARAMS_OUT {
+ u32 domain_bitmap;
+} SG_PACK;
+
+union GET_DOMAIN_CONFIG_PARAMS {
+ struct GET_DOMAIN_CONFIG_PARAMS_IN request;
+ struct GET_DOMAIN_CONFIG_PARAMS_OUT response;
+} SG_PACK;
+
+/*
+ * This IOCTL returns a bitmap indicating the current status of the
+ * NIC or iSCSI functionality for all the domains supported on a given
+ * BladeEngine. The domain number in the IOCTL header is ignored. This
+ * IOCTL can only originate from domain 0. This IOCTL will always return
+ * MGMT_STATUS_SUCCESS
+ */
+struct IOCTL_COMMON_GET_DOMAIN_CONFIG {
+ union IOCTL_HEADER header;
+ union GET_DOMAIN_CONFIG_PARAMS params;
+} SG_PACK;
+
+struct SET_VLD_CONFIG_PARAMS_IN {
+ u8 enable_disable;
+ u8 rsvd0;
+ u16 rsvd1;
+} SG_PACK;
+
+struct SET_VLD_CONFIG_PARAMS_OUT {
+ u32 rsvd0;
+} SG_PACK;
+
+union SET_VLD_CONFIG_PARAMS {
+ struct SET_VLD_CONFIG_PARAMS_IN request;
+ struct SET_VLD_CONFIG_PARAMS_OUT response;
+} SG_PACK;
+
+/*
+ * Enable/Disable Virtual Link Down (VLD) if this feature is enabled
+ * on your BladeEngine. Use IOCTL_COMMON_GET_CNTL_ATTRIBUTES to determine
+ * whether VLD can be enabled. This IOCTL can only originate from domain
+ * 0. The VLD setting applies to the entire BladeEngine and affects
+ * all NIC/iSCSI drivers.
+ */
+struct IOCTL_COMMON_SET_VLD_CONFIG {
+ union IOCTL_HEADER header;
+ union SET_VLD_CONFIG_PARAMS params;
+} SG_PACK;
+
+struct GET_VLD_CONFIG_PARAMS_IN {
+ u32 rsvd0;
+} SG_PACK;
+
+struct GET_VLD_CONFIG_PARAMS_OUT {
+ u8 enable_disable;
+ u8 rsvd0;
+ u16 rsvd1;
+} SG_PACK;
+
+union GET_VLD_CONFIG_PARAMS {
+ struct GET_VLD_CONFIG_PARAMS_IN request;
+ struct GET_VLD_CONFIG_PARAMS_OUT response;
+} SG_PACK;
+
+/*
+ * Use this IOCTL to determine whether Virtual Link Down (VLD) is currently
+ * enabled or disabled. Use IOCTL_COMMON_GET_CNTL_ATTRIBUTES to determine
+ * whether VLD can be enabled/disabled. This IOCTL can only originate
+ * from domain 0. The VLD setting applies to the entire BladeEngine
+ * and affects all NIC/iSCSI drivers.
+ */
+struct IOCTL_COMMON_GET_VLD_CONFIG {
+ union IOCTL_HEADER header;
+ union GET_VLD_CONFIG_PARAMS params;
+} SG_PACK;
+
+struct EQ_DELAY_PARAMS {
+ u32 eq_id;
+ u32 delay_in_microseconds;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_257_REQUEST {
+ u32 num_eq;
+ u32 rsvd0;
+ struct EQ_DELAY_PARAMS delay[16];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_258_RESPONSE {
+ u32 delay_resolution_in_microseconds;
+ u32 delay_max_in_microseconds;
+} SG_PACK;
+
+union MODIFY_EQ_DELAY_PARAMS {
+ struct IOCTL_COMMON_ANON_257_REQUEST request;
+ struct IOCTL_COMMON_ANON_258_RESPONSE response;
+} SG_PACK;
+
+/* This IOCTL changes the EQ delay for a given set of EQs. */
+struct IOCTL_COMMON_MODIFY_EQ_DELAY {
+ union IOCTL_HEADER header;
+ union MODIFY_EQ_DELAY_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_260_REQUEST {
+ u32 rsvd0;
+} SG_PACK;
+
+struct BE_FIRMWARE_CONFIG {
+ u16 be_config_number;
+ u16 asic_revision;
+ u32 nic_ulp_mask;
+ u32 tulp_mask;
+ u32 iscsi_ulp_mask;
+ u32 rdma_ulp_mask;
+ u32 rsvd0[4];
+ u32 eth_tx_id_start;
+ u32 eth_tx_id_count;
+ u32 eth_rx_id_start;
+ u32 eth_rx_id_count;
+ u32 tpm_wrbq_id_start;
+ u32 tpm_wrbq_id_count;
+ u32 tpm_defq_id_start;
+ u32 tpm_defq_id_count;
+ u32 iscsi_wrbq_id_start;
+ u32 iscsi_wrbq_id_count;
+ u32 iscsi_defq_id_start;
+ u32 iscsi_defq_id_count;
+ u32 rdma_qp_id_start;
+ u32 rdma_qp_id_count;
+ u32 rsvd1[8];
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_259_PARAMS {
+ struct IOCTL_COMMON_ANON_260_REQUEST request;
+ struct BE_FIRMWARE_CONFIG response;
+} SG_PACK;
+
+/*
+ * This IOCTL queries the current firmware configuration parameters.
+ * The static configuration type is defined by be_config_number. This
+ * differentiates different BladeEngine builds, such as iSCSI Initiator
+ * versus iSCSI Target. For a given static configuration, the Upper
+ * Layer Protocol (ULP) processors may be reconfigured to support different
+ * protocols. Each ULP processor supports one or more protocols. The
+ * masks indicate which processors are configured for each protocol.
+ * For a given static configuration, the number of TCP connections
+ * supported for each protocol may vary. The *_id_start and *_id_count
+ * variables define a linear range of IDs that are available for each
+ * supported protocol. The *_id_count may be used by the driver to allocate
+ * the appropriate number of connection resources. The *_id_start may
+ * be used to map the arbitrary range of IDs to a zero-based range
+ * of indices.
+ */
+struct IOCTL_COMMON_FIRMWARE_CONFIG {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_259_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_PORT_EQUALIZATION_PARAMS {
+ u32 emph_lev_sel_port0;
+ u32 emph_lev_sel_port1;
+ u8 xaui_vo_sel;
+ u8 xaui_state;
+ u16 rsvd0;
+ u32 xaui_eq_vector;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_262_REQUEST {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_261_PARAMS {
+ struct IOCTL_COMMON_ANON_262_REQUEST request;
+ struct IOCTL_COMMON_PORT_EQUALIZATION_PARAMS response;
+} SG_PACK;
+
+/*
+ * This IOCTL can be used to read XAUI equalization parameters. The
+ * ARM firmware applies default equalization parameters during initialization.
+ * These parameters may be customer-specific when derived from the
+ * SEEPROM. See SEEPROM_DATA for equalization specific fields.
+ */
+struct IOCTL_COMMON_GET_PORT_EQUALIZATION {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_261_PARAMS params;
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_264_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_263_PARAMS {
+ struct IOCTL_COMMON_PORT_EQUALIZATION_PARAMS request;
+ struct IOCTL_COMMON_ANON_264_RESPONSE response;
+} SG_PACK;
+
+/*
+ * This IOCTL can be used to set XAUI equalization parameters. The ARM
+ * firmware applies default equalization parameters during initialization.
+ * These parameters may be customer-specific when derived from the
+ * SEEPROM. See SEEPROM_DATA for equalization specific fields.
+ */
+struct IOCTL_COMMON_SET_PORT_EQUALIZATION {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_263_PARAMS params;
+} SG_PACK;
+
+struct BE_RED_CHUTE_PARAMETERS {
+ u8 enable;
+ u8 w1;
+ u8 w2;
+ u8 slope;
+ u8 mtu_integer;
+ u8 mtu_exponent;
+ u16 rsvd0;
+ u16 min_pbuf;
+ u16 max_pbuf;
+} SG_PACK;
+
+struct BE_RED_PARAMETERS {
+ struct BE_RED_CHUTE_PARAMETERS chute[3];
+} SG_PACK;
+
+struct IOCTL_COMMON_ANON_266_RESPONSE {
+ u32 rsvd0;
+} SG_PACK;
+
+union IOCTL_COMMON_ANON_265_PARAMS {
+ struct BE_RED_PARAMETERS request;
+ struct IOCTL_COMMON_ANON_266_RESPONSE response;
+} SG_PACK;
+
+/*
+ * This IOCTL configures the Random Early Discard (RED) functionality
+ * for the PCI function. Only the chutes owned by the given PCI function
+ * are configured. The other chutes are ignored.
+ */
+struct IOCTL_COMMON_RED_CONFIG {
+ union IOCTL_HEADER header;
+ union IOCTL_COMMON_ANON_265_PARAMS params;
+} SG_PACK;
+
+#endif /* __ioctl_common_bmap_h__ */
diff --git a/drivers/message/beclib/fw/bmap/ioctl_hdr_bmap.h b/drivers/message/beclib/fw/bmap/ioctl_hdr_bmap.h
new file mode 100644
index 0000000..a028025
--- /dev/null
+++ b/drivers/message/beclib/fw/bmap/ioctl_hdr_bmap.h
@@ -0,0 +1,68 @@
+/*
+ * 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:
+ * linux-drivers@...verengines.com
+ *
+ * ServerEngines
+ * 209 N. Fair Oaks Ave
+ * Sunnyvale, CA 94085
+ */
+/*
+ * Autogenerated by srcgen version: 0127
+ */
+#ifndef __ioctl_hdr_bmap_h__
+#define __ioctl_hdr_bmap_h__
+
+struct IOCTL_REQUEST_HEADER {
+ u8 opcode;
+ u8 subsystem;
+ u8 port_number;
+ u8 domain;
+ u32 timeout;
+ u32 request_length;
+ u32 rsvd0;
+} SG_PACK;
+
+struct IOCTL_RESPONSE_HEADER {
+ u8 opcode;
+ u8 subsystem;
+ u8 rsvd0;
+ u8 domain;
+ u8 status;
+ u8 additional_status;
+ u16 rsvd1;
+ u32 response_length;
+ u32 actual_response_length;
+} SG_PACK;
+
+/*
+ * The firmware/driver overwrites the input IOCTL_REQUEST_HEADER with
+ * the output IOCTL_RESPONSE_HEADER.
+ */
+union IOCTL_HEADER {
+ struct IOCTL_REQUEST_HEADER request;
+ struct IOCTL_RESPONSE_HEADER response;
+} SG_PACK;
+
+#endif /* __ioctl_hdr_bmap_h__ */
diff --git a/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h b/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h
new file mode 100644
index 0000000..055db83
--- /dev/null
+++ b/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h
@@ -0,0 +1,43 @@
+/*
+ * 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:
+ * linux-drivers@...verengines.com
+ *
+ * ServerEngines
+ * 209 N. Fair Oaks Ave
+ * Sunnyvale, CA 94085
+ */
+/*
+ * Autogenerated by srcgen version: 0127
+ */
+#ifndef __ioctl_types_bmap_h__
+#define __ioctl_types_bmap_h__
+
+/* MAC address format */
+struct MAC_ADDRESS_FORMAT {
+ u16 SizeOfStructure;
+ u8 MACAddress[6];
+} SG_PACK;
+
+#endif /* __ioctl_types_bmap_h__ */
--
1.5.5
___________________________________________________________________________________
This message, together with any attachment(s), contains confidential and proprietary information of
ServerEngines Corporation and is intended only for the designated recipient(s) named above. Any unauthorized
review, printing, retention, copying, disclosure or distribution is strictly prohibited. If you are not the
intended recipient of this message, please immediately advise the sender by reply email message and
delete all copies of this message and any attachment(s). Thank you.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists