Print this page
NEX-1890 update oce from source provided by Emulex
*** 17,28 ****
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
! /* Copyright © 2003-2011 Emulex. All rights reserved. */
/*
* header file containing the data structure definitions for the NIC
* subsystetm
*/
--- 17,33 ----
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
! /*
! * Copyright (c) 2009-2012 Emulex. All rights reserved.
! * Use is subject to license terms.
! */
+
+
/*
* header file containing the data structure definitions for the NIC
* subsystetm
*/
*** 49,58 ****
--- 54,65 ----
/* NIC WQ types */
#define NIC_WQ_TYPE_FORWARDING 0x01
#define NIC_WQ_TYPE_STANDARD 0x02
#define NIC_WQ_TYPE_LOW_LATENCY 0x04
+ #define INVALID_PMAC_ID 0xffffffff
+
#pragma pack(1)
enum {
OPCODE_CONFIG_NIC_RSS = 1,
OPCODE_CONFIG_NIC_ACPI = 2,
OPCODE_CONFIG_NIC_PROMISCUOUS = 3,
*** 64,74 ****
OPCODE_CREATE_NIC_RSS_CQ = 11,
OPCODE_DELETE_NIC_RSS_CQ = 12,
OPCODE_SET_RSS_EQ_MSI = 13,
OPCODE_CREATE_NIC_HDS_RQ = 14,
OPCODE_DELETE_NIC_HDS_RQ = 15,
! OPCODE_CONFIG_NIC_RSS_ADVANCED = 16
};
enum {
RSS_ENABLE_NONE = 0x0, /* (No RSS) */
RSS_ENABLE_IPV4 = 0x1, /* (IPV4 HASH enabled ) */
--- 71,82 ----
OPCODE_CREATE_NIC_RSS_CQ = 11,
OPCODE_DELETE_NIC_RSS_CQ = 12,
OPCODE_SET_RSS_EQ_MSI = 13,
OPCODE_CREATE_NIC_HDS_RQ = 14,
OPCODE_DELETE_NIC_HDS_RQ = 15,
! OPCODE_CONFIG_NIC_RSS_ADVANCED = 16,
! OPCODE_NIC_GET_PPORT_STATS = 18
};
enum {
RSS_ENABLE_NONE = 0x0, /* (No RSS) */
RSS_ENABLE_IPV4 = 0x1, /* (IPV4 HASH enabled ) */
*** 231,240 ****
--- 239,324 ----
union {
struct {
#ifdef _BIG_ENDIAN
/* dw 0 */
uint32_t ip_options:1;
+ uint32_t vlan_tag_present:1;
+ uint32_t pkt_size:14;
+ uint32_t vlan_tag:16;
+
+ /* dw 1 */
+ uint32_t num_fragments:3;
+ uint32_t switched:1;
+ uint32_t ct:2;
+ uint32_t frag_index:10;
+ uint32_t rsvd0:1;
+ uint32_t mac_dst:7;
+ uint32_t ip_ver:1;
+ uint32_t l4_cksum_pass:1;
+ uint32_t ip_cksum_pass:1;
+ uint32_t udpframe:1;
+ uint32_t tcpframe:1;
+ uint32_t ipframe:1;
+ uint32_t rss_hp:1;
+ uint32_t error:1;
+
+ /* dw 2 */
+ uint32_t valid:1;
+ uint32_t rsvd2:13;
+ uint32_t hds_type:2;
+ uint32_t hds_hdr_size:8;
+ uint32_t vntagp:1;
+ uint32_t port:2;
+ uint32_t rss_bank:1;
+ uint32_t qnq:1;
+ uint32_t pkt_type:2;
+ uint32_t rss_flush:1;
+
+ /* dw 3 */
+ uint32_t rss_hash_value;
+ #else
+ /* dw 0 */
+ uint32_t vlan_tag:16;
+ uint32_t pkt_size:14;
+ uint32_t vlan_tag_present:1;
+ uint32_t ip_options:1;
+ /* dw 1 */
+ uint32_t error:1;
+ uint32_t rss_hp:1;
+ uint32_t ipframe:1;
+ uint32_t tcpframe:1;
+ uint32_t udpframe:1;
+ uint32_t ip_cksum_pass:1;
+ uint32_t l4_cksum_pass:1;
+ uint32_t ip_ver:1;
+ uint32_t mac_dst:7;
+ uint32_t rsvd0:1;
+ uint32_t frag_index:10;
+ uint32_t ct:2;
+ uint32_t switched:1;
+ uint32_t num_fragments:3;
+
+ /* dw 2 */
+ uint32_t rss_flush:1;
+ uint32_t pkt_type:2;
+ uint32_t qnq:1;
+ uint32_t rss_bank:1;
+ uint32_t port:2;
+ uint32_t vntagp:1;
+ uint32_t hds_hdr_size:8;
+ uint32_t hds_type:2;
+ uint32_t rsvd2:13;
+ uint32_t valid:1;
+
+ /* dw 3 */
+ uint32_t rss_hash_value;
+ #endif
+ }s; /* native mode(BE3) */
+ struct {
+ #ifdef _BIG_ENDIAN
+ /* dw 0 */
+ uint32_t ip_options:1;
uint32_t port:1;
uint32_t pkt_size:14;
uint32_t vlan_tag:16;
/* dw 1 */
*** 254,268 ****
uint32_t rss_hp:1;
uint32_t error:1;
/* dw 2 */
uint32_t valid:1;
! uint32_t hds_type:2;
uint32_t lro_pkt:1;
! uint32_t rsvd4:1;
! uint32_t hds_hdr_size:12;
! uint32_t hds_hdr_frag_index:10;
uint32_t rss_bank:1;
uint32_t qnq:1;
uint32_t pkt_type:2;
uint32_t rss_flush:1;
--- 338,350 ----
uint32_t rss_hp:1;
uint32_t error:1;
/* dw 2 */
uint32_t valid:1;
! uint32_t rsvd2:2;
uint32_t lro_pkt:1;
! uint32_t rsvd1:23;
uint32_t rss_bank:1;
uint32_t qnq:1;
uint32_t pkt_type:2;
uint32_t rss_flush:1;
*** 294,313 ****
/* dw 2 */
uint32_t rss_flush:1;
uint32_t pkt_type:2;
uint32_t qnq:1;
uint32_t rss_bank:1;
! uint32_t hds_hdr_frag_index:10;
! uint32_t hds_hdr_size:12;
! uint32_t rsvd4:1;
uint32_t lro_pkt:1;
! uint32_t hds_type:2;
uint32_t valid:1;
/* dw 3 */
uint32_t rss_hash_value;
#endif
! }s;
uint32_t dw[4];
}u0;
};
#define RQ_CQE_VALID_MASK 0x80
#define RQ_CQE_VALID(_cqe) (_cqe->u0.dw[2])
--- 376,393 ----
/* dw 2 */
uint32_t rss_flush:1;
uint32_t pkt_type:2;
uint32_t qnq:1;
uint32_t rss_bank:1;
! uint32_t rsvd1:23;
uint32_t lro_pkt:1;
! uint32_t rsvd2:2;
uint32_t valid:1;
/* dw 3 */
uint32_t rss_hash_value;
#endif
! }v0; /* Legacy(BE2) */
uint32_t dw[4];
}u0;
};
#define RQ_CQE_VALID_MASK 0x80
#define RQ_CQE_VALID(_cqe) (_cqe->u0.dw[2])
*** 332,393 ****
uint32_t rsvd0;
}rsp;
}params;
};
/* [07] OPCODE_CREATE_NIC_WQ */
struct mbx_create_nic_wq {
/* dw0 - dw3 */
struct mbx_hdr hdr;
union {
struct {
#ifdef _BIG_ENDIAN
/* dw4 */
! uint8_t rsvd1;
! uint8_t nic_wq_type;
! uint8_t rsvd0;
uint8_t num_pages;
-
- /* dw5 */
- uint32_t rsvd3:12;
- uint32_t wq_size:4;
- uint32_t rsvd2:16;
-
- /* dw6 */
- uint32_t valid:1;
- uint32_t pd_id:9;
- uint32_t pci_function_id:8;
- uint32_t rsvd4:14;
-
- /* dw7 */
- uint32_t rsvd5:16;
- uint32_t cq_id:16;
#else
/* dw4 */
uint8_t num_pages;
! uint8_t rsvd0;
! uint8_t nic_wq_type;
! uint8_t rsvd1;
!
! /* dw5 */
! uint32_t rsvd2:16;
! uint32_t wq_size:4;
! uint32_t rsvd3:12;
!
! /* dw6 */
! uint32_t rsvd4:14;
! uint32_t pci_function_id:8;
! uint32_t pd_id:9;
! uint32_t valid:1;
!
! /* dw7 */
! uint32_t cq_id:16;
! uint32_t rsvd5:16;
#endif
! /* dw8 - dw20 */
! uint32_t rsvd6[13];
/* dw21 - dw36 */
struct phys_addr pages[8];
}req;
struct {
--- 412,491 ----
uint32_t rsvd0;
}rsp;
}params;
};
+ struct oce_tx_ctx {
+ #ifdef _BIG_ENDIAN
+ /* dw0 */
+ uint32_t rsvd0:12;
+ uint32_t wq_size:4;
+ uint32_t if_id:16;
+ /* dw1 */
+ uint32_t valid:1;
+ uint32_t pd_id:9;
+ uint32_t pci_function_id:8;
+ uint32_t rsvd1:14;
+ /* dw2 */
+ uint32_t rsvd2_1:1;
+ uint32_t no_rem_allowed:1;
+ uint32_t rsvd2:14;
+ uint32_t cq_id:16;
+ /* dw3 */
+ uint32_t rsvd3;
+ /* dw4 */
+ uint32_t rsvd4_1:10;
+ uint32_t cofe:1;
+ uint32_t rsvd4:21;
+ #else
+ /* dw0 */
+ uint32_t if_id:16;
+ uint32_t wq_size:4;
+ uint32_t rsvd0:12;
+ /* dw1 */
+ uint32_t rsvd1:14;
+ uint32_t pci_function_id:8;
+ uint32_t pd_id:9;
+ uint32_t valid:1;
+ /* dw2 */
+ uint32_t cq_id:16;
+ uint32_t rsvd2:14;
+ uint32_t no_rem_allowed:1;
+ uint32_t rsvd2_1:1;
+ /* dw3 */
+ uint32_t rsvd3;
+ /* dw4 */
+ uint32_t rsvd4:21;
+ uint32_t cofe:1;
+ uint32_t rsvd4_1:10;
+ #endif
+ /* dw5 - dw15 */
+ uint32_t rsvd5[11];
+ };
+
/* [07] OPCODE_CREATE_NIC_WQ */
struct mbx_create_nic_wq {
/* dw0 - dw3 */
struct mbx_hdr hdr;
union {
struct {
#ifdef _BIG_ENDIAN
/* dw4 */
! uint8_t port;
! uint8_t type;
! uint8_t ulp_num;
uint8_t num_pages;
#else
/* dw4 */
uint8_t num_pages;
! uint8_t ulp_num;
! uint8_t type;
! uint8_t port;
#endif
! /* dw5 - dw20 */
! struct oce_tx_ctx ctx;
/* dw21 - dw36 */
struct phys_addr pages[8];
}req;
struct {
*** 489,499 ****
uint32_t rsvd0;
}rsp;
}params;
};
! struct rx_port_stats {
uint32_t rx_bytes_lsd;
uint32_t rx_bytes_msd;
uint32_t rx_total_frames;
uint32_t rx_unicast_frames;
uint32_t rx_multicast_frames;
--- 587,597 ----
uint32_t rsvd0;
}rsp;
}params;
};
! struct rx_port_stats_v0 {
uint32_t rx_bytes_lsd;
uint32_t rx_bytes_msd;
uint32_t rx_total_frames;
uint32_t rx_unicast_frames;
uint32_t rx_multicast_frames;
*** 558,571 ****
uint32_t tx_8192_9216_byte_packets;
uint32_t rx_fifo_overflow;
uint32_t rx_input_fifo_overflow;
};
! struct rx_stats {
! /* dw 0-131 --2 X 66 */
! struct rx_port_stats port[2];
! /* dw 132-147 --16 */
uint32_t rx_drops_no_pbuf;
uint32_t rx_drops_no_txpb;
uint32_t rx_drops_no_erx_descr;
uint32_t rx_drops_no_tpre_descr;
uint32_t management_rx_port_packets;
--- 656,742 ----
uint32_t tx_8192_9216_byte_packets;
uint32_t rx_fifo_overflow;
uint32_t rx_input_fifo_overflow;
};
!
! struct rx_port_stats_v1 {
! uint32_t rx_bytes_lsd;
! uint32_t rx_bytes_msd;
! uint32_t rx_ipv4_bytes_lsd;
! uint32_t rx_ipv4_bytes_msd;
! uint32_t rx_ipv6_bytes_lsd;
! uint32_t rx_ipv6_bytes_msd;
! uint32_t tx_bytes_lsd;
! uint32_t tx_bytes_msd;
! uint32_t rx_total_frames;
! uint32_t rx_non_switched_unicast_frames;
! uint32_t rx_non_switched_multicast_frames;
! uint32_t rx_non_switched_broadcast_frames;
! uint32_t rx_crc_errors;
! uint32_t rx_alignment_symbol_errors;
! uint32_t rx_pause_frames;
! uint32_t rx_priority_pause_frames;
! uint32_t rx_control_frames;
! uint32_t rx_in_range_errors;
! uint32_t rx_out_range_errors;
! uint32_t rx_frame_too_long;
! uint32_t rx_address_match_errors;
! uint32_t rx_dropped_too_small;
! uint32_t rx_dropped_too_short;
! uint32_t rx_dropped_header_too_small;
! uint32_t rx_dropped_tcp_length;
! uint32_t rx_dropped_runt;
! uint32_t rx_64_byte_packets;
! uint32_t rx_65_127_byte_packets;
! uint32_t rx_128_256_byte_packets;
! uint32_t rx_256_511_byte_packets;
! uint32_t rx_512_1023_byte_packets;
! uint32_t rx_1024_1518_byte_packets;
! uint32_t rx_1519_2047_byte_packets;
! uint32_t rx_2048_4095_byte_packets;
! uint32_t rx_4096_8191_byte_packets;
! uint32_t rx_8192_9216_byte_packets;
! uint32_t rx_ip_checksum_errs;
! uint32_t rx_tcp_checksum_errs;
! uint32_t rx_udp_checksum_errs;
! uint32_t rx_non_rss_packets;
! uint32_t rx_ipv4_packets;
! uint32_t rx_ipv6_packets;
! uint32_t rx_chute1_packets;
! uint32_t rx_chute2_packets;
! uint32_t rx_chute3_packets;
! uint32_t rx_management_packets;
! uint32_t rx_switched_unicast_packets;
! uint32_t rx_switched_multicast_packets;
! uint32_t rx_switched_broadcast_packets;
! uint32_t tx_unicast_frames;
! uint32_t tx_multicast_frames;
! uint32_t tx_broadcast_frames;
! uint32_t tx_pause_frames;
! uint32_t tx_priority_pause_frames;
! uint32_t tx_control_frames;
! uint32_t tx_64_byte_packets;
! uint32_t tx_65_127_byte_packets;
! uint32_t tx_128_256_byte_packets;
! uint32_t tx_256_511_byte_packets;
! uint32_t tx_512_1023_byte_packets;
! uint32_t tx_1024_1518_byte_packets;
! uint32_t tx_1519_2047_byte_packets;
! uint32_t tx_2048_4095_byte_packets;
! uint32_t tx_4096_8191_byte_packets;
! uint32_t tx_8192_9216_byte_packets;
! uint32_t rxpp_fifo_overflow_drop;
! uint32_t rx_input_fifo_overflow_drop;
! uint32_t pmem_fifo_overflow_drop;
! uint32_t jabber_events;
! uint32_t rsvd2[3];
! };
!
!
! struct rx_stats_v0 {
! struct rx_port_stats_v0 port[2];
uint32_t rx_drops_no_pbuf;
uint32_t rx_drops_no_txpb;
uint32_t rx_drops_no_erx_descr;
uint32_t rx_drops_no_tpre_descr;
uint32_t management_rx_port_packets;
*** 578,591 ****
uint32_t management_rx_port_rxfifo_overflow;
uint32_t rx_drops_too_many_frags;
uint32_t rx_drops_invalid_ring;
uint32_t forwarded_packets;
uint32_t rx_drops_mtu;
! /* fcoe is not relevent */
! uint32_t rsvd[15];
};
struct tx_counter {
uint32_t pkts;
uint32_t lsd;
uint32_t msd;
};
--- 749,784 ----
uint32_t management_rx_port_rxfifo_overflow;
uint32_t rx_drops_too_many_frags;
uint32_t rx_drops_invalid_ring;
uint32_t forwarded_packets;
uint32_t rx_drops_mtu;
! uint32_t rsvd0[7]; /* fcoe is not relevent */
! uint32_t port0_jabber_events;
! uint32_t port1_jabber_events;
! uint32_t rsvd1[6];
};
+ struct rx_stats_v1 {
+ struct rx_port_stats_v1 port[4];
+ uint32_t rsvd0[2];
+ uint32_t rx_drops_no_pbuf;
+ uint32_t rx_drops_no_txpb;
+ uint32_t rx_drops_no_erx_descr;
+ uint32_t rx_drops_no_tpre_descr;
+ uint32_t management_rx_port_packets;
+ uint32_t management_rx_port_pause_frames;
+ uint32_t management_rx_port_errors;
+ uint32_t management_tx_port_packets;
+ uint32_t management_tx_port_pause;
+ uint32_t management_rx_port_rxfifo_overflow;
+ uint32_t rx_drops_too_many_frags;
+ uint32_t rx_drops_invalid_ring;
+ uint32_t forwarded_packets;
+ uint32_t rx_drops_mtu;
+ uint32_t rsvd1[14]; /* fcoe is not relevent */
+ };
+
struct tx_counter {
uint32_t pkts;
uint32_t lsd;
uint32_t msd;
};
*** 607,645 ****
struct tx_counter ct2pt1_xmt_ipv6_ctrs;
struct tx_counter ct2pt1_rexmt_ipv4_ctrs;
struct tx_counter ct2pt1_rexmt_ipv6_ctrs;
};
! struct rx_err_stats {
uint32_t rx_drops_no_fragments[44];
uint32_t debug_wdma_sent_hold;
uint32_t debug_wdma_pbfree_sent_hold;
uint32_t debug_wdma_zerobyte_pbfree_sent_hold;
uint32_t debug_pmem_pbuf_dealloc;
};
struct mem_stats {
uint32_t eth_red_drops;
uint32_t lro_red_drops;
uint32_t ulp0_red_drops;
uint32_t ulp1_red_drops;
};
/* [04] OPCODE_GET_NIC_STATS */
struct mbx_get_nic_stats {
/* dw0 - dw3 */
struct mbx_hdr hdr;
union {
struct {
uint32_t rsvd0;
}req;
struct {
! struct rx_stats rx;
! struct tx_stats tx;
! struct rx_err_stats err_rx;
! struct mem_stats mem;
}rsp;
}params;
};
/* [01] OPCODE_CONFIG_NIC_RSS */
--- 800,1052 ----
struct tx_counter ct2pt1_xmt_ipv6_ctrs;
struct tx_counter ct2pt1_rexmt_ipv4_ctrs;
struct tx_counter ct2pt1_rexmt_ipv6_ctrs;
};
! struct rx_err_stats_v0 {
uint32_t rx_drops_no_fragments[44];
uint32_t debug_wdma_sent_hold;
uint32_t debug_wdma_pbfree_sent_hold;
uint32_t debug_wdma_zerobyte_pbfree_sent_hold;
uint32_t debug_pmem_pbuf_dealloc;
};
+ struct rx_err_stats_v1 {
+ uint32_t rx_drops_no_fragments[68];
+ uint32_t debug_wdma_sent_hold;
+ uint32_t debug_wdma_pbfree_sent_hold;
+ uint32_t debug_wdma_zerobyte_pbfree_sent_hold;
+ uint32_t debug_pmem_pbuf_dealloc;
+ };
+
struct mem_stats {
uint32_t eth_red_drops;
uint32_t lro_red_drops;
uint32_t ulp0_red_drops;
uint32_t ulp1_red_drops;
+ uint32_t rsvd;
+ uint32_t global_red_drops;
};
+
+ struct be_hw_stats_v0 {
+ struct rx_stats_v0 rx;
+ struct tx_stats tx;
+ struct rx_err_stats_v0 err_rx;
+ struct mem_stats mem;
+ };
+
+ struct be_hw_stats_v1 {
+ struct rx_stats_v1 rx;
+ struct tx_stats tx;
+ struct rx_err_stats_v1 err_rx;
+ struct mem_stats mem;
+ uint32_t rsvd1[18];
+ };
+
+
/* [04] OPCODE_GET_NIC_STATS */
struct mbx_get_nic_stats {
/* dw0 - dw3 */
struct mbx_hdr hdr;
union {
struct {
uint32_t rsvd0;
}req;
+ union {
+ struct be_hw_stats_v0 v0;
+ struct be_hw_stats_v1 v1;
+ }rsp;
+ }params;
+ };
+
+ /* Lancer Stats */
+ struct lancer_cmd_pport_stats {
+ uint32_t tx_packets_lo;
+ uint32_t tx_packets_hi;
+ uint32_t tx_unicast_packets_lo;
+ uint32_t tx_unicast_packets_hi;
+ uint32_t tx_multicast_packets_lo;
+ uint32_t tx_multicast_packets_hi;
+ uint32_t tx_broadcast_packets_lo;
+ uint32_t tx_broadcast_packets_hi;
+ uint32_t tx_bytes_lo;
+ uint32_t tx_bytes_hi;
+ uint32_t tx_unicast_bytes_lo;
+ uint32_t tx_unicast_bytes_hi;
+ uint32_t tx_multicast_bytes_lo;
+ uint32_t tx_multicast_bytes_hi;
+ uint32_t tx_broadcast_bytes_lo;
+ uint32_t tx_broadcast_bytes_hi;
+ uint32_t tx_discards_lo;
+ uint32_t tx_discards_hi;
+ uint32_t tx_errors_lo;
+ uint32_t tx_errors_hi;
+ uint32_t tx_pause_frames_lo;
+ uint32_t tx_pause_frames_hi;
+ uint32_t tx_pause_on_frames_lo;
+ uint32_t tx_pause_on_frames_hi;
+ uint32_t tx_pause_off_frames_lo;
+ uint32_t tx_pause_off_frames_hi;
+ uint32_t tx_internal_mac_errors_lo;
+ uint32_t tx_internal_mac_errors_hi;
+ uint32_t tx_control_frames_lo;
+ uint32_t tx_control_frames_hi;
+ uint32_t tx_packets_64_bytes_lo;
+ uint32_t tx_packets_64_bytes_hi;
+ uint32_t tx_packets_65_to_127_bytes_lo;
+ uint32_t tx_packets_65_to_127_bytes_hi;
+ uint32_t tx_packets_128_to_255_bytes_lo;
+ uint32_t tx_packets_128_to_255_bytes_hi;
+ uint32_t tx_packets_256_to_511_bytes_lo;
+ uint32_t tx_packets_256_to_511_bytes_hi;
+ uint32_t tx_packets_512_to_1023_bytes_lo;
+ uint32_t tx_packets_512_to_1023_bytes_hi;
+ uint32_t tx_packets_1024_to_1518_bytes_lo;
+ uint32_t tx_packets_1024_to_1518_bytes_hi;
+ uint32_t tx_packets_1519_to_2047_bytes_lo;
+ uint32_t tx_packets_1519_to_2047_bytes_hi;
+ uint32_t tx_packets_2048_to_4095_bytes_lo;
+ uint32_t tx_packets_2048_to_4095_bytes_hi;
+ uint32_t tx_packets_4096_to_8191_bytes_lo;
+ uint32_t tx_packets_4096_to_8191_bytes_hi;
+ uint32_t tx_packets_8192_to_9216_bytes_lo;
+ uint32_t tx_packets_8192_to_9216_bytes_hi;
+ uint32_t tx_lso_packets_lo;
+ uint32_t tx_lso_packets_hi;
+ uint32_t rx_packets_lo;
+ uint32_t rx_packets_hi;
+ uint32_t rx_unicast_packets_lo;
+ uint32_t rx_unicast_packets_hi;
+ uint32_t rx_multicast_packets_lo;
+ uint32_t rx_multicast_packets_hi;
+ uint32_t rx_broadcast_packets_lo;
+ uint32_t rx_broadcast_packets_hi;
+ uint32_t rx_bytes_lo;
+ uint32_t rx_bytes_hi;
+ uint32_t rx_unicast_bytes_lo;
+ uint32_t rx_unicast_bytes_hi;
+ uint32_t rx_multicast_bytes_lo;
+ uint32_t rx_multicast_bytes_hi;
+ uint32_t rx_broadcast_bytes_lo;
+ uint32_t rx_broadcast_bytes_hi;
+ uint32_t rx_unknown_protos;
+ uint32_t rsvd_69;
+ uint32_t rx_discards_lo;
+ uint32_t rx_discards_hi;
+ uint32_t rx_errors_lo;
+ uint32_t rx_errors_hi;
+ uint32_t rx_crc_errors_lo;
+ uint32_t rx_crc_errors_hi;
+ uint32_t rx_alignment_errors_lo;
+ uint32_t rx_alignment_errors_hi;
+ uint32_t rx_symbol_errors_lo;
+ uint32_t rx_symbol_errors_hi;
+ uint32_t rx_pause_frames_lo;
+ uint32_t rx_pause_frames_hi;
+ uint32_t rx_pause_on_frames_lo;
+ uint32_t rx_pause_on_frames_hi;
+ uint32_t rx_pause_off_frames_lo;
+ uint32_t rx_pause_off_frames_hi;
+ uint32_t rx_frames_too_long_lo;
+ uint32_t rx_frames_too_long_hi;
+ uint32_t rx_internal_mac_errors_lo;
+ uint32_t rx_internal_mac_errors_hi;
+ uint32_t rx_undersize_packets;
+ uint32_t rx_oversize_packets;
+ uint32_t rx_fragment_packets;
+ uint32_t rx_jabbers;
+ uint32_t rx_control_frames_lo;
+ uint32_t rx_control_frames_hi;
+ uint32_t rx_control_frames_unknown_opcode_lo;
+ uint32_t rx_control_frames_unknown_opcode_hi;
+ uint32_t rx_in_range_errors;
+ uint32_t rx_out_of_range_errors;
+ uint32_t rx_address_match_errors;
+ uint32_t rx_vlan_mismatch_errors;
+ uint32_t rx_dropped_too_small;
+ uint32_t rx_dropped_too_short;
+ uint32_t rx_dropped_header_too_small;
+ uint32_t rx_dropped_invalid_tcp_length;
+ uint32_t rx_dropped_runt;
+ uint32_t rx_ip_checksum_errors;
+ uint32_t rx_tcp_checksum_errors;
+ uint32_t rx_udp_checksum_errors;
+ uint32_t rx_non_rss_packets;
+ uint32_t rsvd_111;
+ uint32_t rx_ipv4_packets_lo;
+ uint32_t rx_ipv4_packets_hi;
+ uint32_t rx_ipv6_packets_lo;
+ uint32_t rx_ipv6_packets_hi;
+ uint32_t rx_ipv4_bytes_lo;
+ uint32_t rx_ipv4_bytes_hi;
+ uint32_t rx_ipv6_bytes_lo;
+ uint32_t rx_ipv6_bytes_hi;
+ uint32_t rx_nic_packets_lo;
+ uint32_t rx_nic_packets_hi;
+ uint32_t rx_tcp_packets_lo;
+ uint32_t rx_tcp_packets_hi;
+ uint32_t rx_iscsi_packets_lo;
+ uint32_t rx_iscsi_packets_hi;
+ uint32_t rx_management_packets_lo;
+ uint32_t rx_management_packets_hi;
+ uint32_t rx_switched_unicast_packets_lo;
+ uint32_t rx_switched_unicast_packets_hi;
+ uint32_t rx_switched_multicast_packets_lo;
+ uint32_t rx_switched_multicast_packets_hi;
+ uint32_t rx_switched_broadcast_packets_lo;
+ uint32_t rx_switched_broadcast_packets_hi;
+ uint32_t num_forwards_lo;
+ uint32_t num_forwards_hi;
+ uint32_t rx_fifo_overflow;
+ uint32_t rx_input_fifo_overflow;
+ uint32_t rx_drops_too_many_frags_lo;
+ uint32_t rx_drops_too_many_frags_hi;
+ uint32_t rx_drops_invalid_queue;
+ uint32_t rsvd_141;
+ uint32_t rx_drops_mtu_lo;
+ uint32_t rx_drops_mtu_hi;
+ uint32_t rx_packets_64_bytes_lo;
+ uint32_t rx_packets_64_bytes_hi;
+ uint32_t rx_packets_65_to_127_bytes_lo;
+ uint32_t rx_packets_65_to_127_bytes_hi;
+ uint32_t rx_packets_128_to_255_bytes_lo;
+ uint32_t rx_packets_128_to_255_bytes_hi;
+ uint32_t rx_packets_256_to_511_bytes_lo;
+ uint32_t rx_packets_256_to_511_bytes_hi;
+ uint32_t rx_packets_512_to_1023_bytes_lo;
+ uint32_t rx_packets_512_to_1023_bytes_hi;
+ uint32_t rx_packets_1024_to_1518_bytes_lo;
+ uint32_t rx_packets_1024_to_1518_bytes_hi;
+ uint32_t rx_packets_1519_to_2047_bytes_lo;
+ uint32_t rx_packets_1519_to_2047_bytes_hi;
+ uint32_t rx_packets_2048_to_4095_bytes_lo;
+ uint32_t rx_packets_2048_to_4095_bytes_hi;
+ uint32_t rx_packets_4096_to_8191_bytes_lo;
+ uint32_t rx_packets_4096_to_8191_bytes_hi;
+ uint32_t rx_packets_8192_to_9216_bytes_lo;
+ uint32_t rx_packets_8192_to_9216_bytes_hi;
+ };
+
+ struct pport_stats_params {
+ uint16_t pport_num;
+ uint8_t rsvd;
+ uint8_t reset_stats;
+ };
+
+ /* [18] OPCODE_NIC_GET_PPORT_STATS */
+ struct mbx_get_pport_stats {
+ /* dw0 - dw3 */
+ struct mbx_hdr hdr;
+ union {
struct {
! struct pport_stats_params arg;
! }req;
!
! struct {
! struct lancer_cmd_pport_stats pport_stats;
}rsp;
}params;
};
/* [01] OPCODE_CONFIG_NIC_RSS */