|  | /* bnx2x_mfw_req.h: Broadcom Everest network driver. | 
|  | * | 
|  | * Copyright (c) 2012-2013 Broadcom Corporation | 
|  | * | 
|  | * 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. | 
|  | */ | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #define PORT_0			0 | 
|  | #define PORT_1			1 | 
|  | #define PORT_MAX		2 | 
|  | #define NVM_PATH_MAX		2 | 
|  |  | 
|  | /* FCoE capabilities required from the driver */ | 
|  | struct fcoe_capabilities { | 
|  | uint32_t capability1; | 
|  | /* Maximum number of I/Os per connection */ | 
|  | #define FCOE_IOS_PER_CONNECTION_MASK    0x0000ffff | 
|  | #define FCOE_IOS_PER_CONNECTION_SHIFT   0 | 
|  | /* Maximum number of Logins per port */ | 
|  | #define FCOE_LOGINS_PER_PORT_MASK       0xffff0000 | 
|  | #define FCOE_LOGINS_PER_PORT_SHIFT   16 | 
|  |  | 
|  | uint32_t capability2; | 
|  | /* Maximum number of exchanges */ | 
|  | #define FCOE_NUMBER_OF_EXCHANGES_MASK   0x0000ffff | 
|  | #define FCOE_NUMBER_OF_EXCHANGES_SHIFT  0 | 
|  | /* Maximum NPIV WWN per port */ | 
|  | #define FCOE_NPIV_WWN_PER_PORT_MASK     0xffff0000 | 
|  | #define FCOE_NPIV_WWN_PER_PORT_SHIFT    16 | 
|  |  | 
|  | uint32_t capability3; | 
|  | /* Maximum number of targets supported */ | 
|  | #define FCOE_TARGETS_SUPPORTED_MASK     0x0000ffff | 
|  | #define FCOE_TARGETS_SUPPORTED_SHIFT    0 | 
|  | /* Maximum number of outstanding commands across all connections */ | 
|  | #define FCOE_OUTSTANDING_COMMANDS_MASK  0xffff0000 | 
|  | #define FCOE_OUTSTANDING_COMMANDS_SHIFT 16 | 
|  |  | 
|  | uint32_t capability4; | 
|  | #define FCOE_CAPABILITY4_STATEFUL			0x00000001 | 
|  | #define FCOE_CAPABILITY4_STATELESS			0x00000002 | 
|  | #define FCOE_CAPABILITY4_CAPABILITIES_REPORTED_VALID	0x00000004 | 
|  | }; | 
|  |  | 
|  | struct glob_ncsi_oem_data { | 
|  | uint32_t driver_version; | 
|  | uint32_t unused[3]; | 
|  | struct fcoe_capabilities fcoe_features[NVM_PATH_MAX][PORT_MAX]; | 
|  | }; | 
|  |  | 
|  | /* current drv_info version */ | 
|  | #define DRV_INFO_CUR_VER 2 | 
|  |  | 
|  | /* drv_info op codes supported */ | 
|  | enum drv_info_opcode { | 
|  | ETH_STATS_OPCODE, | 
|  | FCOE_STATS_OPCODE, | 
|  | ISCSI_STATS_OPCODE | 
|  | }; | 
|  |  | 
|  | #define ETH_STAT_INFO_VERSION_LEN	12 | 
|  | /*  Per PCI Function Ethernet Statistics required from the driver */ | 
|  | struct eth_stats_info { | 
|  | /* Function's Driver Version. padded to 12 */ | 
|  | uint8_t version[ETH_STAT_INFO_VERSION_LEN]; | 
|  | /* Locally Admin Addr. BigEndian EIU48. Actual size is 6 bytes */ | 
|  | uint8_t mac_local[8]; | 
|  | uint8_t mac_add1[8];		/* Additional Programmed MAC Addr 1. */ | 
|  | uint8_t mac_add2[8];		/* Additional Programmed MAC Addr 2. */ | 
|  | uint32_t mtu_size;		/* MTU Size. Note   : Negotiated MTU */ | 
|  | uint32_t feature_flags;	/* Feature_Flags. */ | 
|  | #define FEATURE_ETH_CHKSUM_OFFLOAD_MASK		0x01 | 
|  | #define FEATURE_ETH_LSO_MASK			0x02 | 
|  | #define FEATURE_ETH_BOOTMODE_MASK		0x1C | 
|  | #define FEATURE_ETH_BOOTMODE_SHIFT		2 | 
|  | #define FEATURE_ETH_BOOTMODE_NONE		(0x0 << 2) | 
|  | #define FEATURE_ETH_BOOTMODE_PXE		(0x1 << 2) | 
|  | #define FEATURE_ETH_BOOTMODE_ISCSI		(0x2 << 2) | 
|  | #define FEATURE_ETH_BOOTMODE_FCOE		(0x3 << 2) | 
|  | #define FEATURE_ETH_TOE_MASK			0x20 | 
|  | uint32_t lso_max_size;	/* LSO MaxOffloadSize. */ | 
|  | uint32_t lso_min_seg_cnt;	/* LSO MinSegmentCount. */ | 
|  | /* Num Offloaded Connections TCP_IPv4. */ | 
|  | uint32_t ipv4_ofld_cnt; | 
|  | /* Num Offloaded Connections TCP_IPv6. */ | 
|  | uint32_t ipv6_ofld_cnt; | 
|  | uint32_t promiscuous_mode;	/* Promiscuous Mode. non-zero true */ | 
|  | uint32_t txq_size;		/* TX Descriptors Queue Size */ | 
|  | uint32_t rxq_size;		/* RX Descriptors Queue Size */ | 
|  | /* TX Descriptor Queue Avg Depth. % Avg Queue Depth since last poll */ | 
|  | uint32_t txq_avg_depth; | 
|  | /* RX Descriptors Queue Avg Depth. % Avg Queue Depth since last poll */ | 
|  | uint32_t rxq_avg_depth; | 
|  | /* IOV_Offload. 0=none; 1=MultiQueue, 2=VEB 3= VEPA*/ | 
|  | uint32_t iov_offload; | 
|  | /* Number of NetQueue/VMQ Config'd. */ | 
|  | uint32_t netq_cnt; | 
|  | uint32_t vf_cnt;		/* Num VF assigned to this PF. */ | 
|  | }; | 
|  |  | 
|  | /*  Per PCI Function FCOE Statistics required from the driver */ | 
|  | struct fcoe_stats_info { | 
|  | uint8_t version[12];		/* Function's Driver Version. */ | 
|  | uint8_t mac_local[8];	/* Locally Admin Addr. */ | 
|  | uint8_t mac_add1[8];		/* Additional Programmed MAC Addr 1. */ | 
|  | uint8_t mac_add2[8];		/* Additional Programmed MAC Addr 2. */ | 
|  | /* QoS Priority (per 802.1p). 0-7255 */ | 
|  | uint32_t qos_priority; | 
|  | uint32_t txq_size;		/* FCoE TX Descriptors Queue Size. */ | 
|  | uint32_t rxq_size;		/* FCoE RX Descriptors Queue Size. */ | 
|  | /* FCoE TX Descriptor Queue Avg Depth. */ | 
|  | uint32_t txq_avg_depth; | 
|  | /* FCoE RX Descriptors Queue Avg Depth. */ | 
|  | uint32_t rxq_avg_depth; | 
|  | uint32_t rx_frames_lo;	/* FCoE RX Frames received. */ | 
|  | uint32_t rx_frames_hi;	/* FCoE RX Frames received. */ | 
|  | uint32_t rx_bytes_lo;	/* FCoE RX Bytes received. */ | 
|  | uint32_t rx_bytes_hi;	/* FCoE RX Bytes received. */ | 
|  | uint32_t tx_frames_lo;	/* FCoE TX Frames sent. */ | 
|  | uint32_t tx_frames_hi;	/* FCoE TX Frames sent. */ | 
|  | uint32_t tx_bytes_lo;	/* FCoE TX Bytes sent. */ | 
|  | uint32_t tx_bytes_hi;	/* FCoE TX Bytes sent. */ | 
|  | }; | 
|  |  | 
|  | /* Per PCI  Function iSCSI Statistics required from the driver*/ | 
|  | struct iscsi_stats_info { | 
|  | uint8_t version[12];		/* Function's Driver Version. */ | 
|  | uint8_t mac_local[8];	/* Locally Admin iSCSI MAC Addr. */ | 
|  | uint8_t mac_add1[8];		/* Additional Programmed MAC Addr 1. */ | 
|  | /* QoS Priority (per 802.1p). 0-7255 */ | 
|  | uint32_t qos_priority; | 
|  | uint8_t initiator_name[64];	/* iSCSI Boot Initiator Node name. */ | 
|  | uint8_t ww_port_name[64];	/* iSCSI World wide port name */ | 
|  | uint8_t boot_target_name[64];/* iSCSI Boot Target Name. */ | 
|  | uint8_t boot_target_ip[16];	/* iSCSI Boot Target IP. */ | 
|  | uint32_t boot_target_portal;	/* iSCSI Boot Target Portal. */ | 
|  | uint8_t boot_init_ip[16];	/* iSCSI Boot Initiator IP Address. */ | 
|  | uint32_t max_frame_size;	/* Max Frame Size. bytes */ | 
|  | uint32_t txq_size;		/* PDU TX Descriptors Queue Size. */ | 
|  | uint32_t rxq_size;		/* PDU RX Descriptors Queue Size. */ | 
|  | uint32_t txq_avg_depth;	/* PDU TX Descriptor Queue Avg Depth. */ | 
|  | uint32_t rxq_avg_depth;	/* PDU RX Descriptors Queue Avg Depth. */ | 
|  | uint32_t rx_pdus_lo;		/* iSCSI PDUs received. */ | 
|  | uint32_t rx_pdus_hi;		/* iSCSI PDUs received. */ | 
|  | uint32_t rx_bytes_lo;	/* iSCSI RX Bytes received. */ | 
|  | uint32_t rx_bytes_hi;	/* iSCSI RX Bytes received. */ | 
|  | uint32_t tx_pdus_lo;		/* iSCSI PDUs sent. */ | 
|  | uint32_t tx_pdus_hi;		/* iSCSI PDUs sent. */ | 
|  | uint32_t tx_bytes_lo;	/* iSCSI PDU TX Bytes sent. */ | 
|  | uint32_t tx_bytes_hi;	/* iSCSI PDU TX Bytes sent. */ | 
|  | uint32_t pcp_prior_map_tbl;	/* C-PCP to S-PCP Priority MapTable. | 
|  | * 9 nibbles, the position of each nibble | 
|  | * represents the C-PCP value, the value | 
|  | * of the nibble = S-PCP value. | 
|  | */ | 
|  | }; | 
|  |  | 
|  | union drv_info_to_mcp { | 
|  | struct eth_stats_info	ether_stat; | 
|  | struct fcoe_stats_info	fcoe_stat; | 
|  | struct iscsi_stats_info	iscsi_stat; | 
|  | }; |