diff options
author | Barak Witkowski <barak@broadcom.com> | 2012-06-25 21:31:19 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-06-27 04:20:13 -0400 |
commit | 2e499d3cc13365a87815266dda59904dcb8c8d6c (patch) | |
tree | b9f0e8b8a4356d8beb112cf76b0b97789eb335c3 /drivers/net/ethernet/broadcom/bnx2x/bnx2x_mfw_req.h | |
parent | 747cf6ed3dbf6200af761f5384893c3b621a484c (diff) |
bnx2x, bnx2fc, bnx2i, cnic: Add statistics support and FCoE capabilities advertisement
1. When FCoE offload driver is registered, copy its capabilities to the chip
scratchpad.
2. Copy FCoE/iSCSI MAC addresses in aligned manner to chip scratchpad.
3. Add FCoE/iSCSI statistics collection support
Signed-off-by: Barak Witkowski <barak@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_mfw_req.h')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_mfw_req.h | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_mfw_req.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_mfw_req.h new file mode 100644 index 00000000000..ddd5106ad2f --- /dev/null +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_mfw_req.h | |||
@@ -0,0 +1,168 @@ | |||
1 | /* bnx2x_mfw_req.h: Broadcom Everest network driver. | ||
2 | * | ||
3 | * Copyright (c) 2012 Broadcom Corporation | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | #ifndef BNX2X_MFW_REQ_H | ||
11 | #define BNX2X_MFW_REQ_H | ||
12 | |||
13 | #define PORT_0 0 | ||
14 | #define PORT_1 1 | ||
15 | #define PORT_MAX 2 | ||
16 | #define NVM_PATH_MAX 2 | ||
17 | |||
18 | /* FCoE capabilities required from the driver */ | ||
19 | struct fcoe_capabilities { | ||
20 | u32 capability1; | ||
21 | /* Maximum number of I/Os per connection */ | ||
22 | #define FCOE_IOS_PER_CONNECTION_MASK 0x0000ffff | ||
23 | #define FCOE_IOS_PER_CONNECTION_SHIFT 0 | ||
24 | /* Maximum number of Logins per port */ | ||
25 | #define FCOE_LOGINS_PER_PORT_MASK 0xffff0000 | ||
26 | #define FCOE_LOGINS_PER_PORT_SHIFT 16 | ||
27 | |||
28 | u32 capability2; | ||
29 | /* Maximum number of exchanges */ | ||
30 | #define FCOE_NUMBER_OF_EXCHANGES_MASK 0x0000ffff | ||
31 | #define FCOE_NUMBER_OF_EXCHANGES_SHIFT 0 | ||
32 | /* Maximum NPIV WWN per port */ | ||
33 | #define FCOE_NPIV_WWN_PER_PORT_MASK 0xffff0000 | ||
34 | #define FCOE_NPIV_WWN_PER_PORT_SHIFT 16 | ||
35 | |||
36 | u32 capability3; | ||
37 | /* Maximum number of targets supported */ | ||
38 | #define FCOE_TARGETS_SUPPORTED_MASK 0x0000ffff | ||
39 | #define FCOE_TARGETS_SUPPORTED_SHIFT 0 | ||
40 | /* Maximum number of outstanding commands across all connections */ | ||
41 | #define FCOE_OUTSTANDING_COMMANDS_MASK 0xffff0000 | ||
42 | #define FCOE_OUTSTANDING_COMMANDS_SHIFT 16 | ||
43 | |||
44 | u32 capability4; | ||
45 | #define FCOE_CAPABILITY4_STATEFUL 0x00000001 | ||
46 | #define FCOE_CAPABILITY4_STATELESS 0x00000002 | ||
47 | #define FCOE_CAPABILITY4_CAPABILITIES_REPORTED_VALID 0x00000004 | ||
48 | }; | ||
49 | |||
50 | struct glob_ncsi_oem_data { | ||
51 | u32 driver_version; | ||
52 | u32 unused[3]; | ||
53 | struct fcoe_capabilities fcoe_features[NVM_PATH_MAX][PORT_MAX]; | ||
54 | }; | ||
55 | |||
56 | /* current drv_info version */ | ||
57 | #define DRV_INFO_CUR_VER 2 | ||
58 | |||
59 | /* drv_info op codes supported */ | ||
60 | enum drv_info_opcode { | ||
61 | ETH_STATS_OPCODE, | ||
62 | FCOE_STATS_OPCODE, | ||
63 | ISCSI_STATS_OPCODE | ||
64 | }; | ||
65 | |||
66 | #define ETH_STAT_INFO_VERSION_LEN 12 | ||
67 | /* Per PCI Function Ethernet Statistics required from the driver */ | ||
68 | struct eth_stats_info { | ||
69 | /* Function's Driver Version. padded to 12 */ | ||
70 | u8 version[ETH_STAT_INFO_VERSION_LEN]; | ||
71 | /* Locally Admin Addr. BigEndian EIU48. Actual size is 6 bytes */ | ||
72 | u8 mac_local[8]; | ||
73 | u8 mac_add1[8]; /* Additional Programmed MAC Addr 1. */ | ||
74 | u8 mac_add2[8]; /* Additional Programmed MAC Addr 2. */ | ||
75 | u32 mtu_size; /* MTU Size. Note : Negotiated MTU */ | ||
76 | u32 feature_flags; /* Feature_Flags. */ | ||
77 | #define FEATURE_ETH_CHKSUM_OFFLOAD_MASK 0x01 | ||
78 | #define FEATURE_ETH_LSO_MASK 0x02 | ||
79 | #define FEATURE_ETH_BOOTMODE_MASK 0x1C | ||
80 | #define FEATURE_ETH_BOOTMODE_SHIFT 2 | ||
81 | #define FEATURE_ETH_BOOTMODE_NONE (0x0 << 2) | ||
82 | #define FEATURE_ETH_BOOTMODE_PXE (0x1 << 2) | ||
83 | #define FEATURE_ETH_BOOTMODE_ISCSI (0x2 << 2) | ||
84 | #define FEATURE_ETH_BOOTMODE_FCOE (0x3 << 2) | ||
85 | #define FEATURE_ETH_TOE_MASK 0x20 | ||
86 | u32 lso_max_size; /* LSO MaxOffloadSize. */ | ||
87 | u32 lso_min_seg_cnt; /* LSO MinSegmentCount. */ | ||
88 | /* Num Offloaded Connections TCP_IPv4. */ | ||
89 | u32 ipv4_ofld_cnt; | ||
90 | /* Num Offloaded Connections TCP_IPv6. */ | ||
91 | u32 ipv6_ofld_cnt; | ||
92 | u32 promiscuous_mode; /* Promiscuous Mode. non-zero true */ | ||
93 | u32 txq_size; /* TX Descriptors Queue Size */ | ||
94 | u32 rxq_size; /* RX Descriptors Queue Size */ | ||
95 | /* TX Descriptor Queue Avg Depth. % Avg Queue Depth since last poll */ | ||
96 | u32 txq_avg_depth; | ||
97 | /* RX Descriptors Queue Avg Depth. % Avg Queue Depth since last poll */ | ||
98 | u32 rxq_avg_depth; | ||
99 | /* IOV_Offload. 0=none; 1=MultiQueue, 2=VEB 3= VEPA*/ | ||
100 | u32 iov_offload; | ||
101 | /* Number of NetQueue/VMQ Config'd. */ | ||
102 | u32 netq_cnt; | ||
103 | u32 vf_cnt; /* Num VF assigned to this PF. */ | ||
104 | }; | ||
105 | |||
106 | /* Per PCI Function FCOE Statistics required from the driver */ | ||
107 | struct fcoe_stats_info { | ||
108 | u8 version[12]; /* Function's Driver Version. */ | ||
109 | u8 mac_local[8]; /* Locally Admin Addr. */ | ||
110 | u8 mac_add1[8]; /* Additional Programmed MAC Addr 1. */ | ||
111 | u8 mac_add2[8]; /* Additional Programmed MAC Addr 2. */ | ||
112 | /* QoS Priority (per 802.1p). 0-7255 */ | ||
113 | u32 qos_priority; | ||
114 | u32 txq_size; /* FCoE TX Descriptors Queue Size. */ | ||
115 | u32 rxq_size; /* FCoE RX Descriptors Queue Size. */ | ||
116 | /* FCoE TX Descriptor Queue Avg Depth. */ | ||
117 | u32 txq_avg_depth; | ||
118 | /* FCoE RX Descriptors Queue Avg Depth. */ | ||
119 | u32 rxq_avg_depth; | ||
120 | u32 rx_frames_lo; /* FCoE RX Frames received. */ | ||
121 | u32 rx_frames_hi; /* FCoE RX Frames received. */ | ||
122 | u32 rx_bytes_lo; /* FCoE RX Bytes received. */ | ||
123 | u32 rx_bytes_hi; /* FCoE RX Bytes received. */ | ||
124 | u32 tx_frames_lo; /* FCoE TX Frames sent. */ | ||
125 | u32 tx_frames_hi; /* FCoE TX Frames sent. */ | ||
126 | u32 tx_bytes_lo; /* FCoE TX Bytes sent. */ | ||
127 | u32 tx_bytes_hi; /* FCoE TX Bytes sent. */ | ||
128 | }; | ||
129 | |||
130 | /* Per PCI Function iSCSI Statistics required from the driver*/ | ||
131 | struct iscsi_stats_info { | ||
132 | u8 version[12]; /* Function's Driver Version. */ | ||
133 | u8 mac_local[8]; /* Locally Admin iSCSI MAC Addr. */ | ||
134 | u8 mac_add1[8]; /* Additional Programmed MAC Addr 1. */ | ||
135 | /* QoS Priority (per 802.1p). 0-7255 */ | ||
136 | u32 qos_priority; | ||
137 | u8 initiator_name[64]; /* iSCSI Boot Initiator Node name. */ | ||
138 | u8 ww_port_name[64]; /* iSCSI World wide port name */ | ||
139 | u8 boot_target_name[64];/* iSCSI Boot Target Name. */ | ||
140 | u8 boot_target_ip[16]; /* iSCSI Boot Target IP. */ | ||
141 | u32 boot_target_portal; /* iSCSI Boot Target Portal. */ | ||
142 | u8 boot_init_ip[16]; /* iSCSI Boot Initiator IP Address. */ | ||
143 | u32 max_frame_size; /* Max Frame Size. bytes */ | ||
144 | u32 txq_size; /* PDU TX Descriptors Queue Size. */ | ||
145 | u32 rxq_size; /* PDU RX Descriptors Queue Size. */ | ||
146 | u32 txq_avg_depth; /* PDU TX Descriptor Queue Avg Depth. */ | ||
147 | u32 rxq_avg_depth; /* PDU RX Descriptors Queue Avg Depth. */ | ||
148 | u32 rx_pdus_lo; /* iSCSI PDUs received. */ | ||
149 | u32 rx_pdus_hi; /* iSCSI PDUs received. */ | ||
150 | u32 rx_bytes_lo; /* iSCSI RX Bytes received. */ | ||
151 | u32 rx_bytes_hi; /* iSCSI RX Bytes received. */ | ||
152 | u32 tx_pdus_lo; /* iSCSI PDUs sent. */ | ||
153 | u32 tx_pdus_hi; /* iSCSI PDUs sent. */ | ||
154 | u32 tx_bytes_lo; /* iSCSI PDU TX Bytes sent. */ | ||
155 | u32 tx_bytes_hi; /* iSCSI PDU TX Bytes sent. */ | ||
156 | u32 pcp_prior_map_tbl; /* C-PCP to S-PCP Priority MapTable. | ||
157 | * 9 nibbles, the position of each nibble | ||
158 | * represents the C-PCP value, the value | ||
159 | * of the nibble = S-PCP value. | ||
160 | */ | ||
161 | }; | ||
162 | |||
163 | union drv_info_to_mcp { | ||
164 | struct eth_stats_info ether_stat; | ||
165 | struct fcoe_stats_info fcoe_stat; | ||
166 | struct iscsi_stats_info iscsi_stat; | ||
167 | }; | ||
168 | #endif /* BNX2X_MFW_REQ_H */ | ||