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