lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Date:	Sat, 16 Feb 2008 18:54:17 -0800
From:	"Subbu Seetharaman" <subbus@...verengines.com>
To:	netdev@...r.kernel.org
Subject: [PATHCH 12/16]  ServerEngines 10Gb NIC driver

F/W header files.

-------------------
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/ioctl_types_bmap.h	2008-02-14 15:23:07.829202544 +0530
@@ -0,0 +1,521 @@
+/*
+ * 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__
+#include "setypes.h"
+#include "host_struct_bmap.h"
+#include "post_codes_bmap.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+/* MAC address format  */
+typedef struct _MAC_ADDRESS_FORMAT {
+	u16 SizeOfStructure;
+	u8 MACAddress[6];
+} SG_PACK MAC_ADDRESS_FORMAT, *PMAC_ADDRESS_FORMAT;
+
+/* IP address format - handles both IPv4 and IPv6  */
+typedef struct _IP_ADDRESS_FORMAT {
+	u16 SizeOfStructure;
+	u8 Reserved;
+	u8 IPVersion;
+	u8 IPAddress[16];
+	u32 rsvd0;
+} SG_PACK IP_ADDRESS_FORMAT, *PIP_ADDRESS_FORMAT;
+
+/* IP address and Subnet Mask format  */
+typedef struct _IP_ADDRESS_SUBNET_FORMAT {
+	u16 SizeOfStructure;
+	u8 Reserved;
+	u8 IPVersion;
+	u8 IPAddress[16];
+	u8 SubNetMask[16];
+	u32 rsvd0;
+} SG_PACK IP_ADDRESS_SUBNET_FORMAT, *PIP_ADDRESS_SUBNET_FORMAT;
+
+/* WWN (Fibre Channel) Format  */
+typedef struct _WWN_ADDRESS_FORMAT {
+	u16 SizeOfStructure;
+	u16 Reserved;
+	u8 WWN[8];
+	u32 rsvd0;
+} SG_PACK WWN_ADDRESS_FORMAT, *PWWN_ADDRESS_FORMAT;
+
+/* URL or World Wide Unique ID Format  */
+typedef struct _URL_ADDRESS_FORMAT {
+	u16 SizeOfStructure;
+	u16 Reserved;
+	u8 URL[256];
+	u32 rsvd0;
+} SG_PACK URL_ADDRESS_FORMAT, *PURL_ADDRESS_FORMAT;
+
+typedef struct _MGMT_CHAP_NAME_SECRET {
+	u8 chap_name[256];
+	u8 secret[16];
+} SG_PACK MGMT_CHAP_NAME_SECRET, *PMGMT_CHAP_NAME_SECRET;
+
+typedef struct _MGMT_CHAP_FORMAT {
+	u32 flags;
+	u8 intr_chap_name[256];
+	u8 intr_secret[16];
+	u8 target_chap_name[256];
+	u8 target_secret[16];
+} SG_PACK MGMT_CHAP_FORMAT, *PMGMT_CHAP_FORMAT;
+
+typedef union _MGMT_CHAP_SRP_FORMAT {
+	MGMT_CHAP_FORMAT chap;
+} SG_PACK MGMT_CHAP_SRP_FORMAT, *PMGMT_CHAP_SRP_FORMAT;
+
+typedef struct _MGMT_AUTH_METHOD_FORMAT {
+	u8 auth_method_type;
+	u8 padding[3];
+	MGMT_CHAP_SRP_FORMAT chap_srp_format;
+} SG_PACK MGMT_AUTH_METHOD_FORMAT, *PMGMT_AUTH_METHOD_FORMAT;
+
+typedef struct _MGMT_CONN_LOGIN_OPTIONS {
+	u8 flags;
+	u8 header_digest;
+	u8 data_digest;
+	u8 rsvd0;
+	u32 max_recv_datasegment_len_ini;
+	u32 max_recv_datasegment_len_tgt;
+	u32 tcp_mss;
+	u32 tcp_window_size;
+	MGMT_AUTH_METHOD_FORMAT auth_data;
+} SG_PACK MGMT_CONN_LOGIN_OPTIONS, *PMGMT_CONN_LOGIN_OPTIONS;
+
+typedef struct _MGMT_SESSION_LOGIN_OPTIONS {
+	u8 flags;
+	u8 error_recovery_level;
+	u16 rsvd0;
+	u32 first_burst_length;
+	u32 max_burst_length;
+	u16 max_connections;
+	u16 max_outstanding_r2t;
+	u16 default_time2wait;
+	u16 default_time2retain;
+} SG_PACK MGMT_SESSION_LOGIN_OPTIONS, *PMGMT_SESSION_LOGIN_OPTIONS;
+
+typedef struct _MGMT_TARGET_LOGIN_OPTIONS {
+	MGMT_SESSION_LOGIN_OPTIONS sess_login_opts;
+	u8 conn_flags;
+	u8 data_digest;
+	u8 header_digest;
+	u8 rsvd0;
+	u32 max_recv_datasegment_len_tgt;
+} SG_PACK MGMT_TARGET_LOGIN_OPTIONS, *PMGMT_TARGET_LOGIN_OPTIONS;
+
+typedef struct _MGMT_LOGIN_OPTIONS {
+	MGMT_SESSION_LOGIN_OPTIONS sess_login_opts;
+	MGMT_CONN_LOGIN_OPTIONS conn_login_opts;
+} SG_PACK MGMT_LOGIN_OPTIONS, *PMGMT_LOGIN_OPTIONS;
+
+typedef struct _MGMT_CONN_INFO {
+	u32 connection_handle;
+	u32 connection_status;
+	u16 src_port;
+	u16 dest_port;
+	u16 dest_port_redirected;
+	u16 cid;
+	u32 estimated_throughput;
+	IP_ADDRESS_FORMAT src_ipaddr;
+	IP_ADDRESS_FORMAT dest_ipaddr;
+	IP_ADDRESS_FORMAT dest_ipaddr_redirected;
+	MGMT_CONN_LOGIN_OPTIONS negotiated_login_options;
+} SG_PACK MGMT_CONN_INFO, *PMGMT_CONN_INFO;
+
+typedef struct _MGMT_SESSION_INFO {
+	u32 session_handle;
+	u32 status;
+	u8 isid[6];
+	u16 tsih;
+	u32 session_flags;
+	u16 conn_count;
+	u16 pad;
+	u8 target_name[224];
+	u8 initiator_iscsiname[224];
+	MGMT_SESSION_LOGIN_OPTIONS negotiated_login_options;
+	MGMT_CONN_INFO conn_list[1];
+} SG_PACK MGMT_SESSION_INFO, *PMGMT_SESSION_INFO;
+
+typedef struct _CONNECTION_DATA {
+	u32 connection_handle;
+	u32 conn_status;
+	u32 conn_iscsi_cid;
+	u32 estimated_throughput;
+} SG_PACK CONNECTION_DATA, *PCONNECTION_DATA;
+
+typedef struct _MGMT_CONN_LB_INFO {
+	u32 session_handle;
+	u16 conn_count;
+	u16 pad;
+	CONNECTION_DATA conn_list[1];
+} SG_PACK MGMT_CONN_LB_INFO, *PMGMT_CONN_LB_INFO;
+
+typedef struct _MGMT_LUN_MAPPING {
+	u8 lun[8];
+	u16 os_lun;
+	u8 boot_order;
+	u8 pad1;
+	u32 pad2;
+} SG_PACK MGMT_LUN_MAPPING, *PMGMT_LUN_MAPPING;
+
+typedef struct _MGMT_BTL_MAPPING {
+	u32 session_handle;
+	u32 session_status;
+	u32 session_flags;
+	u8 dev_addr_mode;
+	u8 flags;
+	u16 os_bus;
+	u16 os_target;
+	u16 lun_count;
+	MGMT_LUN_MAPPING lun_mapping[1];
+} SG_PACK MGMT_BTL_MAPPING, *PMGMT_BTL_MAPPING;
+
+typedef struct _MGMT_OS_BT {
+	u16 os_bus;
+	u16 os_target;
+	u32 session_handle;
+} SG_PACK MGMT_OS_BT, *PMGMT_OS_BT;
+
+typedef struct _MGMT_PORTAL {
+	IP_ADDRESS_FORMAT ip_address;
+	u16 port_number;
+	u16 flags;
+} SG_PACK MGMT_PORTAL, *PMGMT_PORTAL;
+
+typedef struct _MGMT_PERSISTENT_LOGIN {
+	u8 target_name[224];
+	u32 target_id;
+	u32 flags;
+	u32 iscsi_security_flags;
+	MGMT_PORTAL portal;
+	MGMT_LOGIN_OPTIONS specified_login_options;
+	MGMT_BTL_MAPPING btl_mapping;
+} SG_PACK MGMT_PERSISTENT_LOGIN, *PMGMT_PERSISTENT_LOGIN;
+
+typedef struct _MGMT_TGTID_PORTAL {
+	u32 target_id;
+	MGMT_PORTAL portal;
+} SG_PACK MGMT_TGTID_PORTAL, *PMGMT_TGTID_PORTAL;
+
+typedef struct _MGMT_SLP_PARAMS {
+	u16 flags;
+	u16 rsvd0;
+	u8 scopes[256];
+	u8 querylist[256];
+	u32 multicast_maxwait;
+	u32 multicast_timeout[5];
+	u32 multicast_ttl;
+} SG_PACK MGMT_SLP_PARAMS, *PMGMT_SLP_PARAMS;
+
+typedef struct _MGMT_ISNS_SERVER {
+	IP_ADDRESS_FORMAT ipaddr;
+	u16 tcp_port;
+	u16 udp_port;
+} SG_PACK MGMT_ISNS_SERVER, *PMGMT_ISNS_SERVER;
+
+typedef union _MGMT_ISNS_ENTITY {
+	u8 initiator_iscsiname[224];
+	u8 isns_entity_name[224];
+} SG_PACK MGMT_ISNS_ENTITY, *PMGMT_ISNS_ENTITY;
+
+typedef struct _MGMT_ISNS_PARAMS {
+	u16 flags;
+	u16 rsvd0;
+	MGMT_ISNS_ENTITY entity;
+	u32 srv_count;
+	MGMT_ISNS_SERVER srv_list[4];
+} SG_PACK MGMT_ISNS_PARAMS, *PMGMT_ISNS_PARAMS;
+
+typedef struct _MGMT_PORTAL_ENTRY {
+	MGMT_PORTAL portal;
+	u32 iscsi_security_flags;
+	u32 preshared_keysize;
+	u8 preshared_key[256];
+	u8 isns_sym_name[256];
+} SG_PACK MGMT_PORTAL_ENTRY, *PMGMT_PORTAL_ENTRY;
+
+typedef struct _MGMT_PORTAL_GROUP {
+	u16 pg_tag;
+	u16 portal_count;
+	MGMT_PORTAL_ENTRY portal_list[1];
+} SG_PACK MGMT_PORTAL_GROUP, *PMGMT_PORTAL_GROUP;
+
+typedef struct _MGMT_TARGET_INFO {
+	u32 target_id;
+	u8 target_name[224];
+	u8 target_alias[32];
+	u32 pg_count;
+	MGMT_PORTAL_GROUP pg_list[1];
+} SG_PACK MGMT_TARGET_INFO, *PMGMT_TARGET_INFO;
+
+typedef struct _MGMT_DNS_SERVERS {
+	IP_ADDRESS_FORMAT preferred_dns_server;
+	IP_ADDRESS_FORMAT alternate_dns_server;
+} SG_PACK MGMT_DNS_SERVERS, *PMGMT_DNS_SERVERS;
+
+typedef MGMT_DNS_SERVERS DNS_SERVERS;
+
+typedef struct _IP_ADDRESS_VLAN_FORMAT {
+	IP_ADDRESS_SUBNET_FORMAT ip_address_subnet;
+	u8 vlan_priority_valid;
+	u8 rsvd0;
+	u16 vlan_priority;
+} SG_PACK IP_ADDRESS_VLAN_FORMAT, *PIP_ADDRESS_VLAN_FORMAT;
+
+typedef struct _TCPIP_CONFIGURATION {
+	DNS_SERVERS dns_servers;
+	IP_ADDRESS_FORMAT default_gateway_address;
+	u8 use_link_local_address;
+	u8 dhcp_flags;
+	u8 use_dhcp_for_dns;
+	u8 supported_ipversions;
+	u8 rsvd0;
+	u8 rsvd1;
+	u8 rsvd2;
+	u8 ipaddress_count;
+	IP_ADDRESS_VLAN_FORMAT ipaddress_vlan_list[1];
+} SG_PACK TCPIP_CONFIGURATION, *PTCPIP_CONFIGURATION;
+
+typedef struct _MGMT_NIC_PORT_INFO {
+	u32 speed;
+	u32 max_speed;
+	u32 link_state;
+	u32 max_frame_size;
+	MAC_ADDRESS_FORMAT mac_address;
+} SG_PACK MGMT_NIC_PORT_INFO, *PMGMT_NIC_PORT_INFO;
+
+typedef struct _MGMT_HBA_ATTRIBUTES {
+	u8 flashrom_version_string[32];
+	u8 manufacturer_name[32];
+	u8 rsvd0[28];
+	u32 default_extended_timeout;
+	u8 controller_model_number[32];
+	u8 controller_description[64];
+	u8 controller_serial_number[32];
+	u8 ip_version_string[32];
+	u8 firmware_version_string[32];
+	u8 bios_version_string[32];
+	u8 redboot_version_string[32];
+	u8 driver_version_string[32];
+	u8 fw_on_flash_version_string[32];
+	u32 functionalities_supported;
+	u16 max_cdblength;
+	u8 asic_revision;
+	u8 generational_guid[16];
+	u8 hba_port_count;
+	u16 default_link_down_timeout;
+	u8 iscsi_ver_min_max;
+	u8 multifunction_device;
+	u8 cache_vaild;
+	u8 hba_status;
+	u8 max_domains_supported;
+	u8 VLD_status;
+	u32 firmware_post_status;
+	u32 hba_mtu;
+} SG_PACK MGMT_HBA_ATTRIBUTES, *PMGMT_HBA_ATTRIBUTES;
+
+typedef struct _MGMT_CONTROLLER_ATTRIBUTES {
+	MGMT_HBA_ATTRIBUTES hba_attribs;
+	u16 pci_vendor_id;
+	u16 pci_device_id;
+	u16 pci_sub_vendor_id;
+	u16 pci_sub_system_id;
+	u8 pci_bus_number;
+	u8 pci_device_number;
+	u8 pci_function_number;
+	u8 interface_type;
+	u64 unique_identifier;
+} SG_PACK MGMT_CONTROLLER_ATTRIBUTES, *PMGMT_CONTROLLER_ATTRIBUTES;
+
+typedef struct _FIS_DIR_ENTRY {
+	u8 name[16];
+	u32 flash_addr;
+	u32 mem_addr;
+	u32 length;
+	u32 entry;
+	u32 data_length;
+} SG_PACK FIS_DIR_ENTRY, *PFIS_DIR_ENTRY;
+
+typedef struct _IMAGE_INFO_T {
+	u32 ImageId;
+	u32 ImageOffset;
+	u32 ImageLength;
+	u32 ImageChecksum;
+	u32 ImageVersion;
+} SG_PACK IMAGE_INFO_T, *PIMAGE_INFO_T;
+
+typedef struct _CONTROLLER_ID_T {
+	u32 Vendor;
+	u32 Device;
+	u32 SubVendor;
+	u32 SubDevice;
+} SG_PACK CONTROLLER_ID_T, *PCONTROLLER_ID_T;
+
+typedef struct _FILE_HEADER_T {
+	u8 FH_Signature[32];
+	u32 FH_Checksum;
+	u32 FH_Antidote;
+	CONTROLLER_ID_T FH_ContrlId;
+	u32 FH_FileLen;
+	u32 FH_ChunkNum;
+	u32 FH_TotalChunks;
+	u32 FH_NumOfImgs;
+	u32 FH_Build;
+} SG_PACK FILE_HEADER_T, *PFILE_HEADER_T;
+
+typedef struct _FLASHDIR_HEADER_TYPE {
+	u32 flashdir_format_rev;
+	u32 flashwide_checksum;
+	u32 flashwide_antidote;
+	u32 build_number;
+	u8 UFIIdentifierString[64];
+	u32 active_entry_mask;
+	u32 valid_entry_mask;
+	u32 original_content_mask;
+	u32 rsvd0;
+	u32 rsvd1;
+	u32 rsvd2;
+	u32 rsvd3;
+	u32 rsvd4;
+} SG_PACK FLASHDIR_HEADER_TYPE, *PFLASHDIR_HEADER_TYPE;
+
+/* Entry Type Definitions  */
+typedef struct _FLASHDIR_ENTRY_TYPE {
+	u32 entry_type;
+	u32 offset;
+	u32 pad_size;
+	u32 image_size;
+	u32 entry_checksum;
+	u32 entry_point;
+	u32 future_use1;
+	u32 future_use2;
+	u8 version_data[32];
+} SG_PACK FLASHDIR_ENTRY_TYPE, *PFLASHDIR_ENTRY_TYPE;
+
+/* Definition of the directory as a whole  */
+typedef struct _FLASHDIR_TYPE {
+	u8 flashdir_cookie[32];
+	FLASHDIR_HEADER_TYPE flashdir_header;
+	FLASHDIR_ENTRY_TYPE flashdir_entry[32];
+} SG_PACK FLASHDIR_TYPE, *PFLASHDIR_TYPE;
+
+typedef struct _MGMT_BUS_ADDRESS32 {
+	u32 address_lo;
+	u32 address_hi;
+} SG_PACK MGMT_BUS_ADDRESS32, *PMGMT_BUS_ADDRESS32;
+
+typedef struct _MGMT_BUS_ADDRESS64 {
+	u64 address;
+} SG_PACK MGMT_BUS_ADDRESS64, *PMGMT_BUS_ADDRESS64;
+
+typedef union _IOCTL_TYPES_ANON_168_U {
+	MGMT_BUS_ADDRESS32 a32;
+	MGMT_BUS_ADDRESS64 a64;
+} SG_PACK IOCTL_TYPES_ANON_168_U, *PIOCTL_TYPES_ANON_168_U;
+
+typedef struct _MGMT_BUS_ADDRESS {
+	IOCTL_TYPES_ANON_168_U u;
+} SG_PACK MGMT_BUS_ADDRESS, *PMGMT_BUS_ADDRESS;
+
+typedef struct _MGMT_SG_ELEMENT {
+	MGMT_BUS_ADDRESS address;
+	u32 length;
+	u32 offset;
+} SG_PACK MGMT_SG_ELEMENT, *PMGMT_SG_ELEMENT;
+
+typedef struct _MGMT_SG_TABLE {
+	u32 sg_count;
+	u32 rsvd0;
+	MGMT_SG_ELEMENT sg_list[1];
+} SG_PACK MGMT_SG_TABLE, *PMGMT_SG_TABLE;
+
+/* Template header used in the offload IOCTLs. */
+typedef union _MPU_TEMPLATE_HEADER {
+	u32 rsvd0[14];		/* DWORDS 0 to 13 */
+	u32 rsvd1[15];		/* DWORDS 14 to 28 */
+	u32 rsvd2[16];		/* DWORDS 29 to 44 */
+	u32 rsvd3[17];		/* DWORDS 45 to 61 */
+	u32 rsvd4[32];
+} SG_PACK MPU_TEMPLATE_HEADER, *PMPU_TEMPLATE_HEADER;
+
+typedef struct _IOCTL_TYPES_ANON_169_RSVD {
+	u32 rsvd0:1;		/* DWORD 0 */
+	u32 rsvd1:28;		/* DWORD 0 */
+} SG_PACK IOCTL_TYPES_ANON_169_RSVD, *PIOCTL_TYPES_ANON_169_RSVD;
+
+/*
+ *  This structure defines a single offloaded connection entry in the
+ *  Offload Connection  Table.
+ */
+typedef struct _MPU_OFFLOAD_CXN_ENTRY {
+	u32 srcAddr;		/* DWORD 0 */
+	u32 dstAddr;		/* DWORD 1 */
+	u32 srcPort:16;		/* DWORD 2 */
+	u32 dstPort:16;		/* DWORD 2 */
+	u32 ct:2;		/* DWORD 3 */
+	u32 rsvd0:29;		/* DWORD 3 */
+	u32 valid:1;		/* DWORD 3 */
+} SG_PACK MPU_OFFLOAD_CXN_ENTRY, *PMPU_OFFLOAD_CXN_ENTRY;
+
+typedef struct _ARP_TABLE_ENTRY {
+	IP_ADDRESS_FORMAT ip_address;
+	MAC_ADDRESS_FORMAT mac_address;
+	u32 arp_flags;
+	u32 rsvd0;
+} SG_PACK ARP_TABLE_ENTRY, *PARP_TABLE_ENTRY;
+
+typedef struct _ROUTE_TABLE_ENTRY {
+	IP_ADDRESS_SUBNET_FORMAT ip_address_subnet;
+	IP_ADDRESS_FORMAT next_hop;
+} SG_PACK ROUTE_TABLE_ENTRY, *PROUTE_TABLE_ENTRY;
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __ioctl_types_bmap_h__ */
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/etx_context_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/etx_context_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/etx_context_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/etx_context_bmap.h	2008-02-14 15:23:07.829202544 +0530
@@ -0,0 +1,118 @@
+/*
+ * 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 __etx_context_bmap_h__
+#define __etx_context_bmap_h__
+#include "setypes.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* ETX ring context structure. */
+typedef struct _ETX_CONTEXT {
+	u32 rsvd1:16;		/* DWORD 0 */
+	u32 rsvd0:5;		/* DWORD 0 */
+	u32 tx_cidx:11;		/* DWORD 0 */
+	u32 cq_id_send:10;	/* DWORD 1 */
+	u32 pd_id_not_valid:1;	/* DWORD 1 */
+	u32 pd_id:5;		/* DWORD 1 */
+	u32 tx_ring_size:4;	/* DWORD 1 */
+	u32 rsvd2:1;		/* DWORD 1 */
+	u32 tx_pidx:11;		/* DWORD 1 */
+	u32 rsvd3[1];		/* DWORDS 2 to 2 */
+	u32 rsvd4[1];		/* DWORDS 3 to 3 */
+	u32 cur_bytes;		/* DWORD 4 */
+	u32 max_bytes;		/* DWORD 5 */
+	u32 time_stamp;		/* DWORD 6 */
+	u32 rsvd6:20;		/* DWORD 7 */
+	u32 func:1;		/* DWORD 7 */
+	u32 rsvd5:11;		/* DWORD 7 */
+	u32 cur_txd_count;	/* DWORD 8 */
+	u32 max_txd_count;	/* DWORD 9 */
+	u32 rsvd7[1];		/* DWORDS 10 to 10 */
+	u32 rsvd8[1];		/* DWORDS 11 to 11 */
+	u32 rsvd9[1];		/* DWORDS 12 to 12 */
+	u32 rsvd10[1];		/* DWORDS 13 to 13 */
+	u32 rsvd11[1];		/* DWORDS 14 to 14 */
+	u32 rsvd12[1];		/* DWORDS 15 to 15 */
+} SG_PACK ETX_CONTEXT, *PETX_CONTEXT;
+
+#else
+   /* ETX ring context structure. */
+typedef struct _ETX_CONTEXT {
+	u32 tx_cidx:11;		/* DWORD 0 */
+	u32 rsvd0:5;		/* DWORD 0 */
+	u32 rsvd1:16;		/* DWORD 0 */
+	u32 tx_pidx:11;		/* DWORD 1 */
+	u32 rsvd2:1;		/* DWORD 1 */
+	u32 tx_ring_size:4;	/* DWORD 1 */
+	u32 pd_id:5;		/* DWORD 1 */
+	u32 pd_id_not_valid:1;	/* DWORD 1 */
+	u32 cq_id_send:10;	/* DWORD 1 */
+	u32 rsvd3[1];		/* DWORDS 2 to 2 */
+	u32 rsvd4[1];		/* DWORDS 3 to 3 */
+	u32 cur_bytes;		/* DWORD 4 */
+	u32 max_bytes;		/* DWORD 5 */
+	u32 time_stamp;		/* DWORD 6 */
+	u32 rsvd5:11;		/* DWORD 7 */
+	u32 func:1;		/* DWORD 7 */
+	u32 rsvd6:20;		/* DWORD 7 */
+	u32 cur_txd_count;	/* DWORD 8 */
+	u32 max_txd_count;	/* DWORD 9 */
+	u32 rsvd7[1];		/* DWORDS 10 to 10 */
+	u32 rsvd8[1];		/* DWORDS 11 to 11 */
+	u32 rsvd9[1];		/* DWORDS 12 to 12 */
+	u32 rsvd10[1];		/* DWORDS 13 to 13 */
+	u32 rsvd11[1];		/* DWORDS 14 to 14 */
+	u32 rsvd12[1];		/* DWORDS 15 to 15 */
+} SG_PACK ETX_CONTEXT, *PETX_CONTEXT;
+
+#endif
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __etx_context_bmap_h__ */
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/host_struct_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/host_struct_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/host_struct_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/host_struct_bmap.h	2008-02-14 15:23:07.830202392 +0530
@@ -0,0 +1,254 @@
+/*
+ * 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 __host_struct_bmap_h__
+#define __host_struct_bmap_h__
+#include "setypes.h"
+#include "be_cm_bmap.h"
+#include "be_common_bmap.h"
+#include "descriptors_bmap.h"
+#include "iscsi_initiator_host_struct_bmap.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Queue Entry Definition for all 4 byte event queue types. */
+typedef struct _EQ_ENTRY {
+	u32 ResourceID:16;	/* DWORD 0 */
+	u32 MinorCode:12;	/* DWORD 0 */
+	u32 MajorCode:3;	/* DWORD 0 */
+	u32 Valid:1;		/* DWORD 0 */
+} SG_PACK EQ_ENTRY, *PEQ_ENTRY;
+
+#else
+   /* Queue Entry Definition for all 4 byte event queue types. */
+typedef struct _EQ_ENTRY {
+	u32 Valid:1;		/* DWORD 0 */
+	u32 MajorCode:3;	/* DWORD 0 */
+	u32 MinorCode:12;	/* DWORD 0 */
+	u32 ResourceID:16;	/* DWORD 0 */
+} SG_PACK EQ_ENTRY, *PEQ_ENTRY;
+
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /*
+    *  Work request block that the driver issues to the chip for Ethernet
+    *  transmissions.  All control fields must be valid in each WRB for
+    *  a message. The controller, as  specified by the flags, optionally
+    *  writes an entry to the Completion Ring and  generate an event.
+    *
+    */
+typedef struct _ETH_WRB {
+	u32 frag_pa_hi;		/* DWORD 0 */
+	u32 frag_pa_lo;		/* DWORD 1 */
+	u32 lso_mss:14;		/* DWORD 2 */
+	u32 hash_val:3;		/* DWORD 2 */
+	u32 dbg:3;		/* DWORD 2 */
+	u32 vlan:1;		/* DWORD 2 */
+	u32 last:1;		/* DWORD 2 */
+	u32 lso:1;		/* DWORD 2 */
+	u32 tcpcs:1;		/* DWORD 2 */
+	u32 udpcs:1;		/* DWORD 2 */
+	u32 ipcs:1;		/* DWORD 2 */
+	u32 mgmt:1;		/* DWORD 2 */
+	u32 ipsec:1;		/* DWORD 2 */
+	u32 forward:1;		/* DWORD 2 */
+	u32 crc:1;		/* DWORD 2 */
+	u32 event:1;		/* DWORD 2 */
+	u32 complete:1;		/* DWORD 2 */
+	u32 vlan_tag:16;	/* DWORD 3 */
+	u32 frag_len:16;	/* DWORD 3 */
+} SG_PACK ETH_WRB, *PETH_WRB;
+
+#else
+   /*
+    *  Work request block that the driver issues to the chip for Ethernet
+    *  transmissions.  All control fields must be valid in each WRB for
+    *  a message. The controller, as  specified by the flags, optionally
+    *  writes an entry to the Completion Ring and  generate an event.
+    *
+    */
+typedef struct _ETH_WRB {
+	u32 frag_pa_hi;		/* DWORD 0 */
+	u32 frag_pa_lo;		/* DWORD 1 */
+	u32 complete:1;		/* DWORD 2 */
+	u32 event:1;		/* DWORD 2 */
+	u32 crc:1;		/* DWORD 2 */
+	u32 forward:1;		/* DWORD 2 */
+	u32 ipsec:1;		/* DWORD 2 */
+	u32 mgmt:1;		/* DWORD 2 */
+	u32 ipcs:1;		/* DWORD 2 */
+	u32 udpcs:1;		/* DWORD 2 */
+	u32 tcpcs:1;		/* DWORD 2 */
+	u32 lso:1;		/* DWORD 2 */
+	u32 last:1;		/* DWORD 2 */
+	u32 vlan:1;		/* DWORD 2 */
+	u32 dbg:3;		/* DWORD 2 */
+	u32 hash_val:3;		/* DWORD 2 */
+	u32 lso_mss:14;		/* DWORD 2 */
+	u32 frag_len:16;	/* DWORD 3 */
+	u32 vlan_tag:16;	/* DWORD 3 */
+} SG_PACK ETH_WRB, *PETH_WRB;
+
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* This is an Ethernet transmit completion descriptor */
+typedef struct _ETH_TX_COMPL {
+	u32 rsvd0:7;		/* DWORD 0 */
+	u32 lso:1;		/* DWORD 0 */
+	u32 nwh_bytes:8;	/* DWORD 0 */
+	u32 user_bytes:16;	/* DWORD 0 */
+	u32 status:4;		/* DWORD 1 */
+	u32 rsvd1:8;		/* DWORD 1 */
+	u32 port:2;		/* DWORD 1 */
+	u32 ct:2;		/* DWORD 1 */
+	u32 wrb_index:16;	/* DWORD 1 */
+	u32 valid:1;		/* DWORD 2 */
+	u32 hash_val:4;		/* DWORD 2 */
+	u32 ringid:11;		/* DWORD 2 */
+	u32 rsvd2:16;		/* DWORD 2 */
+	u32 rsvd3[1];		/* DWORDS 3 to 3 */
+} SG_PACK ETH_TX_COMPL, *PETH_TX_COMPL;
+
+#else
+   /* This is an Ethernet transmit completion descriptor */
+typedef struct _ETH_TX_COMPL {
+	u32 user_bytes:16;	/* DWORD 0 */
+	u32 nwh_bytes:8;	/* DWORD 0 */
+	u32 lso:1;		/* DWORD 0 */
+	u32 rsvd0:7;		/* DWORD 0 */
+	u32 wrb_index:16;	/* DWORD 1 */
+	u32 ct:2;		/* DWORD 1 */
+	u32 port:2;		/* DWORD 1 */
+	u32 rsvd1:8;		/* DWORD 1 */
+	u32 status:4;		/* DWORD 1 */
+	u32 rsvd2:16;		/* DWORD 2 */
+	u32 ringid:11;		/* DWORD 2 */
+	u32 hash_val:4;		/* DWORD 2 */
+	u32 valid:1;		/* DWORD 2 */
+	u32 rsvd3[1];		/* DWORDS 3 to 3 */
+} SG_PACK ETH_TX_COMPL, *PETH_TX_COMPL;
+
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Ethernet Receive Buffer descriptor */
+typedef struct _ETH_RX_D {
+	u32 fragpa_hi;		/* DWORD 0 */
+	u32 fragpa_lo;		/* DWORD 1 */
+} SG_PACK ETH_RX_D, *PETH_RX_D;
+
+#else
+   /* Ethernet Receive Buffer descriptor */
+typedef struct _ETH_RX_D {
+	u32 fragpa_hi;		/* DWORD 0 */
+	u32 fragpa_lo;		/* DWORD 1 */
+} SG_PACK ETH_RX_D, *PETH_RX_D;
+
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* This is an Ethernet Receive Completion Descriptor */
+typedef struct _ETH_RX_COMPL {
+	u32 rsvd0:1;		/* DWORD 0 */
+	u32 port:1;		/* DWORD 0 */
+	u32 pktsize:14;		/* DWORD 0 */
+	u32 vlan_tag:16;	/* DWORD 0 */
+	u32 numfrags:3;		/* DWORD 1 */
+	u32 ipsec:1;		/* DWORD 1 */
+	u32 ct:2;		/* DWORD 1 */
+	u32 fragndx:10;		/* DWORD 1 */
+	u32 vtm:1;		/* DWORD 1 */
+	u32 vtp:1;		/* DWORD 1 */
+	u32 macdst:6;		/* DWORD 1 */
+	u32 udpcksm:1;		/* DWORD 1 */
+	u32 tcpcksm:1;		/* DWORD 1 */
+	u32 ipcksm:1;		/* DWORD 1 */
+	u32 udpf:1;		/* DWORD 1 */
+	u32 tcpf:1;		/* DWORD 1 */
+	u32 ipf:1;		/* DWORD 1 */
+	u32 rsshp:1;		/* DWORD 1 */
+	u32 err:1;		/* DWORD 1 */
+	u32 valid:1;		/* DWORD 2 */
+	u32 rsvd1:31;		/* DWORD 2 */
+	u32 rsshash;		/* DWORD 3 */
+} SG_PACK ETH_RX_COMPL, *PETH_RX_COMPL;
+
+#else
+   /* This is an Ethernet Receive Completion Descriptor */
+typedef struct _ETH_RX_COMPL {
+	u32 vlan_tag:16;	/* DWORD 0 */
+	u32 pktsize:14;		/* DWORD 0 */
+	u32 port:1;		/* DWORD 0 */
+	u32 rsvd0:1;		/* DWORD 0 */
+	u32 err:1;		/* DWORD 1 */
+	u32 rsshp:1;		/* DWORD 1 */
+	u32 ipf:1;		/* DWORD 1 */
+	u32 tcpf:1;		/* DWORD 1 */
+	u32 udpf:1;		/* DWORD 1 */
+	u32 ipcksm:1;		/* DWORD 1 */
+	u32 tcpcksm:1;		/* DWORD 1 */
+	u32 udpcksm:1;		/* DWORD 1 */
+	u32 macdst:6;		/* DWORD 1 */
+	u32 vtp:1;		/* DWORD 1 */
+	u32 vtm:1;		/* DWORD 1 */
+	u32 fragndx:10;		/* DWORD 1 */
+	u32 ct:2;		/* DWORD 1 */
+	u32 ipsec:1;		/* DWORD 1 */
+	u32 numfrags:3;		/* DWORD 1 */
+	u32 rsvd1:31;		/* DWORD 2 */
+	u32 valid:1;		/* DWORD 2 */
+	u32 rsshash;		/* DWORD 3 */
+} SG_PACK ETH_RX_COMPL, *PETH_RX_COMPL;
+
+#endif
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __host_struct_bmap_h__ */
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/doorbells_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/doorbells_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/doorbells_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/doorbells_bmap.h	2008-02-14 15:23:07.830202392 +0530
@@ -0,0 +1,470 @@
+/*
+ * 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 __doorbells_bmap_h__
+#define __doorbells_bmap_h__
+#include "setypes.h"
+#include "pcicfg_bmap.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* The TX/RDMA send queue doorbell. */
+typedef struct _SQ_DB {
+	union {
+		struct {
+			u32 rsvd1:2;	/* DWORD 0 */
+			u32 numPosted:14;	/* DWORD 0 */
+			u32 rsvd0:5;	/* DWORD 0 */
+			u32 cid:11;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK SQ_DB, *PSQ_DB;
+
+SG_C_ASSERT(__sizeof__SQ_DB, sizeof(SQ_DB) == 4);
+
+#else
+   /* The TX/RDMA send queue doorbell. */
+typedef struct _SQ_DB {
+	union {
+		struct {
+			u32 cid:11;	/* DWORD 0 */
+			u32 rsvd0:5;	/* DWORD 0 */
+			u32 numPosted:14;	/* DWORD 0 */
+			u32 rsvd1:2;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK SQ_DB, *PSQ_DB;
+
+SG_C_ASSERT(__sizeof__SQ_DB, sizeof(SQ_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* The receive queue doorbell. */
+typedef struct _RQ_DB {
+	union {
+		struct {
+			u32 numPosted:8;	/* DWORD 0 */
+			u32 Invalidate:1;	/* DWORD 0 */
+			u32 rsvd0:13;	/* DWORD 0 */
+			u32 rq:10;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK RQ_DB, *PRQ_DB;
+
+SG_C_ASSERT(__sizeof__RQ_DB, sizeof(RQ_DB) == 4);
+
+#else
+   /* The receive queue doorbell. */
+typedef struct _RQ_DB {
+	union {
+		struct {
+			u32 rq:10;	/* DWORD 0 */
+			u32 rsvd0:13;	/* DWORD 0 */
+			u32 Invalidate:1;	/* DWORD 0 */
+			u32 numPosted:8;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK RQ_DB, *PRQ_DB;
+
+SG_C_ASSERT(__sizeof__RQ_DB, sizeof(RQ_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /*
+    *  The CQ/EQ doorbell. Software MUST set reserved fields in this descriptor
+    *  to zero, otherwise (CEV) hardware will not execute the doorbell
+    *  (flagging a bad_db_qid error instead).
+    */
+typedef struct _CQ_DB {
+	union {
+		struct {
+			u32 rsvd1:3;	/* DWORD 0 */
+			u32 num_popped:13;	/* DWORD 0 */
+			u32 event:1;	/* DWORD 0 */
+			u32 rearm:1;	/* DWORD 0 */
+			u32 rsvd0:4;	/* DWORD 0 */
+			u32 qid:10;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK CQ_DB, *PCQ_DB;
+
+SG_C_ASSERT(__sizeof__CQ_DB, sizeof(CQ_DB) == 4);
+
+#else
+   /*
+    *  The CQ/EQ doorbell. Software MUST set reserved fields in this descriptor
+    *  to zero, otherwise (CEV) hardware will not execute the doorbell
+    *  (flagging a bad_db_qid error instead).
+    */
+typedef struct _CQ_DB {
+	union {
+		struct {
+			u32 qid:10;	/* DWORD 0 */
+			u32 rsvd0:4;	/* DWORD 0 */
+			u32 rearm:1;	/* DWORD 0 */
+			u32 event:1;	/* DWORD 0 */
+			u32 num_popped:13;	/* DWORD 0 */
+			u32 rsvd1:3;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK CQ_DB, *PCQ_DB;
+
+SG_C_ASSERT(__sizeof__CQ_DB, sizeof(CQ_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+typedef struct _TPM_RQ_DB {
+	union {
+		struct {
+			u32 mss_cnt:5;	/* DWORD 0 */
+			u32 numPosted:11;	/* DWORD 0 */
+			u32 rsvd0:6;	/* DWORD 0 */
+			u32 qid:10;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK TPM_RQ_DB, *PTPM_RQ_DB;
+
+SG_C_ASSERT(__sizeof__TPM_RQ_DB, sizeof(TPM_RQ_DB) == 4);
+
+#else
+typedef struct _TPM_RQ_DB {
+	union {
+		struct {
+			u32 qid:10;	/* DWORD 0 */
+			u32 rsvd0:6;	/* DWORD 0 */
+			u32 numPosted:11;	/* DWORD 0 */
+			u32 mss_cnt:5;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK TPM_RQ_DB, *PTPM_RQ_DB;
+
+SG_C_ASSERT(__sizeof__TPM_RQ_DB, sizeof(TPM_RQ_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /*
+    *  Post WRB Queue Doorbell Register used by the host Storage stack to
+    *  notify the controller of a posted Work Request Block
+    */
+typedef struct _WRB_POST_DB {
+	union {
+		struct {
+			u32 numberPosted:8;	/* DWORD 0 */
+			u32 wrb_index:8;	/* DWORD 0 */
+			u32 rsvd0:6;	/* DWORD 0 */
+			u32 wrb_cid:10;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK WRB_POST_DB, *PWRB_POST_DB;
+
+SG_C_ASSERT(__sizeof__WRB_POST_DB, sizeof(WRB_POST_DB) == 4);
+
+#else
+   /*
+    *  Post WRB Queue Doorbell Register used by the host Storage stack to
+    *  notify the controller of a posted Work Request Block
+    */
+typedef struct _WRB_POST_DB {
+	union {
+		struct {
+			u32 wrb_cid:10;	/* DWORD 0 */
+			u32 rsvd0:6;	/* DWORD 0 */
+			u32 wrb_index:8;	/* DWORD 0 */
+			u32 numberPosted:8;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK WRB_POST_DB, *PWRB_POST_DB;
+
+SG_C_ASSERT(__sizeof__WRB_POST_DB, sizeof(WRB_POST_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /*
+    *  Update Default PDU Queue Doorbell Register used to communicate to
+    *  the controller that the driver has stopped processing the queue
+    *  and where in the queue it stopped,  this is a CQ Entry Type. Used
+    *  by storage driver.
+    */
+typedef struct _DEFAULT_PDU_DB {
+	union {
+		struct {
+			u32 rsvd1:2;	/* DWORD 0 */
+			u32 cqproc:14;	/* DWORD 0 */
+			u32 event:1;	/* DWORD 0 */
+			u32 rearm:1;	/* DWORD 0 */
+			u32 rsvd0:4;	/* DWORD 0 */
+			u32 qid:10;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK DEFAULT_PDU_DB, *PDEFAULT_PDU_DB;
+
+SG_C_ASSERT(__sizeof__DEFAULT_PDU_DB, sizeof(DEFAULT_PDU_DB) == 4);
+
+#else
+   /*
+    *  Update Default PDU Queue Doorbell Register used to communicate to
+    *  the controller that the driver has stopped processing the queue
+    *  and where in the queue it stopped,  this is a CQ Entry Type. Used
+    *  by storage driver.
+    */
+typedef struct _DEFAULT_PDU_DB {
+	union {
+		struct {
+			u32 qid:10;	/* DWORD 0 */
+			u32 rsvd0:4;	/* DWORD 0 */
+			u32 rearm:1;	/* DWORD 0 */
+			u32 event:1;	/* DWORD 0 */
+			u32 cqproc:14;	/* DWORD 0 */
+			u32 rsvd1:2;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK DEFAULT_PDU_DB, *PDEFAULT_PDU_DB;
+
+SG_C_ASSERT(__sizeof__DEFAULT_PDU_DB, sizeof(DEFAULT_PDU_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Management Command and Controller default fragment ring */
+typedef struct _MCC_DB {
+	union {
+		struct {
+			u32 rsvd1:2;	/* DWORD 0 */
+			u32 numPosted:14;	/* DWORD 0 */
+			u32 rsvd0:5;	/* DWORD 0 */
+			u32 rid:11;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK MCC_DB, *PMCC_DB;
+
+SG_C_ASSERT(__sizeof__MCC_DB, sizeof(MCC_DB) == 4);
+
+#else
+   /* Management Command and Controller default fragment ring */
+typedef struct _MCC_DB {
+	union {
+		struct {
+			u32 rid:11;	/* DWORD 0 */
+			u32 rsvd0:5;	/* DWORD 0 */
+			u32 numPosted:14;	/* DWORD 0 */
+			u32 rsvd1:2;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK MCC_DB, *PMCC_DB;
+
+SG_C_ASSERT(__sizeof__MCC_DB, sizeof(MCC_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /*
+    *  Used for bootstrapping the Host interface. This register is used
+    *  for driver communication with the MPU when no MCC Rings exist.
+    *   The software must write this  register twice to post any MCC
+    *  command. First, it writes the register with hi=1 and the upper
+    *  bits of the physical address for the MCC_MAILBOX structure. Software
+    *  must  poll the ready bit until this is acknowledged. Then, sotware
+    *  writes the register with hi=0 with the lower bits in the address.
+    *  It must poll the ready bit until the MCC command is complete.
+    *  Upon completion, the MCC_MAILBOX will contain a valid  completion
+    *  queue entry.
+    */
+typedef struct _MPU_MAILBOX_DB {
+	union {
+		struct {
+			u32 address:30;	/* DWORD 0 */
+			u32 hi:1;	/* DWORD 0 */
+			u32 ready:1;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK MPU_MAILBOX_DB, *PMPU_MAILBOX_DB;
+
+SG_C_ASSERT(__sizeof__MPU_MAILBOX_DB, sizeof(MPU_MAILBOX_DB) == 4);
+
+#else
+   /*
+    *  Used for bootstrapping the Host interface. This register is used
+    *  for driver communication with the MPU when no MCC Rings exist.
+    *   The software must write this register twice to post any MCC command.
+    *  First, it writes the register with hi=1 and  the upper bits of
+    *  the physical address for the MCC_MAILBOX structure. Software must
+    *  poll the ready bit until this is acknowledged. Then, sotware writes
+    *  the register with hi=0 with the lower bits in the address. It
+    *  must poll the ready bit until the MCC command is complete. Upon
+    *  completion, the MCC_MAILBOX will contain a valid completion queue
+    *  entry.
+    */
+typedef struct _MPU_MAILBOX_DB {
+	union {
+		struct {
+			u32 ready:1;	/* DWORD 0 */
+			u32 hi:1;	/* DWORD 0 */
+			u32 address:30;	/* DWORD 0 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw;		/* dword union */
+	};			/* unnamed union */
+} SG_PACK MPU_MAILBOX_DB, *PMPU_MAILBOX_DB;
+
+SG_C_ASSERT(__sizeof__MPU_MAILBOX_DB, sizeof(MPU_MAILBOX_DB) == 4);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /*
+    *  This is the protection domain doorbell register map. Note that while
+    *  this map shows doorbells for all Blade Engine supported protocols,
+    *   not all of these may be valid in a given function or protection
+    *  domain. It is the responsibility of the application accessing
+    *  the doorbells to know which are valid. Each doorbell occupies
+    *  32 bytes of space, but unless otherwise specified, only the first
+    *  4 bytes should be written. </p>  There are 32 instances of these
+    *  doorbells for the host and 31 virtual machines respectively. The
+    *  host and VMs will only map the doorbell pages belonging to its
+    *  protection domain. It will not be able to touch the doorbells
+    *  for another VM. The doorbells are the only registers directly
+    *  accessible by a virtual machine.  Similarly, there are 511 additional
+    *  doorbells for RDMA protection domains. PD 0 for RDMA shares the
+    *  same physical protection domain doorbell page as ETH/iSCSI. </p>
+    */
+typedef struct _PROTECTION_DOMAIN_DBMAP {
+	union {
+		struct {
+			u32 rsvd0[16];	/* DWORDS 0 to 15 */
+			SQ_DB rdma_sq_db;
+			u32 rsvd1[7];	/* DWORDS 17 to 23 */
+			WRB_POST_DB iscsi_wrb_post_db;
+			u32 rsvd2[7];	/* DWORDS 25 to 31 */
+			SQ_DB etx_sq_db;
+			u32 rsvd3[7];	/* DWORDS 33 to 39 */
+			RQ_DB rdma_rq_db;
+			u32 rsvd4[7];	/* DWORDS 41 to 47 */
+			DEFAULT_PDU_DB iscsi_default_pdu_db;
+			u32 rsvd5[7];	/* DWORDS 49 to 55 */
+			TPM_RQ_DB tpm_rq_db;
+			u32 rsvd6[7];	/* DWORDS 57 to 63 */
+			RQ_DB erx_rq_db;
+			u32 rsvd7[7];	/* DWORDS 65 to 71 */
+			CQ_DB cq_db;
+			u32 rsvd8[7];	/* DWORDS 73 to 79 */
+			MCC_DB mpu_mcc_db;
+			u32 rsvd9[7];	/* DWORDS 81 to 87 */
+			MPU_MAILBOX_DB mcc_bootstrap_db;
+			u32 rsvd10[935];	/* DWORDS 89 to 1023 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw[1024];	/* dword union */
+	};			/* unnamed union */
+} SG_PACK PROTECTION_DOMAIN_DBMAP, *PPROTECTION_DOMAIN_DBMAP;
+
+SG_C_ASSERT(__sizeof__PROTECTION_DOMAIN_DBMAP,
+	    sizeof(PROTECTION_DOMAIN_DBMAP) == 4096);
+
+#else
+   /*
+    *   This is the protection domain doorbell register map. Note  that
+    *  while this map shows doorbells for all Blade Engine supported
+    *   protocols, not all of these may be valid in a given function
+    *  or  protection domain. It is the responsibility of the application
+    *   accessing the doorbells to know which are valid. Each doorbell
+    *  occupies 32 bytes of space, but unless otherwise specified, only
+    *  the first 4 bytes should be written.  There are 32 instances of
+    *  these doorbells for the host and 31 virtual machines  respectively.
+    *  The host and VMs will only map the doorbell pages belonging to
+    *  its protection domain. It will not be able to touch the doorbells
+    *  for another VM. The doorbells are the only registers directly
+    *  accessible by a virtual machine.  Similarly, there are 511 additional
+    *  doorbells for RDMA protection domains. PD 0 for RDMA shares the
+    *  same physical protection domain doorbell page as ETH/iSCSI.
+    */
+typedef struct _PROTECTION_DOMAIN_DBMAP {
+	union {
+		struct {
+			u32 rsvd0[16];	/* DWORDS 0 to 15 */
+			SQ_DB rdma_sq_db;
+			u32 rsvd1[7];	/* DWORDS 17 to 23 */
+			WRB_POST_DB iscsi_wrb_post_db;
+			u32 rsvd2[7];	/* DWORDS 25 to 31 */
+			SQ_DB etx_sq_db;
+			u32 rsvd3[7];	/* DWORDS 33 to 39 */
+			RQ_DB rdma_rq_db;
+			u32 rsvd4[7];	/* DWORDS 41 to 47 */
+			DEFAULT_PDU_DB iscsi_default_pdu_db;
+			u32 rsvd5[7];	/* DWORDS 49 to 55 */
+			TPM_RQ_DB tpm_rq_db;
+			u32 rsvd6[7];	/* DWORDS 57 to 63 */
+			RQ_DB erx_rq_db;
+			u32 rsvd7[7];	/* DWORDS 65 to 71 */
+			CQ_DB cq_db;
+			u32 rsvd8[7];	/* DWORDS 73 to 79 */
+			MCC_DB mpu_mcc_db;
+			u32 rsvd9[7];	/* DWORDS 81 to 87 */
+			MPU_MAILBOX_DB mcc_bootstrap_db;
+			u32 rsvd10[935];	/* DWORDS 89 to 1023 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw[1024];	/* dword union */
+	};			/* unnamed union */
+} SG_PACK PROTECTION_DOMAIN_DBMAP, *PPROTECTION_DOMAIN_DBMAP;
+
+SG_C_ASSERT(__sizeof__PROTECTION_DOMAIN_DBMAP,
+	    sizeof(PROTECTION_DOMAIN_DBMAP) == 4096);
+#endif
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __doorbells_bmap_h__ */
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/mpu_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/mpu_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/mpu_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/mpu_bmap.h	2008-02-14 15:23:07.831202240 +0530
@@ -0,0 +1,155 @@
+/*
+ * 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 __mpu_bmap_h__
+#define __mpu_bmap_h__
+#include "setypes.h"
+#include "ep_bmap.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Provide control parameters for the Managment Processor Unit. */
+typedef struct _MPU_CSRMAP {
+	EP_CSRMAP ep;
+	u32 rsvd0[4];		/* DWORDS 64 to 67 */
+	u32 rsvd1[1];		/* DWORDS 68 to 68 */
+	u32 rsvd2[6];		/* DWORDS 69 to 74 */
+	u32 rsvd3[6];		/* DWORDS 75 to 80 */
+	u32 rsvd4[1];		/* DWORDS 81 to 81 */
+	u32 rsvd5[1];		/* DWORDS 82 to 82 */
+	u32 rsvd6[1];		/* DWORDS 83 to 83 */
+	u32 rsvd7[1];		/* DWORDS 84 to 84 */
+	u32 rsvd8[1];		/* DWORDS 85 to 85 */
+	u32 rsvd9[1];		/* DWORDS 86 to 86 */
+	u32 rsvd10[1];		/* DWORDS 87 to 87 */
+	u32 rsvd11[1];		/* DWORDS 88 to 88 */
+	u32 rsvd12[1];		/* DWORDS 89 to 89 */
+	u32 rsvd13[1];		/* DWORDS 90 to 90 */
+	u32 rsvd14[1];		/* DWORDS 91 to 91 */
+	u32 rsvd15[1];		/* DWORDS 92 to 92 */
+	u32 rsvd16[1];		/* DWORDS 93 to 93 */
+	u32 rsvd17[1];		/* DWORDS 94 to 94 */
+	u32 rsvd18[1];		/* DWORDS 95 to 95 */
+	u32 rsvd19[1];		/* DWORDS 96 to 96 */
+	u32 rsvd20[1];		/* DWORDS 97 to 97 */
+	u32 rsvd21[1];		/* DWORDS 98 to 98 */
+	u32 rsvd22[1];		/* DWORDS 99 to 99 */
+	u32 rsvd23[1];		/* DWORDS 100 to 100 */
+	u32 rsvd24[1];		/* DWORDS 101 to 101 */
+	u32 rsvd25[1];		/* DWORDS 102 to 102 */
+	u32 rsvd26[1];		/* DWORDS 103 to 103 */
+	u32 rsvd27[1];		/* DWORDS 104 to 104 */
+	u32 rsvd28[3];		/* DWORDS 105 to 107 */
+	u32 rsvd29[1];		/* DWORDS 108 to 108 */
+	u32 rsvd30[1];		/* DWORDS 109 to 109 */
+	u32 rsvd31[1];		/* DWORDS 110 to 110 */
+	u32 rsvd32[1];		/* DWORDS 111 to 111 */
+	u32 rsvd33[1];		/* DWORDS 112 to 112 */
+	u32 rsvd34[3];		/* DWORDS 113 to 115 */
+	u32 rsvd35[1];		/* DWORDS 116 to 116 */
+	u32 rsvd36[1];		/* DWORDS 117 to 117 */
+	u32 rsvd37[1];		/* DWORDS 118 to 118 */
+	u32 rsvd38[1];		/* DWORDS 119 to 119 */
+	u32 rsvd39[1];		/* DWORDS 120 to 120 */
+	u32 rsvd40[1];		/* DWORDS 121 to 121 */
+	u32 rsvd41[134];	/* DWORDS 122 to 255 */
+} SG_PACK MPU_CSRMAP, *PMPU_CSRMAP;
+
+#else
+   /* Provide control parameters for the Managment Processor Unit. */
+typedef struct _MPU_CSRMAP {
+	EP_CSRMAP ep;
+	u32 rsvd0[4];		/* DWORDS 64 to 67 */
+	u32 rsvd1[1];		/* DWORDS 68 to 68 */
+	u32 rsvd2[6];		/* DWORDS 69 to 74 */
+	u32 rsvd3[6];		/* DWORDS 75 to 80 */
+	u32 rsvd4[1];		/* DWORDS 81 to 81 */
+	u32 rsvd5[1];		/* DWORDS 82 to 82 */
+	u32 rsvd6[1];		/* DWORDS 83 to 83 */
+	u32 rsvd7[1];		/* DWORDS 84 to 84 */
+	u32 rsvd8[1];		/* DWORDS 85 to 85 */
+	u32 rsvd9[1];		/* DWORDS 86 to 86 */
+	u32 rsvd10[1];		/* DWORDS 87 to 87 */
+	u32 rsvd11[1];		/* DWORDS 88 to 88 */
+	u32 rsvd12[1];		/* DWORDS 89 to 89 */
+	u32 rsvd13[1];		/* DWORDS 90 to 90 */
+	u32 rsvd14[1];		/* DWORDS 91 to 91 */
+	u32 rsvd15[1];		/* DWORDS 92 to 92 */
+	u32 rsvd16[1];		/* DWORDS 93 to 93 */
+	u32 rsvd17[1];		/* DWORDS 94 to 94 */
+	u32 rsvd18[1];		/* DWORDS 95 to 95 */
+	u32 rsvd19[1];		/* DWORDS 96 to 96 */
+	u32 rsvd20[1];		/* DWORDS 97 to 97 */
+	u32 rsvd21[1];		/* DWORDS 98 to 98 */
+	u32 rsvd22[1];		/* DWORDS 99 to 99 */
+	u32 rsvd23[1];		/* DWORDS 100 to 100 */
+	u32 rsvd24[1];		/* DWORDS 101 to 101 */
+	u32 rsvd25[1];		/* DWORDS 102 to 102 */
+	u32 rsvd26[1];		/* DWORDS 103 to 103 */
+	u32 rsvd27[1];		/* DWORDS 104 to 104 */
+	u32 rsvd28[3];		/* DWORDS 105 to 107 */
+	u32 rsvd29[1];		/* DWORDS 108 to 108 */
+	u32 rsvd30[1];		/* DWORDS 109 to 109 */
+	u32 rsvd31[1];		/* DWORDS 110 to 110 */
+	u32 rsvd32[1];		/* DWORDS 111 to 111 */
+	u32 rsvd33[1];		/* DWORDS 112 to 112 */
+	u32 rsvd34[3];		/* DWORDS 113 to 115 */
+	u32 rsvd35[1];		/* DWORDS 116 to 116 */
+	u32 rsvd36[1];		/* DWORDS 117 to 117 */
+	u32 rsvd37[1];		/* DWORDS 118 to 118 */
+	u32 rsvd38[1];		/* DWORDS 119 to 119 */
+	u32 rsvd39[1];		/* DWORDS 120 to 120 */
+	u32 rsvd40[1];		/* DWORDS 121 to 121 */
+	u32 rsvd41[134];	/* DWORDS 122 to 255 */
+} SG_PACK MPU_CSRMAP, *PMPU_CSRMAP;
+
+#endif
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __mpu_bmap_h__ */
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/asyncmesg_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/asyncmesg_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/asyncmesg_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/asyncmesg_bmap.h	2008-02-14 15:23:07.831202240 +0530
@@ -0,0 +1,158 @@
+/*
+ * 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 __asyncmesg_bmap_h__
+#define __asyncmesg_bmap_h__
+#include "setypes.h"
+#include "ioctl_common_bmap.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+/*
+ *  The last 4 bytes of the async events have this common format. It
+ *  allows the driver to distinguish MCC_CQ_ENTRY structs from asynchronous
+ *  events. Both arrive on the same completion queue. This structure
+ *  also contains the common fields used to decode the  async event.
+ *
+ */
+typedef struct _ASYNC_EVENT_TRAILER {
+	u32 rsvd0:8;		/* DWORD 0 */
+	u32 event_code:8;	/* DWORD 0 */
+	u32 event_type:8;	/* DWORD 0 */
+	u32 rsvd1:6;		/* DWORD 0 */
+	u32 async_event:1;	/* DWORD 0 */
+	u32 valid:1;		/* DWORD 0 */
+} SG_PACK ASYNC_EVENT_TRAILER, *PASYNC_EVENT_TRAILER;
+
+/*
+ *  Note Applicable in Initiator, Target and NIC modes.  A link state
+ *  async event is seen by all device drivers as soon they create an
+ *  MCC ring. Thereafter, anytime the link status changes the drivers
+ *  will receive a link state async event. Notifications continue to
+ *  be sent until a driver destroys its MCC ring. A link down event is
+ *  reported when either port loses link. A link up event is reported
+ *  when either port regains link.  When BE's failover mechanism is enabled,
+ *  a link down on the active port causes traffic to be diverted to the
+ *  standby port by the BE's RM firmware (assuming the standby port has
+ *  link). In this case, the standy port assumes the active status. Note:
+ *  when link is restored on the failed port, traffic continues on the
+ *  currently active port. The ARM firmware does not attempt to 'fail
+ *  back' traffic to the restored port.
+ */
+typedef struct _ASYNC_EVENT_LINK_STATE {
+	u8 port0_link_status;
+	u8 port1_link_status;
+	u8 active_port;
+	u8 rsvd0;
+	u8 port0_duplex;
+	u8 port0_speed;
+	u8 port1_duplex;
+	u8 port1_speed;
+	u8 port0_fault;
+	u8 port1_fault;
+	u8 rsvd1[2];
+	ASYNC_EVENT_TRAILER trailer;
+} SG_PACK ASYNC_EVENT_LINK_STATE, *PASYNC_EVENT_LINK_STATE;
+
+/*
+ *  The (Initiator) firmware has discovered new Targets through the iSCSI
+ *  disovery services.  Note Applicable in Initiator mode only.
+ */
+typedef struct _ASYNC_EVENT_NEW_ISCSI_TARGET_DISCOVERED {
+	u32 session_handle;
+	u32 rsvd0[2];		/* DWORDS 1 to 2 */
+	ASYNC_EVENT_TRAILER trailer;
+} SG_PACK ASYNC_EVENT_NEW_ISCSI_TARGET_DISCOVERED,
+    *PASYNC_EVENT_NEW_ISCSI_TARGET_DISCOVERED;
+
+/*
+ *  The (Initiator) firmware has established a new iSCSI connection with
+ *  a target. The  driver can use the session and connection handles
+ *  to offload this connection.  Note Applicable in Initiator mode only.
+ *
+ */
+typedef struct _ASYNC_EVENT_NEW_ISCSI_CONNECTION_ESTABLISHED {
+	u16 connection_handle;
+	u16 rsvd0;
+	u32 session_handle;
+	u32 rsvd1[1];		/* DWORDS 2 to 2 */
+	ASYNC_EVENT_TRAILER trailer;
+} SG_PACK ASYNC_EVENT_NEW_ISCSI_CONNECTION_ESTABLISHED,
+    *PASYNC_EVENT_NEW_ISCSI_CONNECTION_ESTABLISHED;
+
+/*
+ *  The (Initiator) firmware has established a new TCP connection for
+ *  a Target which was configured to use multiple connections-per-session.
+ *  The driver can use the session and  connection IDs to issue a call
+ *  to IOCTL_ISCSI_INI_DRIVER_REOPEN_A_SESSION.  Note Applicable in Initiator
+ *  mode only.
+ */
+typedef struct _ASYNC_EVENT_NEW_TCP_CONNECTION_ESTABLISHED {
+	u16 connection_handle;
+	u16 rsvd0;
+	u32 session_handle;
+	u32 rsvd1[1];		/* DWORDS 2 to 2 */
+	ASYNC_EVENT_TRAILER trailer;
+} SG_PACK ASYNC_EVENT_NEW_TCP_CONNECTION_ESTABLISHED,
+    *PASYNC_EVENT_NEW_TCP_CONNECTION_ESTABLISHED;
+
+/*
+ *  A new TCP connection has been accepted on the listen port. The Target
+ *  driver is expected to issue IOCTL_ISCSI_TGT_GET_CONNECTION_INFO to
+ *  get the source/destination IP Address and port numbers for this connection.
+ *   Note Applicable in Target mode only.
+ */
+typedef struct _ASYNC_EVENT_NEW_TCP_CONNECTION_ACCEPTED {
+	u32 connection_handle;
+	u32 rsvd0[2];		/* DWORDS 1 to 2 */
+	ASYNC_EVENT_TRAILER trailer;
+} SG_PACK ASYNC_EVENT_NEW_TCP_CONNECTION_ACCEPTED,
+    *PASYNC_EVENT_NEW_TCP_CONNECTION_ACCEPTED;
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __asyncmesg_bmap_h__ */
diff -uprN orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/be_common_bmap.h benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/be_common_bmap.h
--- orig/linux-2.6.24.2/drivers/message/beclib/fw/bmap/be_common_bmap.h	1970-01-01 05:30:00.000000000 +0530
+++ benet/linux-2.6.24.2/drivers/message/beclib/fw/bmap/be_common_bmap.h	2008-02-14 15:23:07.832202088 +0530
@@ -0,0 +1,150 @@
+/*
+ * 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__
+#include "setypes.h"
+#include "pcicfg_bmap.h"
+
+#undef SG_PACK
+#if defined(SG_PRAGMA_PACK)
+#pragma pack(push, 1)
+#define SG_PACK
+#elif defined(SG_ATTRIBUTE_PACK)
+#define SG_PACK __attribute__ ((packed))
+#else
+#define SG_PACK
+#endif
+
+#ifndef SG_C_ASSERT
+#define SG_C_ASSERT(_name_, _condition_)
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Physical Address. */
+typedef 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 PHYS_ADDR, *PPHYS_ADDR;
+
+SG_C_ASSERT(__sizeof__PHYS_ADDR, sizeof(PHYS_ADDR) == 8);
+
+#else
+   /* Physical Address. */
+typedef 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 PHYS_ADDR, *PPHYS_ADDR;
+
+SG_C_ASSERT(__sizeof__PHYS_ADDR, sizeof(PHYS_ADDR) == 8);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Virtual Address. */
+typedef 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 VIRT_ADDR, *PVIRT_ADDR;
+
+SG_C_ASSERT(__sizeof__VIRT_ADDR, sizeof(VIRT_ADDR) == 8);
+
+#else
+   /* Virtual Address. */
+typedef 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 VIRT_ADDR, *PVIRT_ADDR;
+
+SG_C_ASSERT(__sizeof__VIRT_ADDR, sizeof(VIRT_ADDR) == 8);
+#endif
+
+#if defined(__BIG_ENDIAN)
+   /* Scatter gather element. */
+typedef struct _SGE {
+	union {
+		struct {
+			u32 addr_hi;	/* DWORD 0 */
+			u32 addr_lo;	/* DWORD 1 */
+			u32 rsvd0[1];	/* DWORDS 2 to 2 */
+			u32 rsvd1:16;	/* DWORD 3 */
+			u32 len:16;	/* DWORD 3 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw[4];	/* dword union */
+	};			/* unnamed union */
+} SG_PACK SGE, *PSGE;
+
+SG_C_ASSERT(__sizeof__SGE, sizeof(SGE) == 16);
+
+#else
+   /* Scatter gather element. */
+typedef struct _SGE {
+	union {
+		struct {
+			u32 addr_hi;	/* DWORD 0 */
+			u32 addr_lo;	/* DWORD 1 */
+			u32 rsvd0[1];	/* DWORDS 2 to 2 */
+			u32 len:16;	/* DWORD 3 */
+			u32 rsvd1:16;	/* DWORD 3 */
+		} SG_PACK;	/* unnamed struct */
+		u32 dw[4];	/* dword union */
+	};			/* unnamed union */
+} SG_PACK SGE, *PSGE;
+
+SG_C_ASSERT(__sizeof__SGE, sizeof(SGE) == 16);
+#endif
+
+#ifdef SG_PRAGMA_PACK
+#pragma pack(pop)
+#endif
+
+#endif /* __be_common_bmap_h__ */

___________________________________________________________________________________
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