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 command structures for Hardware 294d0e5007SSukumar Swaminathan */ 304d0e5007SSukumar Swaminathan 314d0e5007SSukumar Swaminathan #ifndef _OCE_HW_H_ 324d0e5007SSukumar Swaminathan #define _OCE_HW_H_ 334d0e5007SSukumar Swaminathan 344d0e5007SSukumar Swaminathan #ifdef __cplusplus 354d0e5007SSukumar Swaminathan extern "C" { 364d0e5007SSukumar Swaminathan #endif 374d0e5007SSukumar Swaminathan 384d0e5007SSukumar Swaminathan #include <sys/types.h> 394d0e5007SSukumar Swaminathan 404d0e5007SSukumar Swaminathan #pragma pack(1) 414d0e5007SSukumar Swaminathan 424d0e5007SSukumar Swaminathan /* PCI CSR offsets */ 434d0e5007SSukumar Swaminathan #define PCICFG_F1_CSR 0x0 /* F1 for NIC */ 444d0e5007SSukumar Swaminathan #define PCICFG_SEMAPHORE 0xbc 454d0e5007SSukumar Swaminathan #define PCICFG_SOFT_RESET 0x5c 464d0e5007SSukumar Swaminathan #define PCICFG_UE_STATUS_HI_MASK 0xac 474d0e5007SSukumar Swaminathan #define PCICFG_UE_STATUS_LO_MASK 0xa8 484d0e5007SSukumar Swaminathan #define PCICFG_ONLINE0 0xb0 494d0e5007SSukumar Swaminathan #define PCICFG_ONLINE1 0xb4 504d0e5007SSukumar Swaminathan #define INTR_EN 0x20000000 514d0e5007SSukumar Swaminathan #define IMAGE_TRANSFER_SIZE (32 * 1024) /* 32K at a time */ 524d0e5007SSukumar Swaminathan 534d0e5007SSukumar Swaminathan /* CSR register offsets */ 544d0e5007SSukumar Swaminathan #define MPU_EP_CONTROL 0 554d0e5007SSukumar Swaminathan #define MPU_EP_SEMAPHORE 0xac 564d0e5007SSukumar Swaminathan #define PCICFG_INTR_CTRL 0xfc 574d0e5007SSukumar Swaminathan #define HOSTINTR_MASK (1 << 29) 584d0e5007SSukumar Swaminathan #define HOSTINTR_PFUNC_SHIFT 26 594d0e5007SSukumar Swaminathan #define HOSTINTR_PFUNC_MASK 7 604d0e5007SSukumar Swaminathan 614d0e5007SSukumar Swaminathan /* POST status reg struct */ 624d0e5007SSukumar Swaminathan #define POST_STAGE_POWER_ON_RESET 0x00 634d0e5007SSukumar Swaminathan #define POST_STAGE_AWAITING_HOST_RDY 0x01 644d0e5007SSukumar Swaminathan #define POST_STAGE_HOST_RDY 0x02 654d0e5007SSukumar Swaminathan #define POST_STAGE_CHIP_RESET 0x03 664d0e5007SSukumar Swaminathan #define POST_STAGE_ARMFW_READY 0xc000 674d0e5007SSukumar Swaminathan #define POST_STAGE_ARMFW_UE 0xf000 684d0e5007SSukumar Swaminathan 694d0e5007SSukumar Swaminathan /* DOORBELL registers */ 704d0e5007SSukumar Swaminathan #define PD_RXULP_DB 0x0100 714d0e5007SSukumar Swaminathan #define PD_TXULP_DB 0x0060 724d0e5007SSukumar Swaminathan #define DB_RQ_ID_MASK 0x3FF 734d0e5007SSukumar Swaminathan 744d0e5007SSukumar Swaminathan #define PD_CQ_DB 0x0120 754d0e5007SSukumar Swaminathan #define PD_EQ_DB PD_CQ_DB 764d0e5007SSukumar Swaminathan #define PD_MPU_MBOX_DB 0x0160 774d0e5007SSukumar Swaminathan #define PD_MQ_DB 0x0140 784d0e5007SSukumar Swaminathan 794d0e5007SSukumar Swaminathan /* EQE completion types */ 804d0e5007SSukumar Swaminathan #define EQ_MINOR_CODE_COMPLETION 0x00 814d0e5007SSukumar Swaminathan #define EQ_MINOR_CODE_OTHER 0x01 824d0e5007SSukumar Swaminathan #define EQ_MAJOR_CODE_COMPLETION 0x00 834d0e5007SSukumar Swaminathan 844d0e5007SSukumar Swaminathan /* Link Status field values */ 854d0e5007SSukumar Swaminathan #define PHY_LINK_FAULT_NONE 0x0 864d0e5007SSukumar Swaminathan #define PHY_LINK_FAULT_LOCAL 0x01 874d0e5007SSukumar Swaminathan #define PHY_LINK_FAULT_REMOTE 0x02 884d0e5007SSukumar Swaminathan 894d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_ZERO 0x0 /* No link */ 904d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_10MBPS 0x1 /* (10 Mbps) */ 914d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_100MBPS 0x2 /* (100 Mbps) */ 924d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_1GBPS 0x3 /* (1 Gbps) */ 934d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_10GBPS 0x4 /* (10 Gbps) */ 944d0e5007SSukumar Swaminathan 954d0e5007SSukumar Swaminathan #define PHY_LINK_DUPLEX_NONE 0x0 964d0e5007SSukumar Swaminathan #define PHY_LINK_DUPLEX_HALF 0x1 974d0e5007SSukumar Swaminathan #define PHY_LINK_DUPLEX_FULL 0x2 984d0e5007SSukumar Swaminathan 994d0e5007SSukumar Swaminathan #define NTWK_PORT_A 0x0 /* (Port A) */ 1004d0e5007SSukumar Swaminathan #define NTWK_PORT_B 0x1 /* (Port B) */ 1014d0e5007SSukumar Swaminathan 1024d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_ZERO 0x0 /* (No link.) */ 1034d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_10MBPS 0x1 /* (10 Mbps) */ 1044d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_100MBPS 0x2 /* (100 Mbps) */ 1054d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_1GBPS 0x3 /* (1 Gbps) */ 1064d0e5007SSukumar Swaminathan #define PHY_LINK_SPEED_10GBPS 0x4 /* (10 Gbps) */ 1074d0e5007SSukumar Swaminathan 1084d0e5007SSukumar Swaminathan /* Hardware Address types */ 1094d0e5007SSukumar Swaminathan #define MAC_ADDRESS_TYPE_STORAGE 0x0 /* (Storage MAC Address) */ 1104d0e5007SSukumar Swaminathan #define MAC_ADDRESS_TYPE_NETWORK 0x1 /* (Network MAC Address) */ 1114d0e5007SSukumar Swaminathan #define MAC_ADDRESS_TYPE_PD 0x2 /* (Protection Domain MAC Addr) */ 1124d0e5007SSukumar Swaminathan #define MAC_ADDRESS_TYPE_MANAGEMENT 0x3 /* (Management MAC Address) */ 1134d0e5007SSukumar Swaminathan #define MAC_ADDRESS_TYPE_FCOE 0x4 /* (FCoE MAC Address) */ 1144d0e5007SSukumar Swaminathan 1154d0e5007SSukumar Swaminathan /* CREATE_IFACE capability and cap_en flags */ 1164d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_RSS 0x4 1174d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_PROMISCUOUS 0x8 1184d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_BROADCAST 0x10 1194d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_UNTAGGED 0x20 1204d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_ULP 0x40 1214d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS 0x80 1224d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_VLAN 0x100 1234d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_MCAST_PROMISCUOUS 0x200 1244d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_PASS_L2 0x400 1254d0e5007SSukumar Swaminathan #define MBX_RX_IFACE_FLAGS_PASS_L3L4 0x800 1264d0e5007SSukumar Swaminathan 1274d0e5007SSukumar Swaminathan #define MQ_RING_CONTEXT_SIZE_16 0x5 /* (16 entries) */ 1284d0e5007SSukumar Swaminathan #define MQ_RING_CONTEXT_SIZE_32 0x6 /* (32 entries) */ 1294d0e5007SSukumar Swaminathan #define MQ_RING_CONTEXT_SIZE_64 0x7 /* (64 entries) */ 1304d0e5007SSukumar Swaminathan #define MQ_RING_CONTEXT_SIZE_128 0x8 /* (128 entries) */ 1314d0e5007SSukumar Swaminathan 1324d0e5007SSukumar Swaminathan 1334d0e5007SSukumar Swaminathan #define MBX_DB_READY_BIT 0x1 1344d0e5007SSukumar Swaminathan #define MBX_DB_HI_BIT 0x2 1354d0e5007SSukumar Swaminathan #define ASYNC_EVENT_CODE_LINK_STATE 0x1 1364d0e5007SSukumar Swaminathan #define ASYNC_EVENT_LINK_UP 0x1 1374d0e5007SSukumar Swaminathan #define ASYNC_EVENT_LINK_DOWN 0x0 1384d0e5007SSukumar Swaminathan 1394d0e5007SSukumar Swaminathan /* Rx filter bits */ 1404d0e5007SSukumar Swaminathan #define NTWK_RX_FILTER_IP_CKSUM 0x1 1414d0e5007SSukumar Swaminathan #define NTWK_RX_FILTER_TCP_CKSUM 0x2 1424d0e5007SSukumar Swaminathan #define NTWK_RX_FILTER_UDP_CKSUM 0x4 1434d0e5007SSukumar Swaminathan #define NTWK_RX_FILTER_STRIP_CRC 0x8 1444d0e5007SSukumar Swaminathan 1454d0e5007SSukumar Swaminathan /* max SGE per mbx */ 1464d0e5007SSukumar Swaminathan #define MAX_MBX_SGE 19 1474d0e5007SSukumar Swaminathan 1484d0e5007SSukumar Swaminathan /* physical address structure to be used in MBX */ 1494d0e5007SSukumar Swaminathan struct phys_addr { 1504d0e5007SSukumar Swaminathan /* dw0 */ 1514d0e5007SSukumar Swaminathan uint32_t lo; 1524d0e5007SSukumar Swaminathan /* dw1 */ 1534d0e5007SSukumar Swaminathan uint32_t hi; 1544d0e5007SSukumar Swaminathan }; 1554d0e5007SSukumar Swaminathan 1564d0e5007SSukumar Swaminathan typedef union pcicfg_intr_ctl_u { 1574d0e5007SSukumar Swaminathan uint32_t dw0; 1584d0e5007SSukumar Swaminathan struct { 1594d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 1604d0e5007SSukumar Swaminathan uint32_t winselect:2; 1614d0e5007SSukumar Swaminathan uint32_t hostintr:1; 1624d0e5007SSukumar Swaminathan uint32_t pfnum:3; 1634d0e5007SSukumar Swaminathan uint32_t vf_cev_int_line_en:1; 1644d0e5007SSukumar Swaminathan uint32_t winaddr:23; 1654d0e5007SSukumar Swaminathan uint32_t membarwinen:1; 1664d0e5007SSukumar Swaminathan #else 1674d0e5007SSukumar Swaminathan uint32_t membarwinen:1; 1684d0e5007SSukumar Swaminathan uint32_t winaddr:23; 1694d0e5007SSukumar Swaminathan uint32_t vf_cev_int_line_en:1; 1704d0e5007SSukumar Swaminathan uint32_t pfnum:3; 1714d0e5007SSukumar Swaminathan uint32_t hostintr:1; 1724d0e5007SSukumar Swaminathan uint32_t winselect:2; 1734d0e5007SSukumar Swaminathan #endif 1744d0e5007SSukumar Swaminathan } bits; 1754d0e5007SSukumar Swaminathan }pcicfg_intr_ctl_t; 1764d0e5007SSukumar Swaminathan 1774d0e5007SSukumar Swaminathan typedef union pcicfg_semaphore_u { 1784d0e5007SSukumar Swaminathan uint32_t dw0; 1794d0e5007SSukumar Swaminathan struct { 1804d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 1814d0e5007SSukumar Swaminathan uint32_t rsvd:31; 1824d0e5007SSukumar Swaminathan uint32_t lock:1; 1834d0e5007SSukumar Swaminathan #else 1844d0e5007SSukumar Swaminathan uint32_t lock:1; 1854d0e5007SSukumar Swaminathan uint32_t rsvd:31; 1864d0e5007SSukumar Swaminathan #endif 1874d0e5007SSukumar Swaminathan }bits; 1884d0e5007SSukumar Swaminathan }pcicfg_semaphore_t; 1894d0e5007SSukumar Swaminathan 1904d0e5007SSukumar Swaminathan typedef union pcicfg_soft_reset_u { 1914d0e5007SSukumar Swaminathan uint32_t dw0; 1924d0e5007SSukumar Swaminathan struct { 1934d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 1944d0e5007SSukumar Swaminathan uint32_t nec_ll_rcvdetect:8; 1954d0e5007SSukumar Swaminathan uint32_t dbg_all_reqs_62_49:14; 1964d0e5007SSukumar Swaminathan uint32_t scratchpad0:1; 1974d0e5007SSukumar Swaminathan uint32_t exception_oe:1; 1984d0e5007SSukumar Swaminathan uint32_t soft_reset:1; 1994d0e5007SSukumar Swaminathan uint32_t rsvd0:7; 2004d0e5007SSukumar Swaminathan #else 2014d0e5007SSukumar Swaminathan uint32_t rsvd0:7; 2024d0e5007SSukumar Swaminathan uint32_t soft_reset:1; 2034d0e5007SSukumar Swaminathan uint32_t exception_oe:1; 2044d0e5007SSukumar Swaminathan uint32_t scratchpad0:1; 2054d0e5007SSukumar Swaminathan uint32_t dbg_all_reqs_62_49:14; 2064d0e5007SSukumar Swaminathan uint32_t nec_ll_rcvdetect:8; 2074d0e5007SSukumar Swaminathan #endif 2084d0e5007SSukumar Swaminathan }bits; 2094d0e5007SSukumar Swaminathan }pcicfg_soft_reset_t; 2104d0e5007SSukumar Swaminathan 2114d0e5007SSukumar Swaminathan typedef union pcicfg_online1_u { 2124d0e5007SSukumar Swaminathan uint32_t dw0; 2134d0e5007SSukumar Swaminathan struct { 2144d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 2154d0e5007SSukumar Swaminathan uint32_t host8_online:1; 2164d0e5007SSukumar Swaminathan uint32_t host7_online:1; 2174d0e5007SSukumar Swaminathan uint32_t host6_online:1; 2184d0e5007SSukumar Swaminathan uint32_t host5_online:1; 2194d0e5007SSukumar Swaminathan uint32_t host4_online:1; 2204d0e5007SSukumar Swaminathan uint32_t host3_online:1; 2214d0e5007SSukumar Swaminathan uint32_t host2_online:1; 2224d0e5007SSukumar Swaminathan uint32_t ipc_online:1; 2234d0e5007SSukumar Swaminathan uint32_t arm_online:1; 2244d0e5007SSukumar Swaminathan uint32_t txp_online:1; 2254d0e5007SSukumar Swaminathan uint32_t xaui_online:1; 2264d0e5007SSukumar Swaminathan uint32_t rxpp_online:1; 2274d0e5007SSukumar Swaminathan uint32_t txpb_online:1; 2284d0e5007SSukumar Swaminathan uint32_t rr_online:1; 2294d0e5007SSukumar Swaminathan uint32_t pmem_online:1; 2304d0e5007SSukumar Swaminathan uint32_t pctl1_online:1; 2314d0e5007SSukumar Swaminathan uint32_t pctl0_online:1; 2324d0e5007SSukumar Swaminathan uint32_t pcs1online_online:1; 2334d0e5007SSukumar Swaminathan uint32_t mpu_iram_online:1; 2344d0e5007SSukumar Swaminathan uint32_t pcs0online_online:1; 2354d0e5007SSukumar Swaminathan uint32_t mgmt_mac_online:1; 2364d0e5007SSukumar Swaminathan uint32_t lpcmemhost_online:1; 2374d0e5007SSukumar Swaminathan #else 2384d0e5007SSukumar Swaminathan uint32_t lpcmemhost_online:1; 2394d0e5007SSukumar Swaminathan uint32_t mgmt_mac_online:1; 2404d0e5007SSukumar Swaminathan uint32_t pcs0online_online:1; 2414d0e5007SSukumar Swaminathan uint32_t mpu_iram_online:1; 2424d0e5007SSukumar Swaminathan uint32_t pcs1online_online:1; 2434d0e5007SSukumar Swaminathan uint32_t pctl0_online:1; 2444d0e5007SSukumar Swaminathan uint32_t pctl1_online:1; 2454d0e5007SSukumar Swaminathan uint32_t pmem_online:1; 2464d0e5007SSukumar Swaminathan uint32_t rr_online:1; 2474d0e5007SSukumar Swaminathan uint32_t txpb_online:1; 2484d0e5007SSukumar Swaminathan uint32_t rxpp_online:1; 2494d0e5007SSukumar Swaminathan uint32_t xaui_online:1; 2504d0e5007SSukumar Swaminathan uint32_t txp_online:1; 2514d0e5007SSukumar Swaminathan uint32_t arm_online:1; 2524d0e5007SSukumar Swaminathan uint32_t ipc_online:1; 2534d0e5007SSukumar Swaminathan uint32_t host2_online:1; 2544d0e5007SSukumar Swaminathan uint32_t host3_online:1; 2554d0e5007SSukumar Swaminathan uint32_t host4_online:1; 2564d0e5007SSukumar Swaminathan uint32_t host5_online:1; 2574d0e5007SSukumar Swaminathan uint32_t host6_online:1; 2584d0e5007SSukumar Swaminathan uint32_t host7_online:1; 2594d0e5007SSukumar Swaminathan uint32_t host8_online:1; 2604d0e5007SSukumar Swaminathan #endif 2614d0e5007SSukumar Swaminathan }bits; 2624d0e5007SSukumar Swaminathan }pcicfg_online1_t; 2634d0e5007SSukumar Swaminathan 2644d0e5007SSukumar Swaminathan typedef union mpu_ep_semaphore_u { 2654d0e5007SSukumar Swaminathan uint32_t dw0; 2664d0e5007SSukumar Swaminathan struct { 2674d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 2684d0e5007SSukumar Swaminathan uint32_t error:1; 2694d0e5007SSukumar Swaminathan uint32_t backup_fw:1; 2704d0e5007SSukumar Swaminathan uint32_t iscsi_no_ip:1; 2714d0e5007SSukumar Swaminathan uint32_t iscsi_ip_conflict:1; 2724d0e5007SSukumar Swaminathan uint32_t option_rom_installed:1; 2734d0e5007SSukumar Swaminathan uint32_t iscsi_drv_loaded:1; 2744d0e5007SSukumar Swaminathan uint32_t rsvd0:10; 2754d0e5007SSukumar Swaminathan uint32_t stage:16; 2764d0e5007SSukumar Swaminathan #else 2774d0e5007SSukumar Swaminathan uint32_t stage:16; 2784d0e5007SSukumar Swaminathan uint32_t rsvd0:10; 2794d0e5007SSukumar Swaminathan uint32_t iscsi_drv_loaded:1; 2804d0e5007SSukumar Swaminathan uint32_t option_rom_installed:1; 2814d0e5007SSukumar Swaminathan uint32_t iscsi_ip_conflict:1; 2824d0e5007SSukumar Swaminathan uint32_t iscsi_no_ip:1; 2834d0e5007SSukumar Swaminathan uint32_t backup_fw:1; 2844d0e5007SSukumar Swaminathan uint32_t error:1; 2854d0e5007SSukumar Swaminathan #endif 2864d0e5007SSukumar Swaminathan }bits; 2874d0e5007SSukumar Swaminathan }mpu_ep_semaphore_t; 2884d0e5007SSukumar Swaminathan 2894d0e5007SSukumar Swaminathan typedef union mpu_ep_control_u { 2904d0e5007SSukumar Swaminathan uint32_t dw0; 2914d0e5007SSukumar Swaminathan struct { 2924d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 2934d0e5007SSukumar Swaminathan uint32_t cpu_reset:1; 2944d0e5007SSukumar Swaminathan uint32_t rsvd1:15; 2954d0e5007SSukumar Swaminathan uint32_t ep_ram_init_status:1; 2964d0e5007SSukumar Swaminathan uint32_t rsvd0:12; 2974d0e5007SSukumar Swaminathan uint32_t m2_rxpbuf:1; 2984d0e5007SSukumar Swaminathan uint32_t m1_rxpbuf:1; 2994d0e5007SSukumar Swaminathan uint32_t m0_rxpbuf:1; 3004d0e5007SSukumar Swaminathan #else 3014d0e5007SSukumar Swaminathan uint32_t m0_rxpbuf:1; 3024d0e5007SSukumar Swaminathan uint32_t m1_rxpbuf:1; 3034d0e5007SSukumar Swaminathan uint32_t m2_rxpbuf:1; 3044d0e5007SSukumar Swaminathan uint32_t rsvd0:12; 3054d0e5007SSukumar Swaminathan uint32_t ep_ram_init_status:1; 3064d0e5007SSukumar Swaminathan uint32_t rsvd1:15; 3074d0e5007SSukumar Swaminathan uint32_t cpu_reset:1; 3084d0e5007SSukumar Swaminathan #endif 3094d0e5007SSukumar Swaminathan }bits; 3104d0e5007SSukumar Swaminathan }mpu_ep_control_t; 3114d0e5007SSukumar Swaminathan 3124d0e5007SSukumar Swaminathan /* RX doorbell */ 3134d0e5007SSukumar Swaminathan typedef union pd_rxulp_db_u { 3144d0e5007SSukumar Swaminathan uint32_t dw0; 3154d0e5007SSukumar Swaminathan struct { 3164d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3174d0e5007SSukumar Swaminathan uint32_t num_posted:8; 3184d0e5007SSukumar Swaminathan uint32_t invalidate:1; 3194d0e5007SSukumar Swaminathan uint32_t rsvd1:13; 3204d0e5007SSukumar Swaminathan uint32_t qid:10; 3214d0e5007SSukumar Swaminathan #else 3224d0e5007SSukumar Swaminathan uint32_t qid:10; 3234d0e5007SSukumar Swaminathan uint32_t rsvd1:13; 3244d0e5007SSukumar Swaminathan uint32_t invalidate:1; 3254d0e5007SSukumar Swaminathan uint32_t num_posted:8; 3264d0e5007SSukumar Swaminathan #endif 3274d0e5007SSukumar Swaminathan }bits; 3284d0e5007SSukumar Swaminathan }pd_rxulp_db_t; 3294d0e5007SSukumar Swaminathan 3304d0e5007SSukumar Swaminathan /* TX doorbell */ 3314d0e5007SSukumar Swaminathan typedef union pd_txulp_db_u { 3324d0e5007SSukumar Swaminathan uint32_t dw0; 3334d0e5007SSukumar Swaminathan struct { 3344d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3354d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 3364d0e5007SSukumar Swaminathan uint32_t num_posted:14; 3374d0e5007SSukumar Swaminathan uint32_t rsvd0:6; 3384d0e5007SSukumar Swaminathan uint32_t qid:10; 3394d0e5007SSukumar Swaminathan #else 3404d0e5007SSukumar Swaminathan uint32_t qid:10; 3414d0e5007SSukumar Swaminathan uint32_t rsvd0:6; 3424d0e5007SSukumar Swaminathan uint32_t num_posted:14; 3434d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 3444d0e5007SSukumar Swaminathan #endif 3454d0e5007SSukumar Swaminathan }bits; 3464d0e5007SSukumar Swaminathan }pd_txulp_db_t; 3474d0e5007SSukumar Swaminathan 3484d0e5007SSukumar Swaminathan /* CQ doorbell */ 3494d0e5007SSukumar Swaminathan typedef union cq_db_u { 3504d0e5007SSukumar Swaminathan uint32_t dw0; 3514d0e5007SSukumar Swaminathan struct { 3524d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3534d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 3544d0e5007SSukumar Swaminathan uint32_t rearm:1; 3554d0e5007SSukumar Swaminathan uint32_t num_popped:13; 3564d0e5007SSukumar Swaminathan uint32_t rsvd0:5; 3574d0e5007SSukumar Swaminathan uint32_t event:1; 3584d0e5007SSukumar Swaminathan uint32_t qid:10; 3594d0e5007SSukumar Swaminathan #else 3604d0e5007SSukumar Swaminathan uint32_t qid:10; 3614d0e5007SSukumar Swaminathan uint32_t event:1; 3624d0e5007SSukumar Swaminathan uint32_t rsvd0:5; 3634d0e5007SSukumar Swaminathan uint32_t num_popped:13; 3644d0e5007SSukumar Swaminathan uint32_t rearm:1; 3654d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 3664d0e5007SSukumar Swaminathan #endif 3674d0e5007SSukumar Swaminathan }bits; 3684d0e5007SSukumar Swaminathan }cq_db_t; 3694d0e5007SSukumar Swaminathan 3704d0e5007SSukumar Swaminathan /* EQ doorbell */ 3714d0e5007SSukumar Swaminathan typedef union eq_db_u { 3724d0e5007SSukumar Swaminathan uint32_t dw0; 3734d0e5007SSukumar Swaminathan struct { 3744d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3754d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 3764d0e5007SSukumar Swaminathan uint32_t rearm:1; 3774d0e5007SSukumar Swaminathan uint32_t num_popped:13; 3784d0e5007SSukumar Swaminathan uint32_t rsvd0:5; 3794d0e5007SSukumar Swaminathan uint32_t event:1; 3804d0e5007SSukumar Swaminathan uint32_t clrint:1; 3814d0e5007SSukumar Swaminathan uint32_t qid:9; 3824d0e5007SSukumar Swaminathan #else 3834d0e5007SSukumar Swaminathan uint32_t qid:9; 3844d0e5007SSukumar Swaminathan uint32_t clrint:1; 3854d0e5007SSukumar Swaminathan uint32_t event:1; 3864d0e5007SSukumar Swaminathan uint32_t rsvd0:5; 3874d0e5007SSukumar Swaminathan uint32_t num_popped:13; 3884d0e5007SSukumar Swaminathan uint32_t rearm:1; 3894d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 3904d0e5007SSukumar Swaminathan #endif 3914d0e5007SSukumar Swaminathan }bits; 3924d0e5007SSukumar Swaminathan }eq_db_t; 3934d0e5007SSukumar Swaminathan 3944d0e5007SSukumar Swaminathan /* bootstrap mbox doorbell */ 3954d0e5007SSukumar Swaminathan typedef union pd_mpu_mbox_db_u { 3964d0e5007SSukumar Swaminathan uint32_t dw0; 3974d0e5007SSukumar Swaminathan struct { 3984d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 3994d0e5007SSukumar Swaminathan uint32_t address:30; 4004d0e5007SSukumar Swaminathan uint32_t hi:1; 4014d0e5007SSukumar Swaminathan uint32_t ready:1; 4024d0e5007SSukumar Swaminathan #else 4034d0e5007SSukumar Swaminathan uint32_t ready:1; 4044d0e5007SSukumar Swaminathan uint32_t hi:1; 4054d0e5007SSukumar Swaminathan uint32_t address:30; 4064d0e5007SSukumar Swaminathan #endif 4074d0e5007SSukumar Swaminathan }bits; 4084d0e5007SSukumar Swaminathan }pd_mpu_mbox_db_t; 4094d0e5007SSukumar Swaminathan 4104d0e5007SSukumar Swaminathan 4114d0e5007SSukumar Swaminathan /* MQ ring doorbell */ 4124d0e5007SSukumar Swaminathan typedef union pd_mq_db_u { 4134d0e5007SSukumar Swaminathan uint32_t dw0; 4144d0e5007SSukumar Swaminathan struct { 4154d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4164d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 4174d0e5007SSukumar Swaminathan uint32_t num_posted:14; 4184d0e5007SSukumar Swaminathan uint32_t rsvd0:5; 4194d0e5007SSukumar Swaminathan uint32_t mq_id:11; 4204d0e5007SSukumar Swaminathan #else 4214d0e5007SSukumar Swaminathan uint32_t mq_id:11; 4224d0e5007SSukumar Swaminathan uint32_t rsvd0:5; 4234d0e5007SSukumar Swaminathan uint32_t num_posted:14; 4244d0e5007SSukumar Swaminathan uint32_t rsvd1:2; 4254d0e5007SSukumar Swaminathan #endif 4264d0e5007SSukumar Swaminathan }bits; 4274d0e5007SSukumar Swaminathan }pd_mq_db_t; 4284d0e5007SSukumar Swaminathan 4294d0e5007SSukumar Swaminathan /* 4304d0e5007SSukumar Swaminathan * Event Queue Entry 4314d0e5007SSukumar Swaminathan */ 4324d0e5007SSukumar Swaminathan struct oce_eqe { 4334d0e5007SSukumar Swaminathan union { 4344d0e5007SSukumar Swaminathan struct { 4354d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4364d0e5007SSukumar Swaminathan uint32_t resource_id:16; 4374d0e5007SSukumar Swaminathan uint32_t minor_code:12; 4384d0e5007SSukumar Swaminathan uint32_t major_code:3; 4394d0e5007SSukumar Swaminathan uint32_t valid:1; 4404d0e5007SSukumar Swaminathan #else 4414d0e5007SSukumar Swaminathan uint32_t valid:1; 4424d0e5007SSukumar Swaminathan uint32_t major_code:3; 4434d0e5007SSukumar Swaminathan uint32_t minor_code:12; 4444d0e5007SSukumar Swaminathan uint32_t resource_id:16; 4454d0e5007SSukumar Swaminathan #endif 4464d0e5007SSukumar Swaminathan }s; 4474d0e5007SSukumar Swaminathan uint32_t dw0; 4484d0e5007SSukumar Swaminathan }u0; 4494d0e5007SSukumar Swaminathan }; 4504d0e5007SSukumar Swaminathan 4514d0e5007SSukumar Swaminathan /* MQ scatter gather entry. Array of these make an SGL */ 4524d0e5007SSukumar Swaminathan struct oce_mq_sge { 4534d0e5007SSukumar Swaminathan uint32_t pa_lo; 4544d0e5007SSukumar Swaminathan uint32_t pa_hi; 4554d0e5007SSukumar Swaminathan uint32_t length; 4564d0e5007SSukumar Swaminathan }; 4574d0e5007SSukumar Swaminathan 4584d0e5007SSukumar Swaminathan /* 4594d0e5007SSukumar Swaminathan * payload can contain an SGL or an embedded array of upto 59 dwords 4604d0e5007SSukumar Swaminathan */ 4614d0e5007SSukumar Swaminathan struct oce_mbx_payload { 4624d0e5007SSukumar Swaminathan union { 4634d0e5007SSukumar Swaminathan union { 4644d0e5007SSukumar Swaminathan struct oce_mq_sge sgl[MAX_MBX_SGE]; 4654d0e5007SSukumar Swaminathan uint32_t embedded[59]; 4664d0e5007SSukumar Swaminathan }u1; 4674d0e5007SSukumar Swaminathan uint32_t dw[59]; 4684d0e5007SSukumar Swaminathan }u0; 4694d0e5007SSukumar Swaminathan }; 4704d0e5007SSukumar Swaminathan 4714d0e5007SSukumar Swaminathan /* 4724d0e5007SSukumar Swaminathan * MQ MBX structure 4734d0e5007SSukumar Swaminathan */ 4744d0e5007SSukumar Swaminathan struct oce_mbx { 4754d0e5007SSukumar Swaminathan union { 4764d0e5007SSukumar Swaminathan struct { 4774d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 4784d0e5007SSukumar Swaminathan uint32_t special : 8; 4794d0e5007SSukumar Swaminathan uint32_t rsvd1 : 16; 4804d0e5007SSukumar Swaminathan uint32_t sge_count : 5; 4814d0e5007SSukumar Swaminathan uint32_t rsvd0 : 2; 4824d0e5007SSukumar Swaminathan uint32_t embedded : 1; 4834d0e5007SSukumar Swaminathan #else 4844d0e5007SSukumar Swaminathan uint32_t embedded:1; 4854d0e5007SSukumar Swaminathan uint32_t rsvd0:2; 4864d0e5007SSukumar Swaminathan uint32_t sge_count:5; 4874d0e5007SSukumar Swaminathan uint32_t rsvd1:16; 4884d0e5007SSukumar Swaminathan uint32_t special:8; 4894d0e5007SSukumar Swaminathan #endif 4904d0e5007SSukumar Swaminathan }s; 4914d0e5007SSukumar Swaminathan uint32_t dw0; 4924d0e5007SSukumar Swaminathan }u0; 4934d0e5007SSukumar Swaminathan 4944d0e5007SSukumar Swaminathan uint32_t payload_length; 4954d0e5007SSukumar Swaminathan uint32_t tag[2]; 4964d0e5007SSukumar Swaminathan uint32_t rsvd2[1]; 4974d0e5007SSukumar Swaminathan struct oce_mbx_payload payload; 4984d0e5007SSukumar Swaminathan }; 4994d0e5007SSukumar Swaminathan 5004d0e5007SSukumar Swaminathan /* completion queue entry for MQ */ 5014d0e5007SSukumar Swaminathan struct oce_mq_cqe { 5024d0e5007SSukumar Swaminathan union { 5034d0e5007SSukumar Swaminathan struct { 5044d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 5054d0e5007SSukumar Swaminathan /* dw0 */ 5064d0e5007SSukumar Swaminathan uint32_t extended_status:16; 5074d0e5007SSukumar Swaminathan uint32_t completion_status:16; 5084d0e5007SSukumar Swaminathan /* dw1 dw2 */ 5094d0e5007SSukumar Swaminathan uint32_t mq_tag[2]; 5104d0e5007SSukumar Swaminathan /* dw3 */ 5114d0e5007SSukumar Swaminathan uint32_t valid:1; 5124d0e5007SSukumar Swaminathan uint32_t async_event:1; 5134d0e5007SSukumar Swaminathan uint32_t hpi_buffer_cmpl:1; 5144d0e5007SSukumar Swaminathan uint32_t completed:1; 5154d0e5007SSukumar Swaminathan uint32_t consumed:1; 5164d0e5007SSukumar Swaminathan uint32_t rsvd0:27; 5174d0e5007SSukumar Swaminathan #else 5184d0e5007SSukumar Swaminathan /* dw0 */ 5194d0e5007SSukumar Swaminathan uint32_t completion_status:16; 5204d0e5007SSukumar Swaminathan uint32_t extended_status:16; 5214d0e5007SSukumar Swaminathan /* dw1 dw2 */ 5224d0e5007SSukumar Swaminathan uint32_t mq_tag[2]; 5234d0e5007SSukumar Swaminathan /* dw3 */ 5244d0e5007SSukumar Swaminathan uint32_t rsvd0:27; 5254d0e5007SSukumar Swaminathan uint32_t consumed:1; 5264d0e5007SSukumar Swaminathan uint32_t completed:1; 5274d0e5007SSukumar Swaminathan uint32_t hpi_buffer_cmpl:1; 5284d0e5007SSukumar Swaminathan uint32_t async_event:1; 5294d0e5007SSukumar Swaminathan uint32_t valid:1; 5304d0e5007SSukumar Swaminathan #endif 5314d0e5007SSukumar Swaminathan }s; 5324d0e5007SSukumar Swaminathan uint32_t dw[4]; 5334d0e5007SSukumar Swaminathan }u0; 5344d0e5007SSukumar Swaminathan }; 5354d0e5007SSukumar Swaminathan 5364d0e5007SSukumar Swaminathan struct oce_async_cqe_link_state { 5374d0e5007SSukumar Swaminathan union { 5384d0e5007SSukumar Swaminathan struct { 5394d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 5404d0e5007SSukumar Swaminathan /* dw0 */ 5414d0e5007SSukumar Swaminathan uint8_t speed; 5424d0e5007SSukumar Swaminathan uint8_t duplex; 5434d0e5007SSukumar Swaminathan uint8_t link_status; 5444d0e5007SSukumar Swaminathan uint8_t phy_port; 5454d0e5007SSukumar Swaminathan /* dw1 */ 5464d0e5007SSukumar Swaminathan uint8_t rsvd0[3]; 5474d0e5007SSukumar Swaminathan uint8_t fault; 5484d0e5007SSukumar Swaminathan /* dw2 */ 5494d0e5007SSukumar Swaminathan uint32_t event_tag; 5504d0e5007SSukumar Swaminathan /* dw3 */ 5514d0e5007SSukumar Swaminathan uint32_t valid:1; 5524d0e5007SSukumar Swaminathan uint32_t async_event:1; 5534d0e5007SSukumar Swaminathan uint32_t rsvd2:6; 5544d0e5007SSukumar Swaminathan uint32_t event_type:8; 5554d0e5007SSukumar Swaminathan uint32_t event_code:8; 5564d0e5007SSukumar Swaminathan uint32_t rsvd1:8; 5574d0e5007SSukumar Swaminathan #else 5584d0e5007SSukumar Swaminathan /* dw0 */ 5594d0e5007SSukumar Swaminathan uint8_t phy_port; 5604d0e5007SSukumar Swaminathan uint8_t link_status; 5614d0e5007SSukumar Swaminathan uint8_t duplex; 5624d0e5007SSukumar Swaminathan uint8_t speed; 5634d0e5007SSukumar Swaminathan /* dw1 */ 5644d0e5007SSukumar Swaminathan uint8_t fault; 5654d0e5007SSukumar Swaminathan uint8_t rsvd0[3]; 5664d0e5007SSukumar Swaminathan /* dw2 */ 5674d0e5007SSukumar Swaminathan uint32_t event_tag; 5684d0e5007SSukumar Swaminathan /* dw3 */ 5694d0e5007SSukumar Swaminathan uint32_t rsvd1:8; 5704d0e5007SSukumar Swaminathan uint32_t event_code:8; 5714d0e5007SSukumar Swaminathan uint32_t event_type:8; 5724d0e5007SSukumar Swaminathan uint32_t rsvd2:6; 5734d0e5007SSukumar Swaminathan uint32_t async_event:1; 5744d0e5007SSukumar Swaminathan uint32_t valid:1; 5754d0e5007SSukumar Swaminathan #endif 5764d0e5007SSukumar Swaminathan }s; 5774d0e5007SSukumar Swaminathan uint32_t dw[4]; 5784d0e5007SSukumar Swaminathan }u0; 5794d0e5007SSukumar Swaminathan }; 5804d0e5007SSukumar Swaminathan 5814d0e5007SSukumar Swaminathan /* MQ mailbox structure */ 5824d0e5007SSukumar Swaminathan struct oce_bmbx { 5834d0e5007SSukumar Swaminathan struct oce_mbx mbx; 5844d0e5007SSukumar Swaminathan struct oce_mq_cqe cqe; 5854d0e5007SSukumar Swaminathan }; 5864d0e5007SSukumar Swaminathan 5874d0e5007SSukumar Swaminathan /* ---[ MBXs start here ]---------------------------------------------- */ 5884d0e5007SSukumar Swaminathan /* MBXs sub system codes */ 5894d0e5007SSukumar Swaminathan enum { 5904d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_RSVD = 0, 5914d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_COMMON = 1, 5924d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_COMMON_ISCSI = 2, 5934d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_NIC = 3, 5944d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_TOE = 4, 5954d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_PXE_UNDI = 5, 5964d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_ISCSI_INI = 6, 5974d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_ISCSI_TGT = 7, 5984d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_MILI_PTL = 8, 5994d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_MILI_TMD = 9, 6004d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_RDMA = 10, 6014d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_LOWLEVEL = 11, 6024d0e5007SSukumar Swaminathan MBX_SUBSYSTEM_LRO = 13, 6034d0e5007SSukumar Swaminathan IOCBMBX_SUBSYSTEM_DCBX = 15, 6044d0e5007SSukumar Swaminathan IOCBMBX_SUBSYSTEM_DIAG = 16, 6054d0e5007SSukumar Swaminathan IOCBMBX_SUBSYSTEM_VENDOR = 17 6064d0e5007SSukumar Swaminathan }; 6074d0e5007SSukumar Swaminathan 6084d0e5007SSukumar Swaminathan /* common ioctl opcodes */ 6094d0e5007SSukumar Swaminathan enum { 6104d0e5007SSukumar Swaminathan OPCODE_QUERY_COMMON_IFACE_MAC = 1, 6114d0e5007SSukumar Swaminathan OPCODE_SET_COMMON_IFACE_MAC = 2, 6124d0e5007SSukumar Swaminathan OPCODE_SET_COMMON_IFACE_MULTICAST = 3, 6134d0e5007SSukumar Swaminathan OPCODE_CONFIG_COMMON_IFACE_VLAN = 4, 6144d0e5007SSukumar Swaminathan OPCODE_QUERY_COMMON_LINK_STATUS = 5, 6154d0e5007SSukumar Swaminathan OPCODE_READ_COMMON_FLASHROM = 6, 6164d0e5007SSukumar Swaminathan OPCODE_WRITE_COMMON_FLASHROM = 7, 6174d0e5007SSukumar Swaminathan OPCODE_QUERY_COMMON_MAX_MBX_BUFFER_SIZE = 8, 6184d0e5007SSukumar Swaminathan OPCODE_ADD_COMMON_PAGE_TABLES = 9, 6194d0e5007SSukumar Swaminathan OPCODE_REMOVE_COMMON_PAGE_TABLES = 10, 6204d0e5007SSukumar Swaminathan OPCODE_CREATE_COMMON_CQ = 12, 6214d0e5007SSukumar Swaminathan OPCODE_CREATE_COMMON_EQ = 13, 6224d0e5007SSukumar Swaminathan OPCODE_CREATE_COMMON_MQ = 21, 6234d0e5007SSukumar Swaminathan OPCODE_COMMON_JELL_CONFIG = 22, 6244d0e5007SSukumar Swaminathan OPCODE_COMMON_ADD_TEMPLATE_HEADER_BUFFERS = 24, 6254d0e5007SSukumar Swaminathan OPCODE_COMMON_REMOVE_TEMPLATE_HEADER_BUFFERS = 25, 6264d0e5007SSukumar Swaminathan OPCODE_COMMON_POST_ZERO_BUFFER = 26, 6274d0e5007SSukumar Swaminathan OPCODE_COMMON_GET_QOS = 27, 6284d0e5007SSukumar Swaminathan OPCODE_COMMON_SET_QOS = 28, 6294d0e5007SSukumar Swaminathan OPCODE_COMMON_TCP_GET_STATISTICS = 29, 6304d0e5007SSukumar Swaminathan OPCODE_READ_COMMON_SEEPROM = 30, 6314d0e5007SSukumar Swaminathan OPCODE_COMMON_TCP_STATE_QUERY = 31, 6324d0e5007SSukumar Swaminathan OPCODE_GET_COMMON_CNTL_ATTRIBUTES = 32, 6334d0e5007SSukumar Swaminathan OPCODE_COMMON_NOP = 33, 6344d0e5007SSukumar Swaminathan OPCODE_COMMON_NTWK_RX_FILTER = 34, 6354d0e5007SSukumar Swaminathan OPCODE_GET_COMMON_FW_VERSION = 35, 6364d0e5007SSukumar Swaminathan OPCODE_SET_COMMON_FLOW_CONTROL = 36, 6374d0e5007SSukumar Swaminathan OPCODE_GET_COMMON_FLOW_CONTROL = 37, 6384d0e5007SSukumar Swaminathan OPCODE_COMMON_SET_TCP_PARAMETERS = 38, 6394d0e5007SSukumar Swaminathan OPCODE_SET_COMMON_FRAME_SIZE = 39, 6404d0e5007SSukumar Swaminathan OPCODE_COMMON_GET_FAT = 40, 6414d0e5007SSukumar Swaminathan OPCODE_MODIFY_COMMON_EQ_DELAY = 41, 6424d0e5007SSukumar Swaminathan OPCODE_COMMON_FIRMWARE_CONFIG = 42, 6434d0e5007SSukumar Swaminathan OPCODE_COMMON_ENABLE_DISABLE_DOMAINS = 43, 6444d0e5007SSukumar Swaminathan OPCODE_COMMON_GET_DOMAIN_CONFIG = 44, 6454d0e5007SSukumar Swaminathan OPCODE_COMMON_GET_PORT_EQUALIZATION = 47, 6464d0e5007SSukumar Swaminathan OPCODE_COMMON_SET_PORT_EQUALIZATION = 48, 6474d0e5007SSukumar Swaminathan OPCODE_COMMON_RED_CONFIG = 49, 6484d0e5007SSukumar Swaminathan OPCODE_CREATE_COMMON_IFACE = 50, 6494d0e5007SSukumar Swaminathan OPCODE_DESTROY_COMMON_IFACE = 51, 6504d0e5007SSukumar Swaminathan OPCODE_COMMON_CEV_MODIFY_MSI_MESSAGES = 52, 6514d0e5007SSukumar Swaminathan OPCODE_DESTROY_COMMON_MQ = 53, 6524d0e5007SSukumar Swaminathan OPCODE_DESTROY_COMMON_CQ = 54, 6534d0e5007SSukumar Swaminathan OPCODE_DESTROY_COMMON_EQ = 55, 6544d0e5007SSukumar Swaminathan OPCODE_COMMON_TCP_UPL_OAD = 56, 6554d0e5007SSukumar Swaminathan OPCODE_SET_COMMON_LINK_SPEED = 57, 6564d0e5007SSukumar Swaminathan OPCODE_QUERY_COMMON_FIRMWARE_CONFIG = 58, 6574d0e5007SSukumar Swaminathan OPCODE_ADD_COMMON_IFACE_MAC = 59, 6584d0e5007SSukumar Swaminathan OPCODE_DEL_COMMON_IFACE_MAC = 60, 6594d0e5007SSukumar Swaminathan OPCODE_COMMON_FUNCTION_RESET = 61, 6604d0e5007SSukumar Swaminathan OPCODE_COMMON_FUNCTION_LINK_CONFIG = 80 6614d0e5007SSukumar Swaminathan }; 6624d0e5007SSukumar Swaminathan 6634d0e5007SSukumar Swaminathan /* common ioctl header */ 6644d0e5007SSukumar Swaminathan struct mbx_hdr { 6654d0e5007SSukumar Swaminathan union { 6664d0e5007SSukumar Swaminathan struct { 6674d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 6684d0e5007SSukumar Swaminathan uint8_t domain; 6694d0e5007SSukumar Swaminathan uint8_t port_number; 6704d0e5007SSukumar Swaminathan uint8_t subsystem; 6714d0e5007SSukumar Swaminathan uint8_t opcode; 6724d0e5007SSukumar Swaminathan #else 6734d0e5007SSukumar Swaminathan uint8_t opcode; 6744d0e5007SSukumar Swaminathan uint8_t subsystem; 6754d0e5007SSukumar Swaminathan uint8_t port_number; 6764d0e5007SSukumar Swaminathan uint8_t domain; 6774d0e5007SSukumar Swaminathan #endif 6784d0e5007SSukumar Swaminathan uint32_t timeout; 6794d0e5007SSukumar Swaminathan uint32_t request_length; 6804d0e5007SSukumar Swaminathan uint32_t rsvd0; 6814d0e5007SSukumar Swaminathan }req; 6824d0e5007SSukumar Swaminathan 6834d0e5007SSukumar Swaminathan struct { 6844d0e5007SSukumar Swaminathan /* dw 0 */ 6854d0e5007SSukumar Swaminathan uint8_t opcode; 6864d0e5007SSukumar Swaminathan uint8_t subsystem; 6874d0e5007SSukumar Swaminathan uint8_t rsvd0; 6884d0e5007SSukumar Swaminathan uint8_t domain; 6894d0e5007SSukumar Swaminathan /* dw 1 */ 6904d0e5007SSukumar Swaminathan uint8_t status; 6914d0e5007SSukumar Swaminathan uint8_t additional_status; 6924d0e5007SSukumar Swaminathan uint16_t rsvd1; 6934d0e5007SSukumar Swaminathan 6944d0e5007SSukumar Swaminathan uint32_t rsp_length; 6954d0e5007SSukumar Swaminathan uint32_t actual_rsp_length; 6964d0e5007SSukumar Swaminathan }rsp; 6974d0e5007SSukumar Swaminathan uint32_t dw[4]; 6984d0e5007SSukumar Swaminathan }u0; 6994d0e5007SSukumar Swaminathan }; 7004d0e5007SSukumar Swaminathan #define OCE_BMBX_RHDR_SZ 20 7014d0e5007SSukumar Swaminathan #define OCE_MBX_RRHDR_SZ sizeof (struct mbx_hdr) 7024d0e5007SSukumar Swaminathan #define OCE_MBX_ADDL_STATUS(_MHDR) ((_MHDR)->u0.rsp.additional_status) 7034d0e5007SSukumar Swaminathan #define OCE_MBX_STATUS(_MHDR) ((_MHDR)->u0.rsp.status) 7044d0e5007SSukumar Swaminathan 7054d0e5007SSukumar Swaminathan /* [05] OPCODE_QUERY_COMMON_LINK_STATUS */ 7064d0e5007SSukumar Swaminathan struct mbx_query_common_link_status { 7074d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 7084d0e5007SSukumar Swaminathan union { 7094d0e5007SSukumar Swaminathan struct { 7104d0e5007SSukumar Swaminathan uint32_t rsvd0; 7114d0e5007SSukumar Swaminathan }req; 7124d0e5007SSukumar Swaminathan 7134d0e5007SSukumar Swaminathan struct { 7144d0e5007SSukumar Swaminathan /* dw 0 */ 7154d0e5007SSukumar Swaminathan uint8_t physical_port; 7164d0e5007SSukumar Swaminathan uint8_t mac_duplex; 7174d0e5007SSukumar Swaminathan uint8_t mac_speed; 7184d0e5007SSukumar Swaminathan uint8_t mac_fault; 7194d0e5007SSukumar Swaminathan /* dw 1 */ 7204d0e5007SSukumar Swaminathan uint8_t mgmt_mac_duplex; 7214d0e5007SSukumar Swaminathan uint8_t mgmt_mac_speed; 722*8d738d7dSSukumar Swaminathan uint16_t qos_link_speed; 723*8d738d7dSSukumar Swaminathan uint32_t logical_link_status; 7244d0e5007SSukumar Swaminathan }rsp; 7254d0e5007SSukumar Swaminathan }params; 7264d0e5007SSukumar Swaminathan }; 7274d0e5007SSukumar Swaminathan 7284d0e5007SSukumar Swaminathan /* [57] OPCODE_SET_COMMON_LINK_SPEED */ 7294d0e5007SSukumar Swaminathan struct mbx_set_common_link_speed { 7304d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 7314d0e5007SSukumar Swaminathan union { 7324d0e5007SSukumar Swaminathan struct { 7334d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 7344d0e5007SSukumar Swaminathan uint8_t rsvd0; 7354d0e5007SSukumar Swaminathan uint8_t mac_speed; 7364d0e5007SSukumar Swaminathan uint8_t virtual_port; 7374d0e5007SSukumar Swaminathan uint8_t physical_port; 7384d0e5007SSukumar Swaminathan #else 7394d0e5007SSukumar Swaminathan uint8_t physical_port; 7404d0e5007SSukumar Swaminathan uint8_t virtual_port; 7414d0e5007SSukumar Swaminathan uint8_t mac_speed; 7424d0e5007SSukumar Swaminathan uint8_t rsvd0; 7434d0e5007SSukumar Swaminathan #endif 7444d0e5007SSukumar Swaminathan }req; 7454d0e5007SSukumar Swaminathan 7464d0e5007SSukumar Swaminathan struct { 7474d0e5007SSukumar Swaminathan uint32_t rsvd0; 7484d0e5007SSukumar Swaminathan }rsp; 7494d0e5007SSukumar Swaminathan 7504d0e5007SSukumar Swaminathan uint32_t dw; 7514d0e5007SSukumar Swaminathan }params; 7524d0e5007SSukumar Swaminathan }; 7534d0e5007SSukumar Swaminathan 7544d0e5007SSukumar Swaminathan struct mac_address_format { 7554d0e5007SSukumar Swaminathan uint16_t size_of_struct; 7564d0e5007SSukumar Swaminathan uint8_t mac_addr[6]; 7574d0e5007SSukumar Swaminathan }; 7584d0e5007SSukumar Swaminathan 7594d0e5007SSukumar Swaminathan /* [01] OPCODE_QUERY_COMMON_IFACE_MAC */ 7604d0e5007SSukumar Swaminathan struct mbx_query_common_iface_mac { 7614d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 7624d0e5007SSukumar Swaminathan union { 7634d0e5007SSukumar Swaminathan struct { 7644d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 7654d0e5007SSukumar Swaminathan uint16_t if_id; 7664d0e5007SSukumar Swaminathan uint8_t permanent; 7674d0e5007SSukumar Swaminathan uint8_t type; 7684d0e5007SSukumar Swaminathan #else 7694d0e5007SSukumar Swaminathan uint8_t type; 7704d0e5007SSukumar Swaminathan uint8_t permanent; 7714d0e5007SSukumar Swaminathan uint16_t if_id; 7724d0e5007SSukumar Swaminathan #endif 7734d0e5007SSukumar Swaminathan 7744d0e5007SSukumar Swaminathan }req; 7754d0e5007SSukumar Swaminathan 7764d0e5007SSukumar Swaminathan struct { 7774d0e5007SSukumar Swaminathan struct mac_address_format mac; 7784d0e5007SSukumar Swaminathan }rsp; 7794d0e5007SSukumar Swaminathan }params; 7804d0e5007SSukumar Swaminathan }; 7814d0e5007SSukumar Swaminathan 7824d0e5007SSukumar Swaminathan /* [02] OPCODE_SET_COMMON_IFACE_MAC */ 7834d0e5007SSukumar Swaminathan struct mbx_set_common_iface_mac { 7844d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 7854d0e5007SSukumar Swaminathan union { 7864d0e5007SSukumar Swaminathan struct { 7874d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 7884d0e5007SSukumar Swaminathan /* dw 0 */ 7894d0e5007SSukumar Swaminathan uint16_t if_id; 7904d0e5007SSukumar Swaminathan uint8_t invalidate; 7914d0e5007SSukumar Swaminathan uint8_t type; 7924d0e5007SSukumar Swaminathan #else 7934d0e5007SSukumar Swaminathan /* dw 0 */ 7944d0e5007SSukumar Swaminathan uint8_t type; 7954d0e5007SSukumar Swaminathan uint8_t invalidate; 7964d0e5007SSukumar Swaminathan uint16_t if_id; 7974d0e5007SSukumar Swaminathan #endif 7984d0e5007SSukumar Swaminathan /* dw 1 */ 7994d0e5007SSukumar Swaminathan struct mac_address_format mac; 8004d0e5007SSukumar Swaminathan }req; 8014d0e5007SSukumar Swaminathan 8024d0e5007SSukumar Swaminathan struct { 8034d0e5007SSukumar Swaminathan uint32_t rsvd0; 8044d0e5007SSukumar Swaminathan }rsp; 8054d0e5007SSukumar Swaminathan 8064d0e5007SSukumar Swaminathan uint32_t dw[2]; 8074d0e5007SSukumar Swaminathan }params; 8084d0e5007SSukumar Swaminathan }; 8094d0e5007SSukumar Swaminathan 8104d0e5007SSukumar Swaminathan /* [03] OPCODE_SET_COMMON_IFACE_MULTICAST */ 8114d0e5007SSukumar Swaminathan struct mbx_set_common_iface_multicast { 8124d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 8134d0e5007SSukumar Swaminathan union { 8144d0e5007SSukumar Swaminathan struct { 8154d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 8164d0e5007SSukumar Swaminathan /* dw 0 */ 8174d0e5007SSukumar Swaminathan uint8_t if_id; 8184d0e5007SSukumar Swaminathan uint8_t promiscuous; 8194d0e5007SSukumar Swaminathan uint16_t num_mac; 8204d0e5007SSukumar Swaminathan #else 8214d0e5007SSukumar Swaminathan /* dw 0 */ 8224d0e5007SSukumar Swaminathan uint16_t num_mac; 8234d0e5007SSukumar Swaminathan uint8_t promiscuous; 8244d0e5007SSukumar Swaminathan uint8_t if_id; 8254d0e5007SSukumar Swaminathan #endif 8264d0e5007SSukumar Swaminathan /* dw 1-48 */ 8274d0e5007SSukumar Swaminathan struct { 8284d0e5007SSukumar Swaminathan uint8_t byte[6]; 8294d0e5007SSukumar Swaminathan } mac[32]; 8304d0e5007SSukumar Swaminathan 8314d0e5007SSukumar Swaminathan }req; 8324d0e5007SSukumar Swaminathan 8334d0e5007SSukumar Swaminathan struct { 8344d0e5007SSukumar Swaminathan uint32_t rsvd0; 8354d0e5007SSukumar Swaminathan }rsp; 8364d0e5007SSukumar Swaminathan 8374d0e5007SSukumar Swaminathan uint32_t dw[49]; 8384d0e5007SSukumar Swaminathan }params; 8394d0e5007SSukumar Swaminathan }; 8404d0e5007SSukumar Swaminathan 8414d0e5007SSukumar Swaminathan struct qinq_vlan { 8424d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 8434d0e5007SSukumar Swaminathan uint16_t inner; 8444d0e5007SSukumar Swaminathan uint16_t outer; 8454d0e5007SSukumar Swaminathan #else 8464d0e5007SSukumar Swaminathan uint16_t outer; 8474d0e5007SSukumar Swaminathan uint16_t inner; 8484d0e5007SSukumar Swaminathan #endif 8494d0e5007SSukumar Swaminathan }; 8504d0e5007SSukumar Swaminathan 8514d0e5007SSukumar Swaminathan struct normal_vlan { 8524d0e5007SSukumar Swaminathan uint16_t vtag; 8534d0e5007SSukumar Swaminathan }; 8544d0e5007SSukumar Swaminathan 8554d0e5007SSukumar Swaminathan struct ntwk_if_vlan_tag { 8564d0e5007SSukumar Swaminathan union { 8574d0e5007SSukumar Swaminathan struct normal_vlan normal; 8584d0e5007SSukumar Swaminathan struct qinq_vlan qinq; 8594d0e5007SSukumar Swaminathan }u0; 8604d0e5007SSukumar Swaminathan }; 8614d0e5007SSukumar Swaminathan 8624d0e5007SSukumar Swaminathan /* [50] OPCODE_CREATE_COMMON_IFACE */ 8634d0e5007SSukumar Swaminathan struct mbx_create_common_iface { 8644d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 8654d0e5007SSukumar Swaminathan union { 8664d0e5007SSukumar Swaminathan struct { 8674d0e5007SSukumar Swaminathan uint32_t version; 8684d0e5007SSukumar Swaminathan uint32_t cap_flags; 8694d0e5007SSukumar Swaminathan uint32_t enable_flags; 8704d0e5007SSukumar Swaminathan uint8_t mac_addr[6]; 8714d0e5007SSukumar Swaminathan uint8_t rsvd0; 8724d0e5007SSukumar Swaminathan uint8_t mac_invalid; 8734d0e5007SSukumar Swaminathan struct ntwk_if_vlan_tag vlan_tag; 8744d0e5007SSukumar Swaminathan }req; 8754d0e5007SSukumar Swaminathan 8764d0e5007SSukumar Swaminathan struct { 8774d0e5007SSukumar Swaminathan uint32_t if_id; 8784d0e5007SSukumar Swaminathan uint32_t pmac_id; 8794d0e5007SSukumar Swaminathan }rsp; 8804d0e5007SSukumar Swaminathan uint32_t dw[4]; 8814d0e5007SSukumar Swaminathan }params; 8824d0e5007SSukumar Swaminathan }; 8834d0e5007SSukumar Swaminathan 8844d0e5007SSukumar Swaminathan /* [51] OPCODE_DESTROY_COMMON_IFACE */ 8854d0e5007SSukumar Swaminathan struct mbx_destroy_common_iface { 8864d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 8874d0e5007SSukumar Swaminathan union { 8884d0e5007SSukumar Swaminathan struct { 8894d0e5007SSukumar Swaminathan uint32_t if_id; 8904d0e5007SSukumar Swaminathan }req; 8914d0e5007SSukumar Swaminathan 8924d0e5007SSukumar Swaminathan struct { 8934d0e5007SSukumar Swaminathan uint32_t rsvd0; 8944d0e5007SSukumar Swaminathan }rsp; 8954d0e5007SSukumar Swaminathan 8964d0e5007SSukumar Swaminathan uint32_t dw; 8974d0e5007SSukumar Swaminathan }params; 8984d0e5007SSukumar Swaminathan }; 8994d0e5007SSukumar Swaminathan 9004d0e5007SSukumar Swaminathan /* event queue context structure */ 9014d0e5007SSukumar Swaminathan struct oce_eq_ctx { 9024d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 9034d0e5007SSukumar Swaminathan /* dw0 */ 9044d0e5007SSukumar Swaminathan uint32_t size:1; 9054d0e5007SSukumar Swaminathan uint32_t rsvd1:1; 9064d0e5007SSukumar Swaminathan uint32_t valid:1; 9074d0e5007SSukumar Swaminathan uint32_t epidx:13; 9084d0e5007SSukumar Swaminathan uint32_t rsvd0:3; 9094d0e5007SSukumar Swaminathan uint32_t cidx:13; 9104d0e5007SSukumar Swaminathan 9114d0e5007SSukumar Swaminathan /* dw1 */ 9124d0e5007SSukumar Swaminathan uint32_t armed:1; 9134d0e5007SSukumar Swaminathan uint32_t stalled:1; 9144d0e5007SSukumar Swaminathan uint32_t sol_event:1; 9154d0e5007SSukumar Swaminathan uint32_t count:3; 9164d0e5007SSukumar Swaminathan uint32_t pd:10; 9174d0e5007SSukumar Swaminathan uint32_t rsvd2:3; 9184d0e5007SSukumar Swaminathan uint32_t pidx:13; 9194d0e5007SSukumar Swaminathan 9204d0e5007SSukumar Swaminathan /* dw2 */ 9214d0e5007SSukumar Swaminathan uint32_t rsvd6:4; 9224d0e5007SSukumar Swaminathan uint32_t nodelay:1; 9234d0e5007SSukumar Swaminathan uint32_t phase:2; 9244d0e5007SSukumar Swaminathan uint32_t rsvd5:2; 9254d0e5007SSukumar Swaminathan uint32_t delay_mult:10; 9264d0e5007SSukumar Swaminathan uint32_t rsvd4:1; 9274d0e5007SSukumar Swaminathan uint32_t function:8; 9284d0e5007SSukumar Swaminathan uint32_t rsvd3:4; 9294d0e5007SSukumar Swaminathan 9304d0e5007SSukumar Swaminathan /* dw 3 */ 9314d0e5007SSukumar Swaminathan uint32_t rsvd7; 9324d0e5007SSukumar Swaminathan #else 9334d0e5007SSukumar Swaminathan /* dw0 */ 9344d0e5007SSukumar Swaminathan uint32_t cidx:13; 9354d0e5007SSukumar Swaminathan uint32_t rsvd0:3; 9364d0e5007SSukumar Swaminathan uint32_t epidx:13; 9374d0e5007SSukumar Swaminathan uint32_t valid:1; 9384d0e5007SSukumar Swaminathan uint32_t rsvd1:1; 9394d0e5007SSukumar Swaminathan uint32_t size:1; 9404d0e5007SSukumar Swaminathan 9414d0e5007SSukumar Swaminathan /* dw1 */ 9424d0e5007SSukumar Swaminathan uint32_t pidx:13; 9434d0e5007SSukumar Swaminathan uint32_t rsvd2:3; 9444d0e5007SSukumar Swaminathan uint32_t pd:10; 9454d0e5007SSukumar Swaminathan uint32_t count:3; 9464d0e5007SSukumar Swaminathan uint32_t sol_event:1; 9474d0e5007SSukumar Swaminathan uint32_t stalled:1; 9484d0e5007SSukumar Swaminathan uint32_t armed:1; 9494d0e5007SSukumar Swaminathan 9504d0e5007SSukumar Swaminathan /* dw2 */ 9514d0e5007SSukumar Swaminathan uint32_t rsvd3:4; 9524d0e5007SSukumar Swaminathan uint32_t function:8; 9534d0e5007SSukumar Swaminathan uint32_t rsvd4:1; 9544d0e5007SSukumar Swaminathan uint32_t delay_mult:10; 9554d0e5007SSukumar Swaminathan uint32_t rsvd5:2; 9564d0e5007SSukumar Swaminathan uint32_t phase:2; 9574d0e5007SSukumar Swaminathan uint32_t nodelay:1; 9584d0e5007SSukumar Swaminathan uint32_t rsvd6:4; 9594d0e5007SSukumar Swaminathan 9604d0e5007SSukumar Swaminathan /* dw3 */ 9614d0e5007SSukumar Swaminathan uint32_t rsvd7; 9624d0e5007SSukumar Swaminathan #endif 9634d0e5007SSukumar Swaminathan }; 9644d0e5007SSukumar Swaminathan 9654d0e5007SSukumar Swaminathan /* [13] OPCODE_CREATE_COMMON_EQ */ 9664d0e5007SSukumar Swaminathan struct mbx_create_common_eq { 9674d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 9684d0e5007SSukumar Swaminathan union { 9694d0e5007SSukumar Swaminathan struct { 9704d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 9714d0e5007SSukumar Swaminathan uint16_t rsvd0; 9724d0e5007SSukumar Swaminathan uint16_t num_pages; 9734d0e5007SSukumar Swaminathan #else 9744d0e5007SSukumar Swaminathan uint16_t num_pages; 9754d0e5007SSukumar Swaminathan uint16_t rsvd0; 9764d0e5007SSukumar Swaminathan #endif 9774d0e5007SSukumar Swaminathan struct oce_eq_ctx eq_ctx; 9784d0e5007SSukumar Swaminathan struct phys_addr pages[8]; 9794d0e5007SSukumar Swaminathan }req; 9804d0e5007SSukumar Swaminathan 9814d0e5007SSukumar Swaminathan struct { 9824d0e5007SSukumar Swaminathan uint16_t eq_id; 9834d0e5007SSukumar Swaminathan uint16_t rsvd0; 9844d0e5007SSukumar Swaminathan }rsp; 9854d0e5007SSukumar Swaminathan }params; 9864d0e5007SSukumar Swaminathan }; 9874d0e5007SSukumar Swaminathan 9884d0e5007SSukumar Swaminathan /* [55] OPCODE_DESTROY_COMMON_EQ */ 9894d0e5007SSukumar Swaminathan struct mbx_destroy_common_eq { 9904d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 9914d0e5007SSukumar Swaminathan union { 9924d0e5007SSukumar Swaminathan struct { 9934d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 9944d0e5007SSukumar Swaminathan uint16_t rsvd0; 9954d0e5007SSukumar Swaminathan uint16_t id; 9964d0e5007SSukumar Swaminathan #else 9974d0e5007SSukumar Swaminathan uint16_t id; 9984d0e5007SSukumar Swaminathan uint16_t rsvd0; 9994d0e5007SSukumar Swaminathan #endif 10004d0e5007SSukumar Swaminathan }req; 10014d0e5007SSukumar Swaminathan 10024d0e5007SSukumar Swaminathan struct { 10034d0e5007SSukumar Swaminathan uint32_t rsvd0; 10044d0e5007SSukumar Swaminathan }rsp; 10054d0e5007SSukumar Swaminathan }params; 10064d0e5007SSukumar Swaminathan }; 10074d0e5007SSukumar Swaminathan 10084d0e5007SSukumar Swaminathan struct oce_cq_ctx { 10094d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 10104d0e5007SSukumar Swaminathan /* dw0 */ 10114d0e5007SSukumar Swaminathan uint32_t eventable:1; 10124d0e5007SSukumar Swaminathan uint32_t sol_event:1; 10134d0e5007SSukumar Swaminathan uint32_t valid:1; 10144d0e5007SSukumar Swaminathan uint32_t count:2; 10154d0e5007SSukumar Swaminathan uint32_t rsvd1:1; 10164d0e5007SSukumar Swaminathan uint32_t epidx:11; 10174d0e5007SSukumar Swaminathan uint32_t nodelay:1; 10184d0e5007SSukumar Swaminathan uint32_t coalesce_wm:2; 10194d0e5007SSukumar Swaminathan uint32_t rsvd0:1; 10204d0e5007SSukumar Swaminathan uint32_t cidx:11; 10214d0e5007SSukumar Swaminathan 10224d0e5007SSukumar Swaminathan /* dw1 */ 10234d0e5007SSukumar Swaminathan uint32_t armed:1; 10244d0e5007SSukumar Swaminathan uint32_t stalled:1; 10254d0e5007SSukumar Swaminathan uint32_t eq_id:8; 10264d0e5007SSukumar Swaminathan uint32_t pd:10; 10274d0e5007SSukumar Swaminathan uint32_t rsvd2:1; 10284d0e5007SSukumar Swaminathan uint32_t pidx:11; 10294d0e5007SSukumar Swaminathan 10304d0e5007SSukumar Swaminathan /* dw2 */ 10314d0e5007SSukumar Swaminathan uint32_t rsvd4:20; 10324d0e5007SSukumar Swaminathan uint32_t function:8; 10334d0e5007SSukumar Swaminathan uint32_t rsvd3:4; 10344d0e5007SSukumar Swaminathan #else 10354d0e5007SSukumar Swaminathan /* dw0 */ 10364d0e5007SSukumar Swaminathan uint32_t cidx:11; 10374d0e5007SSukumar Swaminathan uint32_t rsvd0:1; 10384d0e5007SSukumar Swaminathan uint32_t coalesce_wm:2; 10394d0e5007SSukumar Swaminathan uint32_t nodelay:1; 10404d0e5007SSukumar Swaminathan uint32_t epidx:11; 10414d0e5007SSukumar Swaminathan uint32_t rsvd1:1; 10424d0e5007SSukumar Swaminathan uint32_t count:2; 10434d0e5007SSukumar Swaminathan uint32_t valid:1; 10444d0e5007SSukumar Swaminathan uint32_t sol_event:1; 10454d0e5007SSukumar Swaminathan uint32_t eventable:1; 10464d0e5007SSukumar Swaminathan 10474d0e5007SSukumar Swaminathan /* dw1 */ 10484d0e5007SSukumar Swaminathan uint32_t pidx:11; 10494d0e5007SSukumar Swaminathan uint32_t rsvd2:1; 10504d0e5007SSukumar Swaminathan uint32_t pd:10; 10514d0e5007SSukumar Swaminathan uint32_t eq_id:8; 10524d0e5007SSukumar Swaminathan uint32_t stalled:1; 10534d0e5007SSukumar Swaminathan uint32_t armed:1; 10544d0e5007SSukumar Swaminathan 10554d0e5007SSukumar Swaminathan /* dw2 */ 10564d0e5007SSukumar Swaminathan uint32_t rsvd3:4; 10574d0e5007SSukumar Swaminathan uint32_t function:8; 10584d0e5007SSukumar Swaminathan uint32_t rsvd4:20; 10594d0e5007SSukumar Swaminathan #endif 10604d0e5007SSukumar Swaminathan uint32_t rsvd5; 10614d0e5007SSukumar Swaminathan }; 10624d0e5007SSukumar Swaminathan 10634d0e5007SSukumar Swaminathan /* [12] OPCODE_CREATE_COMMON_CQ */ 10644d0e5007SSukumar Swaminathan struct mbx_create_common_cq { 10654d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 10664d0e5007SSukumar Swaminathan union { 10674d0e5007SSukumar Swaminathan struct { 10684d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 10694d0e5007SSukumar Swaminathan uint16_t rsvd0; 10704d0e5007SSukumar Swaminathan uint16_t num_pages; 10714d0e5007SSukumar Swaminathan #else 10724d0e5007SSukumar Swaminathan uint16_t num_pages; 10734d0e5007SSukumar Swaminathan uint16_t rsvd0; 10744d0e5007SSukumar Swaminathan #endif 10754d0e5007SSukumar Swaminathan struct oce_cq_ctx cq_ctx; 1076*8d738d7dSSukumar Swaminathan struct phys_addr pages[4]; 10774d0e5007SSukumar Swaminathan }req; 10784d0e5007SSukumar Swaminathan 10794d0e5007SSukumar Swaminathan struct { 10804d0e5007SSukumar Swaminathan uint16_t cq_id; 10814d0e5007SSukumar Swaminathan uint16_t rsvd0; 10824d0e5007SSukumar Swaminathan }rsp; 10834d0e5007SSukumar Swaminathan }params; 10844d0e5007SSukumar Swaminathan }; 10854d0e5007SSukumar Swaminathan 10864d0e5007SSukumar Swaminathan /* [54] OPCODE_DESTROY_COMMON_CQ */ 10874d0e5007SSukumar Swaminathan struct mbx_destroy_common_cq { 10884d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 10894d0e5007SSukumar Swaminathan union { 10904d0e5007SSukumar Swaminathan struct { 10914d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 10924d0e5007SSukumar Swaminathan uint16_t rsvd0; 10934d0e5007SSukumar Swaminathan uint16_t id; 10944d0e5007SSukumar Swaminathan #else 10954d0e5007SSukumar Swaminathan uint16_t id; 10964d0e5007SSukumar Swaminathan uint16_t rsvd0; 10974d0e5007SSukumar Swaminathan #endif 10984d0e5007SSukumar Swaminathan }req; 10994d0e5007SSukumar Swaminathan 11004d0e5007SSukumar Swaminathan struct { 11014d0e5007SSukumar Swaminathan uint32_t rsvd0; 11024d0e5007SSukumar Swaminathan }rsp; 11034d0e5007SSukumar Swaminathan }params; 11044d0e5007SSukumar Swaminathan }; 11054d0e5007SSukumar Swaminathan 11064d0e5007SSukumar Swaminathan struct mq_ring_ctx { 11074d0e5007SSukumar Swaminathan union { 11084d0e5007SSukumar Swaminathan struct { 11094d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 11104d0e5007SSukumar Swaminathan /* dw 0 */ 11114d0e5007SSukumar Swaminathan uint32_t cq_id:10; 11124d0e5007SSukumar Swaminathan uint32_t fetch_r2t:1; 11134d0e5007SSukumar Swaminathan uint32_t fetch_wrb:1; 11144d0e5007SSukumar Swaminathan uint32_t ring_size:4; 11154d0e5007SSukumar Swaminathan uint32_t rsvd0:2; 11164d0e5007SSukumar Swaminathan uint32_t con_index:14; 11174d0e5007SSukumar Swaminathan 11184d0e5007SSukumar Swaminathan /* dw1 */ 11194d0e5007SSukumar Swaminathan uint32_t valid:1; 11204d0e5007SSukumar Swaminathan uint32_t pdid:9; 11214d0e5007SSukumar Swaminathan uint32_t fid:8; 11224d0e5007SSukumar Swaminathan uint32_t prod_index:14; 11234d0e5007SSukumar Swaminathan 11244d0e5007SSukumar Swaminathan /* dw 2 */ 11254d0e5007SSukumar Swaminathan uint32_t rsvd1:21; 11264d0e5007SSukumar Swaminathan uint32_t async_cq_id:10; 11274d0e5007SSukumar Swaminathan uint32_t async_cq_valid:1; 11284d0e5007SSukumar Swaminathan #else 11294d0e5007SSukumar Swaminathan /* dw 0 */ 11304d0e5007SSukumar Swaminathan uint32_t con_index:14; 11314d0e5007SSukumar Swaminathan uint32_t rsvd0:2; 11324d0e5007SSukumar Swaminathan uint32_t ring_size:4; 11334d0e5007SSukumar Swaminathan uint32_t fetch_wrb:1; 11344d0e5007SSukumar Swaminathan uint32_t fetch_r2t:1; 11354d0e5007SSukumar Swaminathan uint32_t cq_id:10; 11364d0e5007SSukumar Swaminathan 11374d0e5007SSukumar Swaminathan /* dw1 */ 11384d0e5007SSukumar Swaminathan uint32_t prod_index:14; 11394d0e5007SSukumar Swaminathan uint32_t fid:8; 11404d0e5007SSukumar Swaminathan uint32_t pdid:9; 11414d0e5007SSukumar Swaminathan uint32_t valid:1; 11424d0e5007SSukumar Swaminathan 11434d0e5007SSukumar Swaminathan /* dw 2 */ 11444d0e5007SSukumar Swaminathan uint32_t async_cq_valid:1; 11454d0e5007SSukumar Swaminathan uint32_t async_cq_id:10; 11464d0e5007SSukumar Swaminathan uint32_t rsvd1:21; 11474d0e5007SSukumar Swaminathan #endif 11484d0e5007SSukumar Swaminathan /* dw3 */ 11494d0e5007SSukumar Swaminathan uint32_t rsvd3; 11504d0e5007SSukumar Swaminathan }s; 11514d0e5007SSukumar Swaminathan uint32_t dw[4]; 11524d0e5007SSukumar Swaminathan }u0; 11534d0e5007SSukumar Swaminathan }; 11544d0e5007SSukumar Swaminathan 11554d0e5007SSukumar Swaminathan /* [21] OPCODE_CREATE_COMMON_MQ */ 11564d0e5007SSukumar Swaminathan struct mbx_create_common_mq { 11574d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 11584d0e5007SSukumar Swaminathan union { 11594d0e5007SSukumar Swaminathan struct { 11604d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 11614d0e5007SSukumar Swaminathan uint16_t rsvd0; 11624d0e5007SSukumar Swaminathan uint16_t num_pages; 11634d0e5007SSukumar Swaminathan #else 11644d0e5007SSukumar Swaminathan uint16_t num_pages; 11654d0e5007SSukumar Swaminathan uint16_t rsvd0; 11664d0e5007SSukumar Swaminathan #endif 11674d0e5007SSukumar Swaminathan struct mq_ring_ctx context; 11684d0e5007SSukumar Swaminathan struct phys_addr pages[8]; 11694d0e5007SSukumar Swaminathan }req; 11704d0e5007SSukumar Swaminathan 11714d0e5007SSukumar Swaminathan struct { 11724d0e5007SSukumar Swaminathan uint32_t mq_id:16; 11734d0e5007SSukumar Swaminathan uint32_t rsvd0:16; 11744d0e5007SSukumar Swaminathan }rsp; 11754d0e5007SSukumar Swaminathan }params; 11764d0e5007SSukumar Swaminathan }; 11774d0e5007SSukumar Swaminathan 11784d0e5007SSukumar Swaminathan /* [53] OPCODE_DESTROY_COMMON_MQ */ 11794d0e5007SSukumar Swaminathan struct mbx_destroy_common_mq { 11804d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 11814d0e5007SSukumar Swaminathan union { 11824d0e5007SSukumar Swaminathan struct { 11834d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 11844d0e5007SSukumar Swaminathan uint16_t rsvd0; 11854d0e5007SSukumar Swaminathan uint16_t id; 11864d0e5007SSukumar Swaminathan #else 11874d0e5007SSukumar Swaminathan uint16_t id; 11884d0e5007SSukumar Swaminathan uint16_t rsvd0; 11894d0e5007SSukumar Swaminathan #endif 11904d0e5007SSukumar Swaminathan }req; 11914d0e5007SSukumar Swaminathan 11924d0e5007SSukumar Swaminathan struct { 11934d0e5007SSukumar Swaminathan uint32_t rsvd0; 11944d0e5007SSukumar Swaminathan }rsp; 11954d0e5007SSukumar Swaminathan }params; 11964d0e5007SSukumar Swaminathan }; 11974d0e5007SSukumar Swaminathan 11984d0e5007SSukumar Swaminathan /* [35] OPCODE_GET_COMMON_ FW_VERSION */ 11994d0e5007SSukumar Swaminathan struct mbx_get_common_fw_version { 12004d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 12014d0e5007SSukumar Swaminathan union { 12024d0e5007SSukumar Swaminathan struct { 12034d0e5007SSukumar Swaminathan uint32_t rsvd0; 12044d0e5007SSukumar Swaminathan }req; 12054d0e5007SSukumar Swaminathan 12064d0e5007SSukumar Swaminathan struct { 12074d0e5007SSukumar Swaminathan uint8_t fw_ver_str[32]; 12084d0e5007SSukumar Swaminathan uint8_t fw_on_flash_ver_str[32]; 12094d0e5007SSukumar Swaminathan }rsp; 12104d0e5007SSukumar Swaminathan }params; 12114d0e5007SSukumar Swaminathan }; 12124d0e5007SSukumar Swaminathan 12134d0e5007SSukumar Swaminathan /* [52] OPCODE_COMMON_CEV_MODIFY_MSI_MESSAGES */ 12144d0e5007SSukumar Swaminathan struct mbx_common_cev_modify_msi_messages { 12154d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 12164d0e5007SSukumar Swaminathan union { 12174d0e5007SSukumar Swaminathan struct { 12184d0e5007SSukumar Swaminathan uint32_t num_msi_msgs; 12194d0e5007SSukumar Swaminathan }req; 12204d0e5007SSukumar Swaminathan 12214d0e5007SSukumar Swaminathan struct { 12224d0e5007SSukumar Swaminathan uint32_t rsvd0; 12234d0e5007SSukumar Swaminathan }rsp; 12244d0e5007SSukumar Swaminathan }params; 12254d0e5007SSukumar Swaminathan }; 12264d0e5007SSukumar Swaminathan 12274d0e5007SSukumar Swaminathan /* [36] OPCODE_SET_COMMON_FLOW_CONTROL */ 12284d0e5007SSukumar Swaminathan /* [37] OPCODE_GET_COMMON_FLOW_CONTROL */ 12294d0e5007SSukumar Swaminathan struct mbx_common_get_set_flow_control { 12304d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 12314d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 12324d0e5007SSukumar Swaminathan uint16_t tx_flow_control; 12334d0e5007SSukumar Swaminathan uint16_t rx_flow_control; 12344d0e5007SSukumar Swaminathan #else 12354d0e5007SSukumar Swaminathan uint16_t rx_flow_control; 12364d0e5007SSukumar Swaminathan uint16_t tx_flow_control; 12374d0e5007SSukumar Swaminathan #endif 12384d0e5007SSukumar Swaminathan }; 12394d0e5007SSukumar Swaminathan 12404d0e5007SSukumar Swaminathan enum e_flash_opcode { 12414d0e5007SSukumar Swaminathan MGMT_FLASHROM_OPCODE_FLASH = 1, 12424d0e5007SSukumar Swaminathan MGMT_FLASHROM_OPCODE_SAVE = 2 12434d0e5007SSukumar Swaminathan }; 12444d0e5007SSukumar Swaminathan 12454d0e5007SSukumar Swaminathan /* [06] OPCODE_READ_COMMON_FLASHROM */ 12464d0e5007SSukumar Swaminathan /* [07] OPCODE_WRITE_COMMON_FLASHROM */ 12474d0e5007SSukumar Swaminathan 12484d0e5007SSukumar Swaminathan struct mbx_common_read_write_flashrom { 12494d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 12504d0e5007SSukumar Swaminathan uint32_t flash_op_code; 12514d0e5007SSukumar Swaminathan uint32_t flash_op_type; 12524d0e5007SSukumar Swaminathan uint32_t data_buffer_size; 12534d0e5007SSukumar Swaminathan uint32_t data_offset; 12544d0e5007SSukumar Swaminathan uint8_t data_buffer[4]; /* + IMAGE_TRANSFER_SIZE */ 12554d0e5007SSukumar Swaminathan }; 12564d0e5007SSukumar Swaminathan 12574d0e5007SSukumar Swaminathan struct mbx_common_query_fw_config { 12584d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 12594d0e5007SSukumar Swaminathan union { 12604d0e5007SSukumar Swaminathan struct { 12614d0e5007SSukumar Swaminathan uint32_t rsvd0[30]; 12624d0e5007SSukumar Swaminathan }req; 12634d0e5007SSukumar Swaminathan 12644d0e5007SSukumar Swaminathan struct { 12654d0e5007SSukumar Swaminathan uint32_t config_number; 12664d0e5007SSukumar Swaminathan uint32_t asic_revision; 12674d0e5007SSukumar Swaminathan uint32_t port_id; /* used for stats retrieval */ 12684d0e5007SSukumar Swaminathan uint32_t function_mode; 12694d0e5007SSukumar Swaminathan uint32_t ulp0_mode; 12704d0e5007SSukumar Swaminathan uint32_t ulp0_nic_wqid_base; 12714d0e5007SSukumar Swaminathan uint32_t ulp0_nic_wq_tot; 12724d0e5007SSukumar Swaminathan uint32_t ulp0_toe_wqid_base; 12734d0e5007SSukumar Swaminathan uint32_t ulp0_toe_wq_tot; 12744d0e5007SSukumar Swaminathan uint32_t ulp0_toe_rqid_base; 12754d0e5007SSukumar Swaminathan uint32_t ulp0_toe_rqid_tot; 12764d0e5007SSukumar Swaminathan uint32_t ulp0_toe_defrqid_base; 12774d0e5007SSukumar Swaminathan uint32_t ulp0_toe_defrq_tot; 12784d0e5007SSukumar Swaminathan uint32_t ulp0_lro_rqid_base; 12794d0e5007SSukumar Swaminathan uint32_t ulp0_lro_rqid_tot; 12804d0e5007SSukumar Swaminathan uint32_t ulp0_iscsi_icd_base; 12814d0e5007SSukumar Swaminathan uint32_t ulp0_iscsi_icd_tot; 12824d0e5007SSukumar Swaminathan uint32_t ulp1_mode; 12834d0e5007SSukumar Swaminathan uint32_t ulp1_nic_wqid_base; 12844d0e5007SSukumar Swaminathan uint32_t ulp1_wq_tot; 12854d0e5007SSukumar Swaminathan uint32_t ulp1_toe_wqid_base; 12864d0e5007SSukumar Swaminathan uint32_t ulp1_toe_wq_tot; 12874d0e5007SSukumar Swaminathan uint32_t ulp1_toe_rqid_base; 12884d0e5007SSukumar Swaminathan uint32_t ulp1_toe_rqid_tot; 12894d0e5007SSukumar Swaminathan uint32_t ulp1_toe_defrqid_base; 12904d0e5007SSukumar Swaminathan uint32_t ulp1_toe_defrq_tot; 12914d0e5007SSukumar Swaminathan uint32_t ulp1_lro_rqid_base; 12924d0e5007SSukumar Swaminathan uint32_t ulp1_lro_rqid_tot; 12934d0e5007SSukumar Swaminathan uint32_t ulp1_iscsi_icd_base; 12944d0e5007SSukumar Swaminathan uint32_t ulp1_iscsi_icd_tot; 12954d0e5007SSukumar Swaminathan }rsp; 12964d0e5007SSukumar Swaminathan }params; 12974d0e5007SSukumar Swaminathan }; 12984d0e5007SSukumar Swaminathan 12994d0e5007SSukumar Swaminathan struct mbx_common_config_vlan { 13004d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13014d0e5007SSukumar Swaminathan union { 13024d0e5007SSukumar Swaminathan struct { 13034d0e5007SSukumar Swaminathan #ifdef _BIG_ENDIAN 13044d0e5007SSukumar Swaminathan uint8_t num_vlans; 13054d0e5007SSukumar Swaminathan uint8_t untagged; 13064d0e5007SSukumar Swaminathan uint8_t promisc; 13074d0e5007SSukumar Swaminathan uint8_t if_id; 13084d0e5007SSukumar Swaminathan #else 13094d0e5007SSukumar Swaminathan uint8_t if_id; 13104d0e5007SSukumar Swaminathan uint8_t promisc; 13114d0e5007SSukumar Swaminathan uint8_t untagged; 13124d0e5007SSukumar Swaminathan uint8_t num_vlans; 13134d0e5007SSukumar Swaminathan #endif 13144d0e5007SSukumar Swaminathan union { 13154d0e5007SSukumar Swaminathan struct normal_vlan normal_vlans[64]; 13164d0e5007SSukumar Swaminathan struct qinq_vlan qinq_vlans[32]; 13174d0e5007SSukumar Swaminathan }tags; 13184d0e5007SSukumar Swaminathan }req; 13194d0e5007SSukumar Swaminathan 13204d0e5007SSukumar Swaminathan struct { 13214d0e5007SSukumar Swaminathan uint32_t rsvd; 13224d0e5007SSukumar Swaminathan }rsp; 13234d0e5007SSukumar Swaminathan }params; 13244d0e5007SSukumar Swaminathan }; 13254d0e5007SSukumar Swaminathan 13264d0e5007SSukumar Swaminathan /* [34] OPCODE_COMMON_NTWK_RX_FILTER */ 13274d0e5007SSukumar Swaminathan struct mbx_set_common_ntwk_rx_filter { 13284d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13294d0e5007SSukumar Swaminathan uint32_t global_flags_mask; 13304d0e5007SSukumar Swaminathan uint32_t global_flags; 13314d0e5007SSukumar Swaminathan uint32_t iface_flags_mask; 13324d0e5007SSukumar Swaminathan uint32_t iface_flags; 13334d0e5007SSukumar Swaminathan uint32_t if_id; 13344d0e5007SSukumar Swaminathan uint32_t num_mcast; 13354d0e5007SSukumar Swaminathan struct { 13364d0e5007SSukumar Swaminathan uint8_t byte[6]; 13374d0e5007SSukumar Swaminathan }mac[32]; 13384d0e5007SSukumar Swaminathan }; 13394d0e5007SSukumar Swaminathan /* [41] OPCODE_MODIFY_COMMON_EQ_DELAY */ 13404d0e5007SSukumar Swaminathan struct mbx_modify_common_eq_delay { 13414d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13424d0e5007SSukumar Swaminathan union { 13434d0e5007SSukumar Swaminathan struct { 13444d0e5007SSukumar Swaminathan uint32_t num_eq; 13454d0e5007SSukumar Swaminathan struct { 13464d0e5007SSukumar Swaminathan uint32_t eq_id; 13474d0e5007SSukumar Swaminathan uint32_t phase; 13484d0e5007SSukumar Swaminathan uint32_t dm; 13494d0e5007SSukumar Swaminathan }delay[8]; 13504d0e5007SSukumar Swaminathan }req; 13514d0e5007SSukumar Swaminathan 13524d0e5007SSukumar Swaminathan struct { 13534d0e5007SSukumar Swaminathan uint32_t rsvd0; 13544d0e5007SSukumar Swaminathan }rsp; 13554d0e5007SSukumar Swaminathan }params; 13564d0e5007SSukumar Swaminathan }; 13574d0e5007SSukumar Swaminathan /* [59] OPCODE_ADD_COMMON_IFACE_MAC */ 13584d0e5007SSukumar Swaminathan struct mbx_add_common_iface_mac { 13594d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13604d0e5007SSukumar Swaminathan union { 13614d0e5007SSukumar Swaminathan struct { 13624d0e5007SSukumar Swaminathan uint32_t if_id; 13634d0e5007SSukumar Swaminathan uint8_t mac_address[6]; 13644d0e5007SSukumar Swaminathan uint8_t rsvd0[2]; 13654d0e5007SSukumar Swaminathan }req; 13664d0e5007SSukumar Swaminathan struct { 13674d0e5007SSukumar Swaminathan uint32_t pmac_id; 13684d0e5007SSukumar Swaminathan }rsp; 13694d0e5007SSukumar Swaminathan } params; 13704d0e5007SSukumar Swaminathan }; 13714d0e5007SSukumar Swaminathan 13724d0e5007SSukumar Swaminathan /* [60] OPCODE_DEL_COMMON_IFACE_MAC */ 13734d0e5007SSukumar Swaminathan struct mbx_del_common_iface_mac { 13744d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13754d0e5007SSukumar Swaminathan union { 13764d0e5007SSukumar Swaminathan struct { 13774d0e5007SSukumar Swaminathan uint32_t if_id; 13784d0e5007SSukumar Swaminathan uint32_t pmac_id; 13794d0e5007SSukumar Swaminathan }req; 13804d0e5007SSukumar Swaminathan struct { 13814d0e5007SSukumar Swaminathan uint32_t rsvd0; 13824d0e5007SSukumar Swaminathan }rsp; 13834d0e5007SSukumar Swaminathan } params; 13844d0e5007SSukumar Swaminathan }; 13854d0e5007SSukumar Swaminathan 13864d0e5007SSukumar Swaminathan /* [8] OPCODE_QUERY_COMMON_MAX_MBX_BUFFER_SIZE */ 13874d0e5007SSukumar Swaminathan struct mbx_query_common_max_mbx_buffer_size { 13884d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13894d0e5007SSukumar Swaminathan struct { 13904d0e5007SSukumar Swaminathan uint32_t max_ioctl_bufsz; 13914d0e5007SSukumar Swaminathan } rsp; 13924d0e5007SSukumar Swaminathan }; 13934d0e5007SSukumar Swaminathan 13944d0e5007SSukumar Swaminathan /* [61] OPCODE_COMMON_FUNCTION_RESET */ 13954d0e5007SSukumar Swaminathan struct ioctl_common_function_reset { 13964d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 13974d0e5007SSukumar Swaminathan }; 13984d0e5007SSukumar Swaminathan 13994d0e5007SSukumar Swaminathan /* [80] OPCODE_COMMON_FUNCTION_LINK_CONFIG */ 14004d0e5007SSukumar Swaminathan struct mbx_common_func_link_cfg { 14014d0e5007SSukumar Swaminathan struct mbx_hdr hdr; 14024d0e5007SSukumar Swaminathan union { 14034d0e5007SSukumar Swaminathan struct { 14044d0e5007SSukumar Swaminathan uint32_t enable; 14054d0e5007SSukumar Swaminathan }req; 14064d0e5007SSukumar Swaminathan struct { 14074d0e5007SSukumar Swaminathan uint32_t rsvd0; 14084d0e5007SSukumar Swaminathan }rsp; 14094d0e5007SSukumar Swaminathan } params; 14104d0e5007SSukumar Swaminathan }; 14114d0e5007SSukumar Swaminathan 14124d0e5007SSukumar Swaminathan #pragma pack() 14134d0e5007SSukumar Swaminathan 14144d0e5007SSukumar Swaminathan #ifdef __cplusplus 14154d0e5007SSukumar Swaminathan } 14164d0e5007SSukumar Swaminathan #endif 14174d0e5007SSukumar Swaminathan 14184d0e5007SSukumar Swaminathan #endif /* _OCE_HW_H_ */ 1419