14d0e5007SSukumar Swaminathan /* 24d0e5007SSukumar Swaminathan * CDDL HEADER START 34d0e5007SSukumar Swaminathan * 44d0e5007SSukumar Swaminathan * The contents of this file are subject to the terms of the 54d0e5007SSukumar Swaminathan * Common Development and Distribution License (the "License"). 64d0e5007SSukumar Swaminathan * You may not use this file except in compliance with the License. 74d0e5007SSukumar Swaminathan * 84d0e5007SSukumar Swaminathan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 94d0e5007SSukumar Swaminathan * or http://www.opensolaris.org/os/licensing. 104d0e5007SSukumar Swaminathan * See the License for the specific language governing permissions 114d0e5007SSukumar Swaminathan * and limitations under the License. 124d0e5007SSukumar Swaminathan * 134d0e5007SSukumar Swaminathan * When distributing Covered Code, include this CDDL HEADER in each 144d0e5007SSukumar Swaminathan * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 154d0e5007SSukumar Swaminathan * If applicable, add the following below this CDDL HEADER, with the 164d0e5007SSukumar Swaminathan * fields enclosed by brackets "[]" replaced with your own identifying 174d0e5007SSukumar Swaminathan * information: Portions Copyright [yyyy] [name of copyright owner] 184d0e5007SSukumar Swaminathan * 194d0e5007SSukumar Swaminathan * CDDL HEADER END 204d0e5007SSukumar Swaminathan */ 214d0e5007SSukumar Swaminathan 22*3abb112fSGarrett D'Amore /* Copyright © 2003-2011 Emulex. All rights reserved. */ 234d0e5007SSukumar Swaminathan 244d0e5007SSukumar Swaminathan /* 254d0e5007SSukumar Swaminathan * header file containing the data structure definitions for the NIC 264d0e5007SSukumar Swaminathan * subsystetm 274d0e5007SSukumar Swaminathan */ 284d0e5007SSukumar Swaminathan 294d0e5007SSukumar Swaminathan #ifndef _OCE_HW_ETH_H_ 304d0e5007SSukumar Swaminathan #define _OCE_HW_ETH_H_ 314d0e5007SSukumar Swaminathan 324d0e5007SSukumar Swaminathan #ifdef __cplusplus 334d0e5007SSukumar Swaminathan extern "C" { 344d0e5007SSukumar Swaminathan #endif 354d0e5007SSukumar Swaminathan 364d0e5007SSukumar Swaminathan #include <oce_hw.h> 374d0e5007SSukumar Swaminathan 384d0e5007SSukumar Swaminathan #define NIC_WQE_SIZE 16 394d0e5007SSukumar Swaminathan /* NIC packet type */ 404d0e5007SSukumar Swaminathan #define NIC_UNICAST 0x00 414d0e5007SSukumar Swaminathan #define NIC_MULTICAST 0x01 424d0e5007SSukumar Swaminathan #define NIC_BROADCAST 0x02 434d0e5007SSukumar Swaminathan 444d0e5007SSukumar Swaminathan /* HDS type */ 454d0e5007SSukumar Swaminathan #define NIC_HDS_NO_SPLIT 0x00 464d0e5007SSukumar Swaminathan #define NIC_HDS_SPLIT_L3PL 0x01 474d0e5007SSukumar Swaminathan #define NIC_HDS_SPLIT_L4PL 0x02 484d0e5007SSukumar Swaminathan 494d0e5007SSukumar Swaminathan /* NIC WQ types */ 504d0e5007SSukumar Swaminathan #define NIC_WQ_TYPE_FORWARDING 0x01 514d0e5007SSukumar Swaminathan #define NIC_WQ_TYPE_STANDARD 0x02 524d0e5007SSukumar Swaminathan #define NIC_WQ_TYPE_LOW_LATENCY 0x04 534d0e5007SSukumar Swaminathan 544d0e5007SSukumar Swaminathan #pragma pack(1) 554d0e5007SSukumar Swaminathan enum { 564d0e5007SSukumar Swaminathan OPCODE_CONFIG_NIC_RSS = 1, 574d0e5007SSukumar Swaminathan OPCODE_CONFIG_NIC_ACPI = 2, 584d0e5007SSukumar Swaminathan OPCODE_CONFIG_NIC_PROMISCUOUS = 3, 594d0e5007SSukumar Swaminathan OPCODE_GET_NIC_STATS = 4, 604d0e5007SSukumar Swaminathan OPCODE_CREATE_NIC_WQ = 7, 614d0e5007SSukumar Swaminathan OPCODE_CREATE_NIC_RQ = 8, 624d0e5007SSukumar Swaminathan OPCODE_DELETE_NIC_WQ = 9, 634d0e5007SSukumar Swaminathan OPCODE_DELETE_NIC_RQ = 10, 644d0e5007SSukumar Swaminathan OPCODE_CREATE_NIC_RSS_CQ = 11, 654d0e5007SSukumar Swaminathan OPCODE_DELETE_NIC_RSS_CQ = 12, 664d0e5007SSukumar Swaminathan OPCODE_SET_RSS_EQ_MSI = 13, 674d0e5007SSukumar Swaminathan OPCODE_CREATE_NIC_HDS_RQ = 14, 684d0e5007SSukumar Swaminathan OPCODE_DELETE_NIC_HDS_RQ = 15, 694d0e5007SSukumar Swaminathan OPCODE_CONFIG_NIC_RSS_ADVANCED = 16 704d0e5007SSukumar Swaminathan }; 714d0e5007SSukumar Swaminathan 725b9d3151SSukumar Swaminathan enum { 735b9d3151SSukumar Swaminathan RSS_ENABLE_NONE = 0x0, /* (No RSS) */ 745b9d3151SSukumar Swaminathan RSS_ENABLE_IPV4 = 0x1, /* (IPV4 HASH enabled ) */ 755b9d3151SSukumar Swaminathan RSS_ENABLE_TCP_IPV4 = 0x2, /* (TCP IPV4 Hash enabled) */ 765b9d3151SSukumar Swaminathan RSS_ENABLE_IPV6 = 0x4, /* (IPV6 HASH enabled) */ 775b9d3151SSukumar Swaminathan RSS_ENABLE_TCP_IPV6 = 0x8 /* (TCP IPV6 HASH */ 785b9d3151SSukumar Swaminathan 795b9d3151SSukumar Swaminathan }; 804d0e5007SSukumar Swaminathan /* NIC header WQE */ 814d0e5007SSukumar Swaminathan struct oce_nic_hdr_wqe { 824d0e5007SSukumar Swaminathan union { 834d0e5007SSukumar Swaminathan struct { 844d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 854d0e5007SSukumar Swaminathan /* dw0 */ 864d0e5007SSukumar Swaminathan uint32_t rsvd0; 874d0e5007SSukumar Swaminathan 884d0e5007SSukumar Swaminathan /* dw1 */ 894d0e5007SSukumar Swaminathan uint32_t last_seg_udp_len:14; 904d0e5007SSukumar Swaminathan uint32_t rsvd1:18; 914d0e5007SSukumar Swaminathan 924d0e5007SSukumar Swaminathan /* dw2 */ 934d0e5007SSukumar Swaminathan uint32_t lso_mss:14; 944d0e5007SSukumar Swaminathan uint32_t num_wqe:5; 954d0e5007SSukumar Swaminathan uint32_t rsvd4:2; 964d0e5007SSukumar Swaminathan uint32_t vlan:1; 974d0e5007SSukumar Swaminathan uint32_t lso:1; 984d0e5007SSukumar Swaminathan uint32_t tcpcs:1; 994d0e5007SSukumar Swaminathan uint32_t udpcs:1; 1004d0e5007SSukumar Swaminathan uint32_t ipcs:1; 1014d0e5007SSukumar Swaminathan uint32_t rsvd3:1; 1024d0e5007SSukumar Swaminathan uint32_t rsvd2:1; 1034d0e5007SSukumar Swaminathan uint32_t forward:1; 1044d0e5007SSukumar Swaminathan uint32_t crc:1; 1054d0e5007SSukumar Swaminathan uint32_t event:1; 1064d0e5007SSukumar Swaminathan uint32_t complete:1; 1074d0e5007SSukumar Swaminathan 1084d0e5007SSukumar Swaminathan /* dw3 */ 1094d0e5007SSukumar Swaminathan uint32_t vlan_tag:16; 1104d0e5007SSukumar Swaminathan uint32_t total_length:16; 1114d0e5007SSukumar Swaminathan #else 1124d0e5007SSukumar Swaminathan /* dw0 */ 1134d0e5007SSukumar Swaminathan uint32_t rsvd0; 1144d0e5007SSukumar Swaminathan 1154d0e5007SSukumar Swaminathan /* dw1 */ 1164d0e5007SSukumar Swaminathan uint32_t rsvd1:18; 1174d0e5007SSukumar Swaminathan uint32_t last_seg_udp_len:14; 1184d0e5007SSukumar Swaminathan 1194d0e5007SSukumar Swaminathan /* dw2 */ 1204d0e5007SSukumar Swaminathan uint32_t complete:1; 1214d0e5007SSukumar Swaminathan uint32_t event:1; 1224d0e5007SSukumar Swaminathan uint32_t crc:1; 1234d0e5007SSukumar Swaminathan uint32_t forward:1; 1244d0e5007SSukumar Swaminathan uint32_t rsvd2:1; 1254d0e5007SSukumar Swaminathan uint32_t rsvd3:1; 1264d0e5007SSukumar Swaminathan uint32_t ipcs:1; 1274d0e5007SSukumar Swaminathan uint32_t udpcs:1; 1284d0e5007SSukumar Swaminathan uint32_t tcpcs:1; 1294d0e5007SSukumar Swaminathan uint32_t lso:1; 1304d0e5007SSukumar Swaminathan uint32_t vlan:1; 1314d0e5007SSukumar Swaminathan uint32_t rsvd4:2; 1324d0e5007SSukumar Swaminathan uint32_t num_wqe:5; 1334d0e5007SSukumar Swaminathan uint32_t lso_mss:14; 1344d0e5007SSukumar Swaminathan 1354d0e5007SSukumar Swaminathan /* dw3 */ 1364d0e5007SSukumar Swaminathan uint32_t total_length:16; 1374d0e5007SSukumar Swaminathan uint32_t vlan_tag:16; 1384d0e5007SSukumar Swaminathan #endif 1394d0e5007SSukumar Swaminathan }s; 1404d0e5007SSukumar Swaminathan uint32_t dw[4]; 1414d0e5007SSukumar Swaminathan }u0; 1424d0e5007SSukumar Swaminathan }; 1434d0e5007SSukumar Swaminathan 1444d0e5007SSukumar Swaminathan /* NIC fragment WQE */ 1454d0e5007SSukumar Swaminathan struct oce_nic_frag_wqe { 1464d0e5007SSukumar Swaminathan union { 1474d0e5007SSukumar Swaminathan struct { 1484d0e5007SSukumar Swaminathan /* dw0 */ 1494d0e5007SSukumar Swaminathan uint32_t frag_pa_hi; 1504d0e5007SSukumar Swaminathan /* dw1 */ 1514d0e5007SSukumar Swaminathan uint32_t frag_pa_lo; 1524d0e5007SSukumar Swaminathan /* dw2 */ 1534d0e5007SSukumar Swaminathan uint32_t rsvd0; 1544d0e5007SSukumar Swaminathan uint32_t frag_len; 1554d0e5007SSukumar Swaminathan }s; 1564d0e5007SSukumar Swaminathan uint32_t dw[4]; 1574d0e5007SSukumar Swaminathan }u0; 1584d0e5007SSukumar Swaminathan }; 1594d0e5007SSukumar Swaminathan 1604d0e5007SSukumar Swaminathan /* Ethernet Tx Completion Descriptor */ 1614d0e5007SSukumar Swaminathan struct oce_nic_tx_cqe { 1624d0e5007SSukumar Swaminathan union { 1634d0e5007SSukumar Swaminathan struct { 1644d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 1654d0e5007SSukumar Swaminathan /* dw 0 */ 1664d0e5007SSukumar Swaminathan uint32_t status:4; 1674d0e5007SSukumar Swaminathan uint32_t rsvd0:8; 1684d0e5007SSukumar Swaminathan uint32_t port:2; 1694d0e5007SSukumar Swaminathan uint32_t ct:2; 1704d0e5007SSukumar Swaminathan uint32_t wqe_index:16; 1714d0e5007SSukumar Swaminathan 1724d0e5007SSukumar Swaminathan /* dw 1 */ 1734d0e5007SSukumar Swaminathan uint32_t rsvd1:5; 1744d0e5007SSukumar Swaminathan uint32_t cast_enc:2; 1754d0e5007SSukumar Swaminathan uint32_t lso:1; 1764d0e5007SSukumar Swaminathan uint32_t nwh_bytes:8; 1774d0e5007SSukumar Swaminathan uint32_t user_bytes:16; 1784d0e5007SSukumar Swaminathan 1794d0e5007SSukumar Swaminathan /* dw 2 */ 1804d0e5007SSukumar Swaminathan uint32_t rsvd2; 1814d0e5007SSukumar Swaminathan 1824d0e5007SSukumar Swaminathan 1834d0e5007SSukumar Swaminathan /* dw 3 */ 1844d0e5007SSukumar Swaminathan uint32_t valid:1; 1854d0e5007SSukumar Swaminathan uint32_t rsvd3:4; 1864d0e5007SSukumar Swaminathan uint32_t wq_id:11; 1874d0e5007SSukumar Swaminathan uint32_t num_pkts:16; 1884d0e5007SSukumar Swaminathan #else 1894d0e5007SSukumar Swaminathan /* dw 0 */ 1904d0e5007SSukumar Swaminathan uint32_t wqe_index:16; 1914d0e5007SSukumar Swaminathan uint32_t ct:2; 1924d0e5007SSukumar Swaminathan uint32_t port:2; 1934d0e5007SSukumar Swaminathan uint32_t rsvd0:8; 1944d0e5007SSukumar Swaminathan uint32_t status:4; 1954d0e5007SSukumar Swaminathan 1964d0e5007SSukumar Swaminathan /* dw 1 */ 1974d0e5007SSukumar Swaminathan uint32_t user_bytes:16; 1984d0e5007SSukumar Swaminathan uint32_t nwh_bytes:8; 1994d0e5007SSukumar Swaminathan uint32_t lso:1; 2004d0e5007SSukumar Swaminathan uint32_t cast_enc:2; 2014d0e5007SSukumar Swaminathan uint32_t rsvd1:5; 2024d0e5007SSukumar Swaminathan /* dw 2 */ 2034d0e5007SSukumar Swaminathan uint32_t rsvd2; 2044d0e5007SSukumar Swaminathan 2054d0e5007SSukumar Swaminathan /* dw 3 */ 2064d0e5007SSukumar Swaminathan uint32_t num_pkts:16; 2074d0e5007SSukumar Swaminathan uint32_t wq_id:11; 2084d0e5007SSukumar Swaminathan uint32_t rsvd3:4; 2094d0e5007SSukumar Swaminathan uint32_t valid:1; 2104d0e5007SSukumar Swaminathan #endif 2114d0e5007SSukumar Swaminathan }s; 2124d0e5007SSukumar Swaminathan uint32_t dw[4]; 2134d0e5007SSukumar Swaminathan }u0; 2144d0e5007SSukumar Swaminathan }; 2154d0e5007SSukumar Swaminathan #define WQ_CQE_VALID(_cqe) (_cqe->u0.dw[3]) 2164d0e5007SSukumar Swaminathan #define WQ_CQE_INVALIDATE(_cqe) (_cqe->u0.dw[3] = 0) 2174d0e5007SSukumar Swaminathan 2184d0e5007SSukumar Swaminathan /* Receive Queue Entry (RQE) */ 2194d0e5007SSukumar Swaminathan struct oce_nic_rqe { 2204d0e5007SSukumar Swaminathan union { 2214d0e5007SSukumar Swaminathan struct { 2224d0e5007SSukumar Swaminathan uint32_t frag_pa_hi; 2234d0e5007SSukumar Swaminathan uint32_t frag_pa_lo; 2244d0e5007SSukumar Swaminathan }s; 2254d0e5007SSukumar Swaminathan uint32_t dw[2]; 2264d0e5007SSukumar Swaminathan }u0; 2274d0e5007SSukumar Swaminathan }; 2284d0e5007SSukumar Swaminathan 2294d0e5007SSukumar Swaminathan /* NIC Receive CQE */ 2304d0e5007SSukumar Swaminathan struct oce_nic_rx_cqe { 2314d0e5007SSukumar Swaminathan union { 2324d0e5007SSukumar Swaminathan struct { 2334d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 2344d0e5007SSukumar Swaminathan /* dw 0 */ 2354d0e5007SSukumar Swaminathan uint32_t ip_options:1; 2364d0e5007SSukumar Swaminathan uint32_t port:1; 2374d0e5007SSukumar Swaminathan uint32_t pkt_size:14; 2384d0e5007SSukumar Swaminathan uint32_t vlan_tag:16; 2394d0e5007SSukumar Swaminathan 2404d0e5007SSukumar Swaminathan /* dw 1 */ 2414d0e5007SSukumar Swaminathan uint32_t num_fragments:3; 2424d0e5007SSukumar Swaminathan uint32_t switched:1; 2434d0e5007SSukumar Swaminathan uint32_t ct:2; 2444d0e5007SSukumar Swaminathan uint32_t frag_index:10; 2454d0e5007SSukumar Swaminathan uint32_t rsvd0:1; 2464d0e5007SSukumar Swaminathan uint32_t vlan_tag_present:1; 2474d0e5007SSukumar Swaminathan uint32_t mac_dst:6; 2485b9d3151SSukumar Swaminathan uint32_t ip_ver:1; 2494d0e5007SSukumar Swaminathan uint32_t l4_cksum_pass:1; 2504d0e5007SSukumar Swaminathan uint32_t ip_cksum_pass:1; 2514d0e5007SSukumar Swaminathan uint32_t udpframe:1; 2524d0e5007SSukumar Swaminathan uint32_t tcpframe:1; 2535b9d3151SSukumar Swaminathan uint32_t ipframe:1; 2544d0e5007SSukumar Swaminathan uint32_t rss_hp:1; 2554d0e5007SSukumar Swaminathan uint32_t error:1; 2564d0e5007SSukumar Swaminathan 2574d0e5007SSukumar Swaminathan /* dw 2 */ 2584d0e5007SSukumar Swaminathan uint32_t valid:1; 2594d0e5007SSukumar Swaminathan uint32_t hds_type:2; 2604d0e5007SSukumar Swaminathan uint32_t lro_pkt:1; 2614d0e5007SSukumar Swaminathan uint32_t rsvd4:1; 2624d0e5007SSukumar Swaminathan uint32_t hds_hdr_size:12; 2634d0e5007SSukumar Swaminathan uint32_t hds_hdr_frag_index:10; 2644d0e5007SSukumar Swaminathan uint32_t rss_bank:1; 2654d0e5007SSukumar Swaminathan uint32_t qnq:1; 2664d0e5007SSukumar Swaminathan uint32_t pkt_type:2; 2674d0e5007SSukumar Swaminathan uint32_t rss_flush:1; 2684d0e5007SSukumar Swaminathan 2694d0e5007SSukumar Swaminathan /* dw 3 */ 2704d0e5007SSukumar Swaminathan uint32_t rss_hash_value; 2714d0e5007SSukumar Swaminathan #else 2724d0e5007SSukumar Swaminathan /* dw 0 */ 2734d0e5007SSukumar Swaminathan uint32_t vlan_tag:16; 2744d0e5007SSukumar Swaminathan uint32_t pkt_size:14; 2754d0e5007SSukumar Swaminathan uint32_t port:1; 2764d0e5007SSukumar Swaminathan uint32_t ip_options:1; 2774d0e5007SSukumar Swaminathan /* dw 1 */ 2784d0e5007SSukumar Swaminathan uint32_t error:1; 2794d0e5007SSukumar Swaminathan uint32_t rss_hp:1; 2805b9d3151SSukumar Swaminathan uint32_t ipframe:1; 2814d0e5007SSukumar Swaminathan uint32_t tcpframe:1; 2824d0e5007SSukumar Swaminathan uint32_t udpframe:1; 2834d0e5007SSukumar Swaminathan uint32_t ip_cksum_pass:1; 2844d0e5007SSukumar Swaminathan uint32_t l4_cksum_pass:1; 2855b9d3151SSukumar Swaminathan uint32_t ip_ver:1; 2864d0e5007SSukumar Swaminathan uint32_t mac_dst:6; 2874d0e5007SSukumar Swaminathan uint32_t vlan_tag_present:1; 2884d0e5007SSukumar Swaminathan uint32_t rsvd0:1; 2894d0e5007SSukumar Swaminathan uint32_t frag_index:10; 2904d0e5007SSukumar Swaminathan uint32_t ct:2; 2914d0e5007SSukumar Swaminathan uint32_t switched:1; 2924d0e5007SSukumar Swaminathan uint32_t num_fragments:3; 2934d0e5007SSukumar Swaminathan 2944d0e5007SSukumar Swaminathan /* dw 2 */ 2954d0e5007SSukumar Swaminathan uint32_t rss_flush:1; 2964d0e5007SSukumar Swaminathan uint32_t pkt_type:2; 2974d0e5007SSukumar Swaminathan uint32_t qnq:1; 2984d0e5007SSukumar Swaminathan uint32_t rss_bank:1; 2994d0e5007SSukumar Swaminathan uint32_t hds_hdr_frag_index:10; 3004d0e5007SSukumar Swaminathan uint32_t hds_hdr_size:12; 3014d0e5007SSukumar Swaminathan uint32_t rsvd4:1; 3024d0e5007SSukumar Swaminathan uint32_t lro_pkt:1; 3034d0e5007SSukumar Swaminathan uint32_t hds_type:2; 3044d0e5007SSukumar Swaminathan uint32_t valid:1; 3054d0e5007SSukumar Swaminathan /* dw 3 */ 3064d0e5007SSukumar Swaminathan uint32_t rss_hash_value; 3074d0e5007SSukumar Swaminathan #endif 3084d0e5007SSukumar Swaminathan }s; 3094d0e5007SSukumar Swaminathan uint32_t dw[4]; 3104d0e5007SSukumar Swaminathan }u0; 3114d0e5007SSukumar Swaminathan }; 3124d0e5007SSukumar Swaminathan #define RQ_CQE_VALID_MASK 0x80 3134d0e5007SSukumar Swaminathan #define RQ_CQE_VALID(_cqe) (_cqe->u0.dw[2]) 3144d0e5007SSukumar Swaminathan #define RQ_CQE_INVALIDATE(_cqe) (_cqe->u0.dw[2] = 0) 3154d0e5007SSukumar Swaminathan 3164d0e5007SSukumar Swaminathan struct mbx_config_nic_promiscuous { 3174d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 3184d0e5007SSukumar Swaminathan union { 3194d0e5007SSukumar Swaminathan struct { 3204d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3214d0e5007SSukumar Swaminathan uint16_t rsvd0; 3224d0e5007SSukumar Swaminathan uint8_t port1_promisc; 3234d0e5007SSukumar Swaminathan uint8_t port0_promisc; 3244d0e5007SSukumar Swaminathan #else 3254d0e5007SSukumar Swaminathan uint8_t port0_promisc; 3264d0e5007SSukumar Swaminathan uint8_t port1_promisc; 3274d0e5007SSukumar Swaminathan uint16_t rsvd0; 3284d0e5007SSukumar Swaminathan #endif 3294d0e5007SSukumar Swaminathan }req; 3304d0e5007SSukumar Swaminathan 3314d0e5007SSukumar Swaminathan struct { 3324d0e5007SSukumar Swaminathan uint32_t rsvd0; 3334d0e5007SSukumar Swaminathan }rsp; 3344d0e5007SSukumar Swaminathan }params; 3354d0e5007SSukumar Swaminathan }; 3364d0e5007SSukumar Swaminathan 3374d0e5007SSukumar Swaminathan /* [07] OPCODE_CREATE_NIC_WQ */ 3384d0e5007SSukumar Swaminathan struct mbx_create_nic_wq { 3394d0e5007SSukumar Swaminathan 3404d0e5007SSukumar Swaminathan /* dw0 - dw3 */ 3414d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 3424d0e5007SSukumar Swaminathan union { 3434d0e5007SSukumar Swaminathan struct { 3444d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3454d0e5007SSukumar Swaminathan /* dw4 */ 3464d0e5007SSukumar Swaminathan uint8_t rsvd1; 3474d0e5007SSukumar Swaminathan uint8_t nic_wq_type; 3484d0e5007SSukumar Swaminathan uint8_t rsvd0; 3494d0e5007SSukumar Swaminathan uint8_t num_pages; 3504d0e5007SSukumar Swaminathan 3514d0e5007SSukumar Swaminathan /* dw5 */ 3524d0e5007SSukumar Swaminathan uint32_t rsvd3:12; 3534d0e5007SSukumar Swaminathan uint32_t wq_size:4; 3544d0e5007SSukumar Swaminathan uint32_t rsvd2:16; 3554d0e5007SSukumar Swaminathan 3564d0e5007SSukumar Swaminathan /* dw6 */ 3574d0e5007SSukumar Swaminathan uint32_t valid:1; 3584d0e5007SSukumar Swaminathan uint32_t pd_id:9; 3594d0e5007SSukumar Swaminathan uint32_t pci_function_id:8; 3604d0e5007SSukumar Swaminathan uint32_t rsvd4:14; 3614d0e5007SSukumar Swaminathan 3624d0e5007SSukumar Swaminathan /* dw7 */ 3634d0e5007SSukumar Swaminathan uint32_t rsvd5:16; 3644d0e5007SSukumar Swaminathan uint32_t cq_id:16; 3654d0e5007SSukumar Swaminathan #else 3664d0e5007SSukumar Swaminathan /* dw4 */ 3674d0e5007SSukumar Swaminathan uint8_t num_pages; 3684d0e5007SSukumar Swaminathan uint8_t rsvd0; 3694d0e5007SSukumar Swaminathan uint8_t nic_wq_type; 3704d0e5007SSukumar Swaminathan uint8_t rsvd1; 3714d0e5007SSukumar Swaminathan 3724d0e5007SSukumar Swaminathan /* dw5 */ 3734d0e5007SSukumar Swaminathan uint32_t rsvd2:16; 3744d0e5007SSukumar Swaminathan uint32_t wq_size:4; 3754d0e5007SSukumar Swaminathan uint32_t rsvd3:12; 3764d0e5007SSukumar Swaminathan 3774d0e5007SSukumar Swaminathan /* dw6 */ 3784d0e5007SSukumar Swaminathan uint32_t rsvd4:14; 3794d0e5007SSukumar Swaminathan uint32_t pci_function_id:8; 3804d0e5007SSukumar Swaminathan uint32_t pd_id:9; 3814d0e5007SSukumar Swaminathan uint32_t valid:1; 3824d0e5007SSukumar Swaminathan 3834d0e5007SSukumar Swaminathan /* dw7 */ 3844d0e5007SSukumar Swaminathan uint32_t cq_id:16; 3854d0e5007SSukumar Swaminathan uint32_t rsvd5:16; 3864d0e5007SSukumar Swaminathan #endif 3874d0e5007SSukumar Swaminathan /* dw8 - dw20 */ 3884d0e5007SSukumar Swaminathan uint32_t rsvd6[13]; 3894d0e5007SSukumar Swaminathan /* dw21 - dw36 */ 3904d0e5007SSukumar Swaminathan struct phys_addr pages[8]; 3914d0e5007SSukumar Swaminathan }req; 3924d0e5007SSukumar Swaminathan 3934d0e5007SSukumar Swaminathan struct { 3944d0e5007SSukumar Swaminathan uint16_t wq_id; 3954d0e5007SSukumar Swaminathan uint16_t rsvd0; 3964d0e5007SSukumar Swaminathan }rsp; 3974d0e5007SSukumar Swaminathan }params; 3984d0e5007SSukumar Swaminathan }; 3994d0e5007SSukumar Swaminathan 4004d0e5007SSukumar Swaminathan /* [09] OPCODE_DELETE_NIC_WQ */ 4014d0e5007SSukumar Swaminathan struct mbx_delete_nic_wq { 4024d0e5007SSukumar Swaminathan /* dw0 - dw3 */ 4034d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 4044d0e5007SSukumar Swaminathan union { 4054d0e5007SSukumar Swaminathan struct { 4064d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4074d0e5007SSukumar Swaminathan /* dw4 */ 4084d0e5007SSukumar Swaminathan uint16_t rsvd0; 4094d0e5007SSukumar Swaminathan uint16_t wq_id; 4104d0e5007SSukumar Swaminathan #else 4114d0e5007SSukumar Swaminathan /* dw4 */ 4124d0e5007SSukumar Swaminathan uint16_t wq_id; 4134d0e5007SSukumar Swaminathan uint16_t rsvd0; 4144d0e5007SSukumar Swaminathan #endif 4154d0e5007SSukumar Swaminathan }req; 4164d0e5007SSukumar Swaminathan struct { 4174d0e5007SSukumar Swaminathan uint32_t rsvd0; 4184d0e5007SSukumar Swaminathan }rsp; 4194d0e5007SSukumar Swaminathan }params; 4204d0e5007SSukumar Swaminathan }; 4214d0e5007SSukumar Swaminathan 4224d0e5007SSukumar Swaminathan /* [08] OPCODE_CREATE_NIC_RQ */ 4234d0e5007SSukumar Swaminathan struct mbx_create_nic_rq { 4244d0e5007SSukumar Swaminathan /* dw0 - dw3 */ 4254d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 4264d0e5007SSukumar Swaminathan union { 4274d0e5007SSukumar Swaminathan struct { 4284d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4294d0e5007SSukumar Swaminathan /* dw4 */ 4304d0e5007SSukumar Swaminathan uint8_t num_pages; 4314d0e5007SSukumar Swaminathan uint8_t frag_size; 4324d0e5007SSukumar Swaminathan uint16_t cq_id; 4334d0e5007SSukumar Swaminathan #else 4344d0e5007SSukumar Swaminathan /* dw4 */ 4354d0e5007SSukumar Swaminathan uint16_t cq_id; 4364d0e5007SSukumar Swaminathan uint8_t frag_size; 4374d0e5007SSukumar Swaminathan uint8_t num_pages; 4384d0e5007SSukumar Swaminathan #endif 4394d0e5007SSukumar Swaminathan /* dw5 - dw8 */ 4404d0e5007SSukumar Swaminathan struct phys_addr pages[2]; 4414d0e5007SSukumar Swaminathan /* dw9 */ 4424d0e5007SSukumar Swaminathan uint32_t if_id; 4434d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4444d0e5007SSukumar Swaminathan /* dw10 */ 4454d0e5007SSukumar Swaminathan uint16_t rsvd0; 4464d0e5007SSukumar Swaminathan uint16_t max_frame_size; 4474d0e5007SSukumar Swaminathan #else 4484d0e5007SSukumar Swaminathan /* dw10 */ 4494d0e5007SSukumar Swaminathan uint16_t max_frame_size; 4504d0e5007SSukumar Swaminathan uint16_t rsvd0; 4514d0e5007SSukumar Swaminathan #endif 4524d0e5007SSukumar Swaminathan /* dw11 */ 4534d0e5007SSukumar Swaminathan uint32_t is_rss_queue; 4544d0e5007SSukumar Swaminathan }req; 4554d0e5007SSukumar Swaminathan 4564d0e5007SSukumar Swaminathan struct { 4574d0e5007SSukumar Swaminathan /* dw4 */ 4584d0e5007SSukumar Swaminathan union { 4594d0e5007SSukumar Swaminathan struct { 4604d0e5007SSukumar Swaminathan uint16_t rq_id; 4614d0e5007SSukumar Swaminathan uint8_t rss_cpuid; 4624d0e5007SSukumar Swaminathan uint8_t rsvd0; 4634d0e5007SSukumar Swaminathan } s; 4644d0e5007SSukumar Swaminathan uint32_t dw4; 4654d0e5007SSukumar Swaminathan }u0; 4664d0e5007SSukumar Swaminathan }rsp; 4674d0e5007SSukumar Swaminathan }params; 4684d0e5007SSukumar Swaminathan }; 4694d0e5007SSukumar Swaminathan 4704d0e5007SSukumar Swaminathan /* [10] OPCODE_DELETE_NIC_RQ */ 4714d0e5007SSukumar Swaminathan struct mbx_delete_nic_rq { 4724d0e5007SSukumar Swaminathan /* dw0 - dw3 */ 4734d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 4744d0e5007SSukumar Swaminathan union { 4754d0e5007SSukumar Swaminathan struct { 4764d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4774d0e5007SSukumar Swaminathan /* dw4 */ 4784d0e5007SSukumar Swaminathan uint16_t bypass_flush; 4794d0e5007SSukumar Swaminathan uint16_t rq_id; 4804d0e5007SSukumar Swaminathan #else 4814d0e5007SSukumar Swaminathan /* dw4 */ 4824d0e5007SSukumar Swaminathan uint16_t rq_id; 4834d0e5007SSukumar Swaminathan uint16_t bypass_flush; 4844d0e5007SSukumar Swaminathan #endif 4854d0e5007SSukumar Swaminathan }req; 4864d0e5007SSukumar Swaminathan 4874d0e5007SSukumar Swaminathan struct { 4884d0e5007SSukumar Swaminathan /* dw4 */ 4894d0e5007SSukumar Swaminathan uint32_t rsvd0; 4904d0e5007SSukumar Swaminathan }rsp; 4914d0e5007SSukumar Swaminathan }params; 4924d0e5007SSukumar Swaminathan }; 4934d0e5007SSukumar Swaminathan 4944d0e5007SSukumar Swaminathan struct rx_port_stats { 4954d0e5007SSukumar Swaminathan uint32_t rx_bytes_lsd; 4964d0e5007SSukumar Swaminathan uint32_t rx_bytes_msd; 4974d0e5007SSukumar Swaminathan uint32_t rx_total_frames; 4984d0e5007SSukumar Swaminathan uint32_t rx_unicast_frames; 4994d0e5007SSukumar Swaminathan uint32_t rx_multicast_frames; 5004d0e5007SSukumar Swaminathan uint32_t rx_broadcast_frames; 5014d0e5007SSukumar Swaminathan uint32_t rx_crc_errors; 5024d0e5007SSukumar Swaminathan uint32_t rx_alignment_symbol_errors; 5034d0e5007SSukumar Swaminathan uint32_t rx_pause_frames; 5044d0e5007SSukumar Swaminathan uint32_t rx_control_frames; 5054d0e5007SSukumar Swaminathan uint32_t rx_in_range_errors; 5064d0e5007SSukumar Swaminathan uint32_t rx_out_range_errors; 5074d0e5007SSukumar Swaminathan uint32_t rx_frame_too_long; 5084d0e5007SSukumar Swaminathan uint32_t rx_address_match_errors; 5094d0e5007SSukumar Swaminathan uint32_t rx_vlan_mismatch; 5104d0e5007SSukumar Swaminathan uint32_t rx_dropped_too_small; 5114d0e5007SSukumar Swaminathan uint32_t rx_dropped_too_short; 5124d0e5007SSukumar Swaminathan uint32_t rx_dropped_header_too_small; 5134d0e5007SSukumar Swaminathan uint32_t rx_dropped_tcp_length; 5144d0e5007SSukumar Swaminathan uint32_t rx_dropped_runt; 5154d0e5007SSukumar Swaminathan uint32_t rx_64_byte_packets; 5164d0e5007SSukumar Swaminathan uint32_t rx_65_127_byte_packets; 5174d0e5007SSukumar Swaminathan uint32_t rx_128_256_byte_packets; 5184d0e5007SSukumar Swaminathan uint32_t rx_256_511_byte_packets; 5194d0e5007SSukumar Swaminathan uint32_t rx_512_1023_byte_packets; 5204d0e5007SSukumar Swaminathan uint32_t rx_1024_1518_byte_packets; 5214d0e5007SSukumar Swaminathan uint32_t rx_1519_2047_byte_packets; 5224d0e5007SSukumar Swaminathan uint32_t rx_2048_4095_byte_packets; 5234d0e5007SSukumar Swaminathan uint32_t rx_4096_8191_byte_packets; 5244d0e5007SSukumar Swaminathan uint32_t rx_8192_9216_byte_packets; 5254d0e5007SSukumar Swaminathan uint32_t rx_ip_checksum_errs; 5264d0e5007SSukumar Swaminathan uint32_t rx_tcp_checksum_errs; 5274d0e5007SSukumar Swaminathan uint32_t rx_udp_checksum_errs; 5284d0e5007SSukumar Swaminathan uint32_t rx_non_rss_packets; 5294d0e5007SSukumar Swaminathan uint32_t rx_ipv4_packets; 5304d0e5007SSukumar Swaminathan uint32_t rx_ipv6_packets; 5314d0e5007SSukumar Swaminathan uint32_t rx_ipv4_bytes_lsd; 5324d0e5007SSukumar Swaminathan uint32_t rx_ipv4_bytes_msd; 5334d0e5007SSukumar Swaminathan uint32_t rx_ipv6_bytes_lsd; 5344d0e5007SSukumar Swaminathan uint32_t rx_ipv6_bytes_msd; 5354d0e5007SSukumar Swaminathan uint32_t rx_chute1_packets; 5364d0e5007SSukumar Swaminathan uint32_t rx_chute2_packets; 5374d0e5007SSukumar Swaminathan uint32_t rx_chute3_packets; 5384d0e5007SSukumar Swaminathan uint32_t rx_management_packets; 5394d0e5007SSukumar Swaminathan uint32_t rx_switched_unicast_packets; 5404d0e5007SSukumar Swaminathan uint32_t rx_switched_multicast_packets; 5414d0e5007SSukumar Swaminathan uint32_t rx_switched_broadcast_packets; 5424d0e5007SSukumar Swaminathan uint32_t tx_bytes_lsd; 5434d0e5007SSukumar Swaminathan uint32_t tx_bytes_msd; 5444d0e5007SSukumar Swaminathan uint32_t tx_unicast_frames; 5454d0e5007SSukumar Swaminathan uint32_t tx_multicast_frames; 5464d0e5007SSukumar Swaminathan uint32_t tx_broadcast_frames; 5474d0e5007SSukumar Swaminathan uint32_t tx_pause_frames; 5484d0e5007SSukumar Swaminathan uint32_t tx_control_frames; 5494d0e5007SSukumar Swaminathan uint32_t tx_64_byte_packets; 5504d0e5007SSukumar Swaminathan uint32_t tx_65_127_byte_packets; 5514d0e5007SSukumar Swaminathan uint32_t tx_128_256_byte_packets; 5524d0e5007SSukumar Swaminathan uint32_t tx_256_511_byte_packets; 5534d0e5007SSukumar Swaminathan uint32_t tx_512_1023_byte_packets; 5544d0e5007SSukumar Swaminathan uint32_t tx_1024_1518_byte_packets; 5554d0e5007SSukumar Swaminathan uint32_t tx_1519_2047_byte_packets; 5564d0e5007SSukumar Swaminathan uint32_t tx_2048_4095_byte_packets; 5574d0e5007SSukumar Swaminathan uint32_t tx_4096_8191_byte_packets; 5584d0e5007SSukumar Swaminathan uint32_t tx_8192_9216_byte_packets; 5594d0e5007SSukumar Swaminathan uint32_t rx_fifo_overflow; 5604d0e5007SSukumar Swaminathan uint32_t rx_input_fifo_overflow; 5614d0e5007SSukumar Swaminathan }; 5624d0e5007SSukumar Swaminathan 5634d0e5007SSukumar Swaminathan struct rx_stats { 5644d0e5007SSukumar Swaminathan /* dw 0-131 --2 X 66 */ 5654d0e5007SSukumar Swaminathan struct rx_port_stats port[2]; 5664d0e5007SSukumar Swaminathan /* dw 132-147 --16 */ 5674d0e5007SSukumar Swaminathan uint32_t rx_drops_no_pbuf; 5684d0e5007SSukumar Swaminathan uint32_t rx_drops_no_txpb; 5694d0e5007SSukumar Swaminathan uint32_t rx_drops_no_erx_descr; 5704d0e5007SSukumar Swaminathan uint32_t rx_drops_no_tpre_descr; 5714d0e5007SSukumar Swaminathan uint32_t management_rx_port_packets; 5724d0e5007SSukumar Swaminathan uint32_t management_rx_port_bytes; 5734d0e5007SSukumar Swaminathan uint32_t management_rx_port_pause_frames; 5744d0e5007SSukumar Swaminathan uint32_t management_rx_port_errors; 5754d0e5007SSukumar Swaminathan uint32_t management_tx_port_packets; 5764d0e5007SSukumar Swaminathan uint32_t management_tx_port_bytes; 5774d0e5007SSukumar Swaminathan uint32_t management_tx_port_pause; 5784d0e5007SSukumar Swaminathan uint32_t management_rx_port_rxfifo_overflow; 5794d0e5007SSukumar Swaminathan uint32_t rx_drops_too_many_frags; 5804d0e5007SSukumar Swaminathan uint32_t rx_drops_invalid_ring; 5814d0e5007SSukumar Swaminathan uint32_t forwarded_packets; 5824d0e5007SSukumar Swaminathan uint32_t rx_drops_mtu; 5834d0e5007SSukumar Swaminathan /* fcoe is not relevent */ 5844d0e5007SSukumar Swaminathan uint32_t rsvd[15]; 5854d0e5007SSukumar Swaminathan }; 5864d0e5007SSukumar Swaminathan 5874d0e5007SSukumar Swaminathan struct tx_counter { 5884d0e5007SSukumar Swaminathan uint32_t pkts; 5894d0e5007SSukumar Swaminathan uint32_t lsd; 5904d0e5007SSukumar Swaminathan uint32_t msd; 5914d0e5007SSukumar Swaminathan }; 5924d0e5007SSukumar Swaminathan 5934d0e5007SSukumar Swaminathan struct tx_stats { 5944d0e5007SSukumar Swaminathan struct tx_counter ct1pt0_xmt_ipv4_ctrs; 5954d0e5007SSukumar Swaminathan struct tx_counter ct1pt0_xmt_ipv6_ctrs; 5964d0e5007SSukumar Swaminathan struct tx_counter ct1pt0_rexmt_ipv4_ctrs; 5974d0e5007SSukumar Swaminathan struct tx_counter ct1pt0_rexmt_ipv6_ctrs; 5984d0e5007SSukumar Swaminathan struct tx_counter ct1pt1_xmt_ipv4_ctrs; 5994d0e5007SSukumar Swaminathan struct tx_counter ct1pt1_xmt_ipv6_ctrs; 6004d0e5007SSukumar Swaminathan struct tx_counter ct1pt1_rexmt_ipv4_ctrs; 6014d0e5007SSukumar Swaminathan struct tx_counter ct1pt1_rexmt_ipv6_ctrs; 6024d0e5007SSukumar Swaminathan struct tx_counter ct2pt0_xmt_ipv4_ctrs; 6034d0e5007SSukumar Swaminathan struct tx_counter ct2pt0_xmt_ipv6_ctrs; 6044d0e5007SSukumar Swaminathan struct tx_counter ct2pt0_rexmt_ipv4_ctrs; 6054d0e5007SSukumar Swaminathan struct tx_counter ct2pt0_rexmt_ipv6_ctrs; 6064d0e5007SSukumar Swaminathan struct tx_counter ct2pt1_xmt_ipv4_ctrs; 6074d0e5007SSukumar Swaminathan struct tx_counter ct2pt1_xmt_ipv6_ctrs; 6084d0e5007SSukumar Swaminathan struct tx_counter ct2pt1_rexmt_ipv4_ctrs; 6094d0e5007SSukumar Swaminathan struct tx_counter ct2pt1_rexmt_ipv6_ctrs; 6104d0e5007SSukumar Swaminathan }; 6114d0e5007SSukumar Swaminathan 6124d0e5007SSukumar Swaminathan struct rx_err_stats { 6134d0e5007SSukumar Swaminathan uint32_t rx_drops_no_fragments[44]; 6144d0e5007SSukumar Swaminathan uint32_t debug_wdma_sent_hold; 6154d0e5007SSukumar Swaminathan uint32_t debug_wdma_pbfree_sent_hold; 6164d0e5007SSukumar Swaminathan uint32_t debug_wdma_zerobyte_pbfree_sent_hold; 6174d0e5007SSukumar Swaminathan uint32_t debug_pmem_pbuf_dealloc; 6184d0e5007SSukumar Swaminathan }; 6194d0e5007SSukumar Swaminathan 6204d0e5007SSukumar Swaminathan struct mem_stats { 6214d0e5007SSukumar Swaminathan uint32_t eth_red_drops; 6224d0e5007SSukumar Swaminathan uint32_t lro_red_drops; 6234d0e5007SSukumar Swaminathan uint32_t ulp0_red_drops; 6244d0e5007SSukumar Swaminathan uint32_t ulp1_red_drops; 6254d0e5007SSukumar Swaminathan }; 6264d0e5007SSukumar Swaminathan 6274d0e5007SSukumar Swaminathan /* [04] OPCODE_GET_NIC_STATS */ 6284d0e5007SSukumar Swaminathan struct mbx_get_nic_stats { 6294d0e5007SSukumar Swaminathan /* dw0 - dw3 */ 6304d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 6314d0e5007SSukumar Swaminathan union { 6324d0e5007SSukumar Swaminathan struct { 6334d0e5007SSukumar Swaminathan uint32_t rsvd0; 6344d0e5007SSukumar Swaminathan }req; 6354d0e5007SSukumar Swaminathan 6364d0e5007SSukumar Swaminathan struct { 6374d0e5007SSukumar Swaminathan struct rx_stats rx; 6384d0e5007SSukumar Swaminathan struct tx_stats tx; 6394d0e5007SSukumar Swaminathan struct rx_err_stats err_rx; 6404d0e5007SSukumar Swaminathan struct mem_stats mem; 6414d0e5007SSukumar Swaminathan }rsp; 6424d0e5007SSukumar Swaminathan }params; 6434d0e5007SSukumar Swaminathan }; 6444d0e5007SSukumar Swaminathan 6455b9d3151SSukumar Swaminathan /* [01] OPCODE_CONFIG_NIC_RSS */ 6465b9d3151SSukumar Swaminathan struct mbx_config_nic_rss { 6475b9d3151SSukumar Swaminathan struct mbx_hdr hdr; 6485b9d3151SSukumar Swaminathan union { 6495b9d3151SSukumar Swaminathan struct { 6505b9d3151SSukumar Swaminathan #ifdef _BIG_ENDIAN 6515b9d3151SSukumar Swaminathan uint32_t if_id; 6525b9d3151SSukumar Swaminathan uint16_t cpu_tbl_sz_log2; 6535b9d3151SSukumar Swaminathan uint16_t enable_rss; 6545b9d3151SSukumar Swaminathan uint32_t hash[10]; 6555b9d3151SSukumar Swaminathan uint8_t cputable[128]; 6565b9d3151SSukumar Swaminathan uint8_t rsvd[3]; 6575b9d3151SSukumar Swaminathan uint8_t flush; 6585b9d3151SSukumar Swaminathan #else 6595b9d3151SSukumar Swaminathan uint32_t if_id; 6605b9d3151SSukumar Swaminathan uint16_t enable_rss; 6615b9d3151SSukumar Swaminathan uint16_t cpu_tbl_sz_log2; 6625b9d3151SSukumar Swaminathan uint32_t hash[10]; 6635b9d3151SSukumar Swaminathan uint8_t cputable[128]; 6645b9d3151SSukumar Swaminathan uint8_t flush; 6655b9d3151SSukumar Swaminathan uint8_t rsvd[3]; 6665b9d3151SSukumar Swaminathan #endif 6675b9d3151SSukumar Swaminathan }req; 6685b9d3151SSukumar Swaminathan struct { 6695b9d3151SSukumar Swaminathan uint8_t rsvd[3]; 6705b9d3151SSukumar Swaminathan uint8_t rss_bank; 6715b9d3151SSukumar Swaminathan }rsp; 6725b9d3151SSukumar Swaminathan }params; 6735b9d3151SSukumar Swaminathan }; 6745b9d3151SSukumar Swaminathan 6754d0e5007SSukumar Swaminathan #pragma pack() 6764d0e5007SSukumar Swaminathan 6774d0e5007SSukumar Swaminathan #ifdef __cplusplus 6784d0e5007SSukumar Swaminathan } 6794d0e5007SSukumar Swaminathan #endif 6804d0e5007SSukumar Swaminathan 6814d0e5007SSukumar Swaminathan #endif /* _OCE_HW_ETH_H_ */ 682