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 */