1 #ifndef _COMMON_UIF_H
2 #define _COMMON_UIF_H
3 
4 /*
5 I M P O R T A N T
6 BEFORE YOU MODIFY THESE STRUCTS:
7 please make sure that DIAG was updated accordingly.
8 windiag\ediag should be checked to compile and run correctly
9 modification is in file: tcl_driver.c,  function: driver_init_stats_object,  macros: REGISTER_STAT_FIELD
10 */
11 
12 
13 /*******************************************************************************
14  * Hardware statistics structure for B10_IOC_GET_L2_CHIP_STATISTICS
15  ******************************************************************************/
16 typedef struct _b10_l2_chip_statistics_t
17 {
18     u64_t ver_num;
19     #define L2_CHIP_STATISTICS_VER_NUM_1 1
20     #define L2_CHIP_STATISTICS_VER_NUM_2 2
21     #define L2_CHIP_STATISTICS_VER_NUM_3 3
22     u64_t  IfHCInOctets;
23     u64_t  IfHCInBadOctets;
24     u64_t  IfHCOutOctets;
25     u64_t  IfHCOutBadOctets;
26     u64_t  IfHCOutPkts ;
27     u64_t  IfHCInPkts ;
28     u64_t  IfHCInUcastPkts;
29     u64_t  IfHCInMulticastPkts;
30     u64_t  IfHCInBroadcastPkts;
31     u64_t  IfHCOutUcastPkts;
32     u64_t  IfHCOutMulticastPkts;
33     u64_t  IfHCOutBroadcastPkts;
34     u64_t  IfHCInUcastOctets ;
35     u64_t  IfHCInMulticastOctets ;
36     u64_t  IfHCInBroadcastOctets ;
37     u64_t  IfHCOutUcastOctets ;
38     u64_t  IfHCOutMulticastOctets ;
39     u64_t  IfHCOutBroadcastOctets ;
40     u64_t  IfHCOutDiscards ;
41     u64_t  IfHCInFalseCarrierErrors ;
42     u64_t  Dot3StatsInternalMacTransmitErrors;
43     u64_t  Dot3StatsCarrierSenseErrors;
44     u64_t  Dot3StatsFCSErrors;
45     u64_t  Dot3StatsAlignmentErrors;
46     u64_t  Dot3StatsSingleCollisionFrames;
47     u64_t  Dot3StatsMultipleCollisionFrames;
48     u64_t  Dot3StatsDeferredTransmissions;
49     u64_t  Dot3StatsExcessiveCollisions;
50     u64_t  Dot3StatsLateCollisions;
51     u64_t  EtherStatsCollisions;
52     u64_t  EtherStatsFragments;
53     u64_t  EtherStatsJabbers;
54     u64_t  EtherStatsUndersizePkts;
55     u64_t  EtherStatsOverrsizePkts;
56     u64_t  EtherStatsPktsTx64Octets;
57     u64_t  EtherStatsPktsTx65Octetsto127Octets;
58     u64_t  EtherStatsPktsTx128Octetsto255Octets;
59     u64_t  EtherStatsPktsTx256Octetsto511Octets;
60     u64_t  EtherStatsPktsTx512Octetsto1023Octets;
61     u64_t  EtherStatsPktsTx1024Octetsto1522Octets;
62     u64_t  EtherStatsPktsTxOver1522Octets;
63     u64_t  XonPauseFramesReceived;
64     u64_t  XoffPauseFramesReceived;
65     u64_t  OutXonSent;
66     u64_t  OutXoffSent;
67     u64_t  FlowControlDone;
68     u64_t  MacControlFramesReceived;
69     u64_t  XoffStateEntered;
70     u64_t  IfInFramesL2FilterDiscards;
71     u64_t  IfInTTL0Discards ;
72     u64_t  IfInxxOverflowDiscards ;
73     u64_t  IfInMBUFDiscards;
74     u64_t  IfInErrors;
75     u64_t  IfInErrorsOctets;
76     u64_t  IfInNoBrbBuffer;
77     //u64_t  Reserved0 ;
78     //u64_t  Reserved1 ;
79     //u64_t  Reserved2 ;
80     //u64_t  Reserved3 ;
81 
82     // Nig statistics
83     u64_t  Nig_brb_packet             ;
84     u64_t  Nig_brb_truncate           ;
85     u64_t  Nig_flow_ctrl_discard      ;
86     u64_t  Nig_flow_ctrl_octets       ;
87     u64_t  Nig_flow_ctrl_packet       ;
88     u64_t  Nig_mng_discard            ;
89     u64_t  Nig_mng_octet_inp          ;
90     u64_t  Nig_mng_octet_out          ;
91     u64_t  Nig_mng_packet_inp         ;
92     u64_t  Nig_mng_packet_out         ;
93     u64_t  Nig_pbf_octets             ;
94     u64_t  Nig_pbf_packet             ;
95     u64_t  Nig_safc_inp               ;
96 
97 } b10_l2_chip_statistics_t;
98 
99 typedef struct _b10_l2_chip_statistics_v2_t
100 {
101     struct _b10_l2_chip_statistics_t v1;
102 
103     struct _v2
104     {
105         u64_t Tx_lpi_count;			// This counter counts the number of timers the debounced version of EEE link idle is asserted�
106     } v2;
107 
108 } b10_l2_chip_statistics_v2_t;
109 
110 typedef struct _b10_l2_chip_statistics_v3_t
111 {
112     struct  _b10_l2_chip_statistics_v2_t v2;
113     struct _v3
114     {
115         u64_t   coalesced_pkts        /* the number of packets coalesced in all aggregations */;
116         u64_t   coalesced_bytes       /* the number of bytes coalesced in all aggregations */;
117         u64_t   coalesced_events      /* the number of aggregations */;
118         u64_t   coalesced_aborts      /* the number of exception which avoid aggregation */;
119     } v3;
120 
121 } b10_l2_chip_statistics_v3_t;
122 
123 
124 /*******************************************************************************
125  * Hardware statistics structure for B10_IOC_GET_L4_CHIP_STATISTICS
126  ******************************************************************************/
127 typedef struct _b10_l4_chip_statistics_t
128 {
129     u64_t ver_num;
130     #define L4_CHIP_STATISTISTCS_VER_NUM 1
131     u64_t NoTxCqes ;
132     u64_t InTCP4Segments ;
133     u64_t OutTCP4Segments ;
134     u64_t RetransmittedTCP4Segments ;
135     u64_t InTCP4Errors ;
136     u64_t InIP4Receives ;
137     u64_t InIP4HeaderErrors ;
138     u64_t InIP4Discards ;
139     u64_t InIP4Delivers ;
140     u64_t InIP4Octets ;
141     u64_t OutIP4Octets ;
142     u64_t InIP4TruncatedPackets ;
143     u64_t InTCP6Segments ;
144     u64_t OutTCP6Segments ;
145     u64_t RetransmittedTCP6Segments ;
146     u64_t InTCP6Errors ;
147     u64_t InIP6Receives ;
148     u64_t InIP6HeaderErrors ;
149     u64_t InIP6Discards ;
150     u64_t InIP6Delivers ;
151     u64_t InIP6Octets ;
152     u64_t OutIP6Octets ;
153     u64_t InIP6TruncatedPackets ;
154     //u64_t Reserved0 ;
155     //u64_t Reserved1 ;
156     //u64_t Reserved2 ;
157     //u64_t Reserved3 ;
158 
159 } b10_l4_chip_statistics_t;
160 
161 /*******************************************************************************
162  * Driver statistics structure for B10_IOC_GET_L2_DRIVER_STATISTICS
163  ******************************************************************************/
164 typedef struct _b10_l2_driver_statistics_t
165 {
166     u64_t ver_num;
167     #define L2_DRIVER_STATISTISTCS_VER_NUM 1
168     u64_t RxIPv4FragCount;
169     u64_t RxIpCsErrorCount;
170     u64_t RxTcpCsErrorCount;
171     u64_t RxLlcSnapCount;
172     u64_t RxPhyErrorCount;
173     u64_t RxIpv6ExtCount;
174     u64_t TxNoL2Bd;
175     u64_t TxNoSqWqe;
176     u64_t TxL2AssemblyBufUse;
177     //u64_t Reserved0 ;
178     //u64_t Reserved1 ;
179     //u64_t Reserved2 ;
180     //u64_t Reserved3 ;
181 } b10_l2_driver_statistics_t;
182 
183 /*******************************************************************************
184  * Driver statistics structure for B10_IOC_GET_L4_DRIVER_STATISTICS
185  ******************************************************************************/
186 
187 typedef struct _b10_l4_driver_statistics_t
188 {
189     u64_t ver_num;
190     #define L4_DRIVER_STATISTISTCS_VER_NUM 1
191     u64_t CurrentlyIpv4Established ;
192     u64_t OutIpv4Resets ;
193     u64_t OutIpv4Fin ;
194     u64_t InIpv4Reset ;
195     u64_t InIpv4Fin ;
196     u64_t CurrentlyIpv6Established ;
197     u64_t OutIpv6Resets ;
198     u64_t OutIpv6Fin ;
199     u64_t InIpv6Reset ;
200     u64_t InIpv6Fin ;
201     u64_t RxIndicateReturnPendingCnt;
202     u64_t RxIndicateReturnDoneCnt;
203     u64_t RxActiveGenBufCnt;
204     u64_t TxNoL4Bd;
205     u64_t TxL4AssemblyBufUse ;
206     //u64_t Reserved0 ;
207     //u64_t Reserved1 ;
208     //u64_t Reserved2 ;
209     //u64_t Reserved3 ;
210 
211 } b10_l4_driver_statistics_t;
212 
213 /*******************************************************************************
214  * Driver statistics structure for B10_IOC_GET_DRIVER_STATISTICS.
215  ******************************************************************************/
216 typedef struct _b10_driver_statistics_t
217 {
218     u64_t ver_num;
219     #define DRIVER_STATISTISTCS_VER_NUM 1
220     u64_t tx_lso_frames;        // supported
221     u64_t tx_aborted;           // supported
222     u64_t tx_no_bd;
223     u64_t tx_no_desc;
224     u64_t tx_no_coalesce_buf;   // supported
225     u64_t tx_no_map_reg;
226     u64_t rx_aborted;           // supported
227     u64_t rx_err;
228     u64_t rx_crc;
229     u64_t rx_phy_err;
230     u64_t rx_alignment;
231     u64_t rx_short_packet;
232     u64_t rx_giant_packet;
233     //u64_t Reserved0 ;
234     //u64_t Reserved1 ;
235     //u64_t Reserved2 ;
236     //u64_t Reserved3 ;
237 } b10_driver_statistics_t;
238 
239 
240 #define DCBX_CONFIG_INV_VALUE            (0xFFFFFFFF)
241 enum
242 {
243     OVERWRITE_SETTINGS_DISABLE  = 0,
244     OVERWRITE_SETTINGS_ENABLE   = 1,
245     OVERWRITE_SETTINGS_INVALID  = DCBX_CONFIG_INV_VALUE
246 };
247 /*******************************************************************************
248  * LLDP protocol registry configuration parameters.
249  ******************************************************************************/
250 typedef struct _config_lldp_params_t
251 {
252     u32_t   overwrite_settings;
253     u32_t   msg_tx_hold;
254     u32_t   msg_fast_tx;
255     u32_t   tx_credit_max;
256     u32_t   msg_tx_interval;
257     u32_t   tx_fast;
258 }config_lldp_params_t;
259 
260 /*******************************************************************************
261  * LLDP structure for B10_IOC_GET_LLDP_PARAMS.
262  ******************************************************************************/
263 typedef struct _b10_lldp_params_get_t
264 {
265     u32_t ver_num;
266     #define LLDP_PARAMS_VER_NUM 2
267     config_lldp_params_t config_lldp_params;
268     // The reserved field should follow in case the struct above will increase
269     u32_t _reserved[50];
270     u32_t 	admin_status;
271         #define LLDP_TX_ONLY  0x01
272         #define LLDP_RX_ONLY  0x02
273         #define LLDP_TX_RX    0x03
274         #define LLDP_DISABLED 0x04
275     u32_t   remote_chassis_id[65];
276     u32_t   remote_port_id[65];
277     u32_t   local_chassis_id[2];
278     u32_t   local_port_id[2];
279 }b10_lldp_params_get_t;
280 
281 
282 /*******************************************************************************
283  * DCBX protocol registry configuration parameters.
284  ******************************************************************************/
285 
286 typedef struct _admin_priority_app_table_t
287 {
288     u32_t valid;
289     u32_t priority;
290 #define INVALID_TRAFFIC_TYPE_PRIORITY                  (0xFFFFFFFF)
291     u32_t traffic_type;
292     #define TRAFFIC_TYPE_ETH    0
293     #define TRAFFIC_TYPE_PORT   1
294     u32_t app_id;
295 }admin_priority_app_table_t;
296 
297 typedef struct _config_dcbx_params_t
298 {
299     u32_t dcb_enable;
300     u32_t admin_dcbx_enable;
301     // "admin_dcbx_enable" and "dcb_enable" are stand alone registry keys(if present
302     // will always be valid and not ignored), for all other DCBX registry set only
303     // if the entire DCBX registry set is present and differ from 0xFFFFFFFF (invalid
304     // value) the DCBX registry parameters are taken, otherwise the registry key set
305     // is ignored.)(Expect "admin_dcbx_enable" and "dcb_enable")
306     u32_t overwrite_settings;
307     u32_t admin_dcbx_version;
308     #define ADMIN_DCBX_VERSION_CEE 0
309     #define ADMIN_DCBX_VERSION_IEEE 1
310     u32_t admin_ets_enable;
311     u32_t admin_pfc_enable;
312     u32_t admin_tc_supported_tx_enable;
313     u32_t admin_ets_configuration_tx_enable;
314     u32_t admin_ets_recommendation_tx_enable;
315     u32_t admin_pfc_tx_enable;
316     u32_t admin_application_priority_tx_enable;
317     u32_t admin_ets_willing;
318     u32_t admin_ets_reco_valid;
319     u32_t admin_pfc_willing;
320     u32_t admin_app_priority_willing;
321     u32_t admin_configuration_bw_percentage[8];
322     u32_t admin_configuration_ets_pg[8];
323     u32_t admin_recommendation_bw_percentage[8];
324     u32_t admin_recommendation_ets_pg[8];
325     u32_t admin_pfc_bitmap;
326 
327     admin_priority_app_table_t admin_priority_app_table[4];
328     u32_t admin_default_priority;
329 }config_dcbx_params_t;
330 
331 
332 /*******************************************************************************
333  * DCBX structure for B10_IOC_GET_DCBX_PARAMS.
334  ******************************************************************************/
335 typedef struct _b10_dcbx_params_get_t
336 {
337     u32_t ver_num;
338     #define DCBX_PARAMS_VER_NUM 4
339     config_dcbx_params_t config_dcbx_params;
340     // The reserved field should follow in case the struct above will increase
341     u32_t _reserved[49];
342 
343     u32_t dcb_current_oper_state_bitmap;
344     #define DCBX_CURRENT_STATE_IS_SYNC                  (1 << 0)
345     #define PFC_IS_CURRENTLY_OPERATIONAL                (1 << 1)
346     #define ETS_IS_CURRENTLY_OPERATIONAL                (1 << 2)
347     #define PRIORITY_TAGGING_IS_CURRENTLY_OPERATIONAL   (1 << 3)
348     #define DRIVER_CONFIGURED_BY_OS_QOS                 (1 << 4)
349     #define DRIVER_CONFIGURED_BY_OS_QOS_TO_WILLING      (1 << 5)
350 
351 
352     u32_t local_tc_supported;
353     u32_t local_pfc_caps;
354     u32_t remote_tc_supported;
355     u32_t remote_pfc_cap;
356     u32_t remote_ets_willing;
357     u32_t remote_ets_reco_valid;
358     u32_t remote_pfc_willing;
359     u32_t remote_app_priority_willing;
360     u32_t remote_configuration_bw_percentage[8];
361     u32_t remote_configuration_ets_pg[8];
362     u32_t remote_recommendation_bw_percentage[8];
363     u32_t remote_recommendation_ets_pg[8];
364     u32_t remote_pfc_bitmap;
365     admin_priority_app_table_t remote_priority_app_table[16];
366     u32_t local_ets_enable;
367     u32_t local_pfc_enable;
368     u32_t local_configuration_bw_percentage[8];
369     u32_t local_configuration_ets_pg[8];
370     u32_t local_pfc_bitmap;
371     admin_priority_app_table_t local_priority_app_table[16];
372     u32_t pfc_mismatch;
373     u32_t priority_app_mismatch;
374     u32_t dcbx_frames_sent;
375     u32_t dcbx_frames_received;
376     u64_t pfc_frames_sent;
377     u64_t pfc_frames_received;
378 }b10_dcbx_params_get_t;
379 
380 /*******************************************************************************
381  * Transceiver Data B10_IOC_GET_TRANSCEIVER_DATA
382  ******************************************************************************/
383 
384 typedef struct _b10_transceiver_data_t
385 {
386     u8_t ver_num;
387     #define TRANSCEIVER_DATA_VER_NUM   1
388 
389     u8_t _pad[3];
390 
391     // NOTE: All these strings are ASCII buffers without trailing NULL '\0'
392 
393     u8_t vendor_name[16];  // ELINK_SFP_EEPROM_VENDOR_NAME_ADDR
394     u8_t model_num[16];    // ELINK_SFP_EEPROM_PART_NO_ADDR
395     u8_t serial_num[16];   // ELINK_SFP_EEPROM_SERIAL_ADDR
396     u8_t revision_num[4];  // ELINK_SFP_EEPROM_REVISION_ADDR
397     u8_t mfg_date[6];      // ELINK_SFP_EEPROM_DATE_ADDR
398 
399     u8_t _pad_[2];
400 
401     u32_t reserved[40];
402 
403 } b10_transceiver_data_t;
404 
405 #endif // _COMMON_UIF_H
406