Print this page
NEX-1890 update oce from source provided by Emulex

*** 17,28 **** * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ ! /* Copyright © 2003-2011 Emulex. All rights reserved. */ /* * Header file containing the command structures for Hardware */ #ifndef _OCE_HW_H_ --- 17,33 ---- * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ ! /* ! * Copyright (c) 2009-2012 Emulex. All rights reserved. ! * Use is subject to license terms. ! */ + + /* * Header file containing the command structures for Hardware */ #ifndef _OCE_HW_H_
*** 31,54 **** #ifdef __cplusplus extern "C" { #endif #include <sys/types.h> #pragma pack(1) #define OC_CNA_GEN2 0x2 #define OC_CNA_GEN3 0x3 #define DEVID_TIGERSHARK 0x700 #define DEVID_TOMCAT 0x710 /* PCI CSR offsets */ #define PCICFG_F1_CSR 0x0 /* F1 for NIC */ #define PCICFG_SEMAPHORE 0xbc #define PCICFG_SOFT_RESET 0x5c ! #define PCICFG_UE_STATUS_HI_MASK 0xac ! #define PCICFG_UE_STATUS_LO_MASK 0xa8 #define PCICFG_ONLINE0 0xb0 #define PCICFG_ONLINE1 0xb4 #define INTR_EN 0x20000000 #define IMAGE_TRANSFER_SIZE (32 * 1024) /* 32K at a time */ --- 36,78 ---- #ifdef __cplusplus extern "C" { #endif #include <sys/types.h> + #include "oce_sli4.h" #pragma pack(1) #define OC_CNA_GEN2 0x2 #define OC_CNA_GEN3 0x3 + enum { + ASIC_REV_A0 = 0x0, + ASIC_REV_A1 = 0x1, + ASIC_REV_A2 = 0x2 + }; + #define BE3_ASIC_REV_A0 ((OC_CNA_GEN3<<8)| ASIC_REV_A0) + #define BE3_ASIC_REV_A1 ((OC_CNA_GEN3<<8)| ASIC_REV_A1) + #define BE3_ASIC_REV_A2 ((OC_CNA_GEN3<<8)| ASIC_REV_A2) + + #define BE3_A1(dev) (dev->asic_revision == BE3_ASIC_REV_A0 ||\ + dev->asic_revision == BE3_ASIC_REV_A1) + #define DEVID_TIGERSHARK 0x700 #define DEVID_TOMCAT 0x710 + #define DEVID_LANCER 0xe220 + #define LANCER_CHIP(device) (device->device_id == DEVID_LANCER) + + /* PCI CSR offsets */ #define PCICFG_F1_CSR 0x0 /* F1 for NIC */ #define PCICFG_SEMAPHORE 0xbc #define PCICFG_SOFT_RESET 0x5c ! #define PCICFG_UE_STATUS_LO 0xA0 /* UE status low offset */ ! #define PCICFG_UE_STATUS_HI 0xA4 /* UE status high offset */ ! #define PCICFG_UE_STATUS_LO_MASK 0xa8 /* Error mask - low */ ! #define PCICFG_UE_STATUS_HI_MASK 0xac /* Error mask - high */ #define PCICFG_ONLINE0 0xb0 #define PCICFG_ONLINE1 0xb4 #define INTR_EN 0x20000000 #define IMAGE_TRANSFER_SIZE (32 * 1024) /* 32K at a time */
*** 58,67 **** --- 82,105 ---- #define PCICFG_INTR_CTRL 0xfc #define HOSTINTR_MASK (1 << 29) #define HOSTINTR_PFUNC_SHIFT 26 #define HOSTINTR_PFUNC_MASK 7 + /* Link Status CSR */ + #define PCICFG_PCIE_LINK_STATUS_OFFSET 0xd0 + #define PCIE_LINK_STATUS_SPEED_MASK 0xFF + #define PCIE_LINK_STATUS_SPEED_SHIFT 16 + #define PCIE_LINK_STATUS_NEG_WIDTH_MASK 0x3F + #define PCIE_LINK_STATUS_NEG_WIDTH_SHIFT 20 + + /* Link Capability CSR */ + #define PCICFG_PCIE_LINK_CAP_OFFSET 0xcc + #define PCIE_LINK_CAP_MAX_SPEED_MASK 0xFF + #define PCIE_LINK_CAP_MAX_SPEED_SHIFT 0 + #define PCIE_LINK_CAP_MAX_WIDTH_MASK 0x3F + #define PCIE_LINK_CAP_MAX_WIDTH_SHIFT 4 + /* POST status reg struct */ #define POST_STAGE_POWER_ON_RESET 0x00 #define POST_STAGE_AWAITING_HOST_RDY 0x01 #define POST_STAGE_HOST_RDY 0x02 #define POST_STAGE_CHIP_RESET 0x03
*** 123,148 **** #define MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS 0x80 #define MBX_RX_IFACE_FLAGS_VLAN 0x100 #define MBX_RX_IFACE_FLAGS_MCAST_PROMISCUOUS 0x200 #define MBX_RX_IFACE_FLAGS_PASS_L2 0x400 #define MBX_RX_IFACE_FLAGS_PASS_L3L4 0x800 #define MQ_RING_CONTEXT_SIZE_16 0x5 /* (16 entries) */ #define MQ_RING_CONTEXT_SIZE_32 0x6 /* (32 entries) */ #define MQ_RING_CONTEXT_SIZE_64 0x7 /* (64 entries) */ #define MQ_RING_CONTEXT_SIZE_128 0x8 /* (128 entries) */ #define MBX_DB_READY_BIT 0x1 #define MBX_DB_HI_BIT 0x2 ! #define ASYNC_EVENT_CODE_LINK_STATE 0x1 ! #define ASYNC_EVENT_LINK_UP 0x1 ! #define ASYNC_EVENT_LINK_DOWN 0x0 ! /* port link_status */ ! #define ASYNC_EVENT_LOGICAL 0x02 /* Logical Link Status */ #define NTWK_LOGICAL_LINK_DOWN 0 #define NTWK_LOGICAL_LINK_UP 1 /* Rx filter bits */ --- 161,210 ---- #define MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS 0x80 #define MBX_RX_IFACE_FLAGS_VLAN 0x100 #define MBX_RX_IFACE_FLAGS_MCAST_PROMISCUOUS 0x200 #define MBX_RX_IFACE_FLAGS_PASS_L2 0x400 #define MBX_RX_IFACE_FLAGS_PASS_L3L4 0x800 + #define MBX_RX_IFACE_FLAGS_MCAST 0x1000 #define MQ_RING_CONTEXT_SIZE_16 0x5 /* (16 entries) */ #define MQ_RING_CONTEXT_SIZE_32 0x6 /* (32 entries) */ #define MQ_RING_CONTEXT_SIZE_64 0x7 /* (64 entries) */ #define MQ_RING_CONTEXT_SIZE_128 0x8 /* (128 entries) */ #define MBX_DB_READY_BIT 0x1 #define MBX_DB_HI_BIT 0x2 ! /* Event bit map registered with mq */ ! enum { ! ASYNC_EVENT_CODE_LINK_STATE = 0x1, ! ASYNC_EVENT_CODE_FCOE_FIP = 0x2, ! ASYNC_EVENT_CODE_DCBX = 0x3, ! ASYNC_EVENT_CODE_ISCSI = 0x4, ! ASYNC_EVENT_CODE_GRP_5 = 0x5, ! ASYNC_EVENT_CODE_DEBUG = 0x6 ! }; ! /* Link events */ ! enum { ! ASYNC_EVENT_LINK_DOWN = 0x0, ! ASYNC_EVENT_LINK_UP = 0x1, ! ASYNC_EVENT_LOGICAL = 0x02 ! }; + /* GRP5 Events */ + enum { + ASYNC_EVENT_QOS_SPEED = 0x1, + ASYNC_EVENT_COS_PRIORITY = 0x2, + ASYNC_EVENT_PVID_STATE = 0x3 + }; + + /* Event Mask */ + #define ASYNC_TRAILER_EVENT_CODE_SHIFT 8 + #define ASYNC_TRAILER_EVENT_TYPE_SHIFT 16 + #define ASYNC_TRAILER_EVENT_CODE_MASK 0xFF + #define ASYNC_TRAILER_EVENT_TYPE_MASK 0xFF + /* Logical Link Status */ #define NTWK_LOGICAL_LINK_DOWN 0 #define NTWK_LOGICAL_LINK_UP 1 /* Rx filter bits */
*** 149,161 **** --- 211,248 ---- #define NTWK_RX_FILTER_IP_CKSUM 0x1 #define NTWK_RX_FILTER_TCP_CKSUM 0x2 #define NTWK_RX_FILTER_UDP_CKSUM 0x4 #define NTWK_RX_FILTER_STRIP_CRC 0x8 + /* driver_function_capabilities */ + #define DRVFN_CAPAB_SW_TIMESTAMPS 0x2 + #define DRVFN_CAPAB_BE3_NATIVE 0x4 + + /* Function Capabilities */ + #define BE_FUNCTION_CAPS_UNCLASSIFIED_STATS 0x1 + #define BE_FUNCTION_CAPS_RSS 0x2 + #define BE_FUNCTION_CAPS_PROMISCUOUS 0x4 + #define BE_FUNCTION_CAPS_LEGACY_MODE 0x8 + /* max SGE per mbx */ #define MAX_MBX_SGE 19 + /* max RSS rings */ + #define MAX_RING_PER_GROUP_LEGACY 5 + #define MAX_RING_PER_GROUP_NATIVE 16 + + /* MCCQ LEN */ + #define MCC_Q_LEN 128 + #define MCC_CQ_LEN 256 + + /* RSS PARAMETERS */ + #define MAX_TBL_SIZE 64 + #define MAX_HKEY_SIZE 40 + + /* ULP */ + #define BE_ULP1_NUM 1 + /* physical address structure to be used in MBX */ struct phys_addr { /* dw0 */ uint32_t lo; /* dw1 */
*** 360,376 **** struct { #ifdef _BIG_ENDIAN uint32_t rsvd1:2; uint32_t rearm:1; uint32_t num_popped:13; ! uint32_t rsvd0:5; uint32_t event:1; uint32_t qid:10; #else uint32_t qid:10; uint32_t event:1; ! uint32_t rsvd0:5; uint32_t num_popped:13; uint32_t rearm:1; uint32_t rsvd1:2; #endif }bits; --- 447,463 ---- struct { #ifdef _BIG_ENDIAN uint32_t rsvd1:2; uint32_t rearm:1; uint32_t num_popped:13; ! uint32_t eq_cq_extid:5; uint32_t event:1; uint32_t qid:10; #else uint32_t qid:10; uint32_t event:1; ! uint32_t eq_cq_extid:5; uint32_t num_popped:13; uint32_t rearm:1; uint32_t rsvd1:2; #endif }bits;
*** 382,400 **** struct { #ifdef _BIG_ENDIAN uint32_t rsvd1:2; uint32_t rearm:1; uint32_t num_popped:13; ! uint32_t rsvd0:5; uint32_t event:1; uint32_t clrint:1; uint32_t qid:9; #else uint32_t qid:9; uint32_t clrint:1; uint32_t event:1; ! uint32_t rsvd0:5; uint32_t num_popped:13; uint32_t rearm:1; uint32_t rsvd1:2; #endif }bits; --- 469,487 ---- struct { #ifdef _BIG_ENDIAN uint32_t rsvd1:2; uint32_t rearm:1; uint32_t num_popped:13; ! uint32_t eq_cq_extid:5; uint32_t event:1; uint32_t clrint:1; uint32_t qid:9; #else uint32_t qid:9; uint32_t clrint:1; uint32_t event:1; ! uint32_t eq_cq_extid:5; uint32_t num_popped:13; uint32_t rearm:1; uint32_t rsvd1:2; #endif }bits;
*** 504,513 **** --- 591,617 ---- uint32_t tag[2]; uint32_t rsvd2[1]; struct oce_mbx_payload payload; }; + #define MQ_CQE_VALID_MASK (1 << 31) + #define MQ_CQE_ASYNC_MASK (1 << 30) + #define MQ_CQE_COMPLETED_MASK (1 << 28) + #define MQ_CQE_CONSUMED_MASK (1 << 27) + #define MQ_CQE_VALID(_cqe) (_cqe->u0.dw[3]) + #define MQ_CQE_INVALIDATE(_cqe) (_cqe->u0.dw[3] = 0) + + /* Macros for handling extra bytes in EQ-CQ IDs */ + #define DB_CQ_RING_ID_EXT_MASK 0x7C00 /* bits 10-14 */ + #define DB_CQ_RING_ID_EXT_MASK_SHIFT (1) + /* + * qid bits 10-14 + * placing at 11-15 + */ + #define DB_EQ_RING_ID_EXT_MASK 0x3e00 /* bits 9-13 */ + #define DB_EQ_RING_ID_EXT_MASK_SHIFT (2) /* qid bits 9-13 placing at 11-15 */ + /* completion queue entry for MQ */ struct oce_mq_cqe { union { struct { #ifdef _BIG_ENDIAN
*** 517,527 **** /* dw1 dw2 */ uint32_t mq_tag[2]; /* dw3 */ uint32_t valid:1; uint32_t async_event:1; ! uint32_t hpi_buffer_cmpl:1; uint32_t completed:1; uint32_t consumed:1; uint32_t rsvd0:27; #else /* dw0 */ --- 621,631 ---- /* dw1 dw2 */ uint32_t mq_tag[2]; /* dw3 */ uint32_t valid:1; uint32_t async_event:1; ! uint32_t rsvd:1; uint32_t completed:1; uint32_t consumed:1; uint32_t rsvd0:27; #else /* dw0 */
*** 531,594 **** uint32_t mq_tag[2]; /* dw3 */ uint32_t rsvd0:27; uint32_t consumed:1; uint32_t completed:1; ! uint32_t hpi_buffer_cmpl:1; uint32_t async_event:1; uint32_t valid:1; #endif }s; uint32_t dw[4]; }u0; }; ! struct oce_async_cqe_link_state { union { struct { #ifdef _BIG_ENDIAN - /* dw0 */ - uint8_t speed; - uint8_t duplex; - uint8_t link_status; - uint8_t phy_port; - /* dw1 */ - uint8_t rsvd0[3]; - uint8_t fault; - /* dw2 */ - uint32_t event_tag; - /* dw3 */ uint32_t valid:1; uint32_t async_event:1; uint32_t rsvd2:6; uint32_t event_type:8; uint32_t event_code:8; uint32_t rsvd1:8; #else - /* dw0 */ - uint8_t phy_port; - uint8_t link_status; - uint8_t duplex; - uint8_t speed; - /* dw1 */ - uint8_t fault; - uint8_t rsvd0[3]; - /* dw2 */ - uint32_t event_tag; - /* dw3 */ uint32_t rsvd1:8; uint32_t event_code:8; uint32_t event_type:8; uint32_t rsvd2:6; uint32_t async_event:1; uint32_t valid:1; #endif ! }s; ! uint32_t dw[4]; ! }u0; }; /* MQ mailbox structure */ struct oce_bmbx { struct oce_mbx mbx; struct oce_mq_cqe cqe; }; --- 635,744 ---- uint32_t mq_tag[2]; /* dw3 */ uint32_t rsvd0:27; uint32_t consumed:1; uint32_t completed:1; ! uint32_t rsvd:1; uint32_t async_event:1; uint32_t valid:1; #endif }s; uint32_t dw[4]; }u0; }; ! struct oce_async_event_trailer { union { struct { #ifdef _BIG_ENDIAN uint32_t valid:1; uint32_t async_event:1; uint32_t rsvd2:6; uint32_t event_type:8; uint32_t event_code:8; uint32_t rsvd1:8; #else uint32_t rsvd1:8; uint32_t event_code:8; uint32_t event_type:8; uint32_t rsvd2:6; uint32_t async_event:1; uint32_t valid:1; #endif ! } bits; ! uint32_t code; ! } u0; }; + + /* Async Debug Event Types */ + #define ASYNC_DEBUG_EVENT_TYPE_QNQ 1 + + struct async_event_qnq { + uint8_t enabled; + uint8_t rsvd0; + uint16_t vlan_tag; + uint32_t event_tag; + uint32_t rsvd1[1]; + struct oce_async_event_trailer trailer; + }; + + + struct oce_async_cqe_link_state { + uint8_t phy_port; + uint8_t link_status; + uint8_t duplex; + uint8_t speed; + uint8_t fault; + uint8_t reason; + uint16_t qos_link_speed; + uint32_t event_tag; + struct oce_async_event_trailer trailer; + }; + + struct oce_async_event_grp5_qos_link_speed { + uint8_t physical_port; + uint8_t rsvd[5]; + uint16_t qos_link_speed; + uint32_t event_tag; + struct oce_async_event_trailer trailer; + }; + + + struct oce_async_event_grp5_cos_priority { + uint8_t physical_port; + uint8_t available_priority_bmap; + uint8_t reco_default_priority; + uint8_t valid; + uint8_t rsvd0; + uint32_t event_tag; + struct oce_async_event_trailer trailer; + }; + + struct oce_async_event_grp5_pvid_state { + uint8_t enabled; + uint8_t rsvd0; + uint16_t tag; + uint32_t event_tag; + uint32_t rsvd1; + struct oce_async_event_trailer trailer; + }; + + struct oce_event_grp_5_priority_class_queue_map { + uint8_t priority0_classq; + uint8_t priority1_classq; + uint8_t priority2_classq; + uint8_t priority3_classq; + uint8_t priority4_classq; + uint8_t priority5_classq; + uint8_t priority6_classq; + uint8_t priority7_classq; + uint32_t event_tag; + struct oce_async_event_trailer trailer; + }; + + /* MQ mailbox structure */ struct oce_bmbx { struct oce_mbx mbx; struct oce_mq_cqe cqe; };
*** 617,627 **** /* common ioctl opcodes */ enum { OPCODE_QUERY_COMMON_IFACE_MAC = 1, OPCODE_SET_COMMON_IFACE_MAC = 2, OPCODE_SET_COMMON_IFACE_MULTICAST = 3, ! OPCODE_CONFIG_COMMON_IFACE_VLAN = 4, OPCODE_QUERY_COMMON_LINK_STATUS = 5, OPCODE_READ_COMMON_FLASHROM = 6, OPCODE_WRITE_COMMON_FLASHROM = 7, OPCODE_QUERY_COMMON_MAX_MBX_BUFFER_SIZE = 8, OPCODE_ADD_COMMON_PAGE_TABLES = 9, --- 767,777 ---- /* common ioctl opcodes */ enum { OPCODE_QUERY_COMMON_IFACE_MAC = 1, OPCODE_SET_COMMON_IFACE_MAC = 2, OPCODE_SET_COMMON_IFACE_MULTICAST = 3, ! OPCODE_COMMON_NTWK_VLAN_CONFIG = 4, OPCODE_QUERY_COMMON_LINK_STATUS = 5, OPCODE_READ_COMMON_FLASHROM = 6, OPCODE_WRITE_COMMON_FLASHROM = 7, OPCODE_QUERY_COMMON_MAX_MBX_BUFFER_SIZE = 8, OPCODE_ADD_COMMON_PAGE_TABLES = 9,
*** 664,694 **** OPCODE_SET_COMMON_LINK_SPEED = 57, OPCODE_QUERY_COMMON_FIRMWARE_CONFIG = 58, OPCODE_ADD_COMMON_IFACE_MAC = 59, OPCODE_DEL_COMMON_IFACE_MAC = 60, OPCODE_COMMON_FUNCTION_RESET = 61, ! OPCODE_COMMON_FUNCTION_LINK_CONFIG = 80 }; /* common ioctl header */ struct mbx_hdr { union { struct { #ifdef _BIG_ENDIAN uint8_t domain; uint8_t port_number; uint8_t subsystem; uint8_t opcode; #else uint8_t opcode; uint8_t subsystem; uint8_t port_number; uint8_t domain; - #endif uint32_t timeout; uint32_t request_length; ! uint32_t rsvd0; }req; struct { /* dw 0 */ uint8_t opcode; --- 814,870 ---- OPCODE_SET_COMMON_LINK_SPEED = 57, OPCODE_QUERY_COMMON_FIRMWARE_CONFIG = 58, OPCODE_ADD_COMMON_IFACE_MAC = 59, OPCODE_DEL_COMMON_IFACE_MAC = 60, OPCODE_COMMON_FUNCTION_RESET = 61, ! OPCODE_COMMON_FUNCTION_LINK_CONFIG = 80, ! OPCODE_CREATE_COMMON_MQ_EXT = 90, ! OPCODE_COMMON_SET_DRIVER_FUNCTION_CAPABILITIES = 103 }; + /* Management status error code in Response header */ + enum { + MGMT_STATUS_SUCCESS = 0, /* The IOCTL completed without errors. */ + MGMT_STATUS_FAILED = 1, /* Generic error status */ + MGMT_STATUS_ILLEGAL_REQUEST = 2, /* Invalid IOCTL opcode. */ + MGMT_STATUS_ILLEGAL_FIELD = 3, /* Invalid param in IOCTL pyld */ + MGMT_STATUS_INSUFFICIENT_BUFFER = 4, /* Insufficient buf for response */ + MGMT_STATUS_UNAUTHORIZED_REQUEST = 5 /* Domain invalid access rights */ + }; + + /* Additional status error codes */ + enum { + MGMT_ADDI_STATUS_NO_STATUS = 0, /* IOCTL completed successfully */ + MGMT_ADDI_STATUS_INVALID_SUBSYSTEM = 29, /* Invalid subsystem id */ + MGMT_ADDI_STATUS_INVALID_OPCODE = 30, /* Opcode Invalid */ + MGMT_ADDI_STATUS_INVALID_DOMAIN = 35, /* Invalid domain id */ + MGMT_ADDI_STATUS_INVALID_EXTENDED_TIMEOUT = 64 /* Invalid timeout */ + }; + /* common ioctl header */ struct mbx_hdr { union { struct { #ifdef _BIG_ENDIAN uint8_t domain; uint8_t port_number; uint8_t subsystem; uint8_t opcode; + uint32_t timeout; + uint32_t request_length; + uint8_t rsvd0[3]; + uint8_t version; #else uint8_t opcode; uint8_t subsystem; uint8_t port_number; uint8_t domain; uint32_t timeout; uint32_t request_length; ! uint8_t version; ! uint8_t rsvd0[3]; ! #endif }req; struct { /* dw 0 */ uint8_t opcode;
*** 706,717 **** uint32_t dw[4]; }u0; }; #define OCE_BMBX_RHDR_SZ 20 #define OCE_MBX_RRHDR_SZ sizeof (struct mbx_hdr) ! #define OCE_MBX_ADDL_STATUS(_MHDR) ((_MHDR)->u0.rsp.additional_status) ! #define OCE_MBX_STATUS(_MHDR) ((_MHDR)->u0.rsp.status) /* [05] OPCODE_QUERY_COMMON_LINK_STATUS */ struct mbx_query_common_link_status { struct mbx_hdr hdr; union { --- 882,894 ---- uint32_t dw[4]; }u0; }; #define OCE_BMBX_RHDR_SZ 20 #define OCE_MBX_RRHDR_SZ sizeof (struct mbx_hdr) ! #define OCE_MBX_ADDL_STATUS(_MHDR) \ ! (((struct mbx_hdr *)_MHDR)->u0.rsp.additional_status) ! #define OCE_MBX_STATUS(_MHDR) (((struct mbx_hdr *)_MHDR)->u0.rsp.status) /* [05] OPCODE_QUERY_COMMON_LINK_STATUS */ struct mbx_query_common_link_status { struct mbx_hdr hdr; union {
*** 897,906 **** --- 1074,1107 ---- uint32_t dw; }params; }; + struct mbx_set_common_iface_rx_filter { + struct mbx_hdr hdr; + union { + struct { + uint32_t gflags_mask; + uint32_t gflags; + uint32_t if_flags_mask; + uint32_t if_flags; + uint32_t if_id; + uint32_t multicast_num; + struct ether_addr mac[32]; + }req; + struct { + uint32_t gflags_mask; + uint32_t gflags; + uint32_t if_flags_mask; + uint32_t if_flags; + uint32_t if_id; + uint32_t multicast_num; + struct ether_addr mac[32]; + }rsp; + }params; + }; + /* event queue context structure */ struct oce_eq_ctx { #ifdef _BIG_ENDIAN /* dw0 */ uint32_t size:1;
*** 963,973 **** uint32_t rsvd7; #endif }; /* [13] OPCODE_CREATE_COMMON_EQ */ ! struct mbx_create_common_eq { struct mbx_hdr hdr; union { struct { #ifdef _BIG_ENDIAN uint16_t rsvd0; --- 1164,1174 ---- uint32_t rsvd7; #endif }; /* [13] OPCODE_CREATE_COMMON_EQ */ ! struct mbx_create_common_eq { struct mbx_hdr hdr; union { struct { #ifdef _BIG_ENDIAN uint16_t rsvd0;
*** 1005,1015 **** uint32_t rsvd0; }rsp; }params; }; ! struct oce_cq_ctx { #ifdef _BIG_ENDIAN /* dw0 */ uint32_t eventable:1; uint32_t sol_event:1; uint32_t valid:1; --- 1206,1216 ---- uint32_t rsvd0; }rsp; }params; }; ! struct oce_cq_ctx_v0 { #ifdef _BIG_ENDIAN /* dw0 */ uint32_t eventable:1; uint32_t sol_event:1; uint32_t valid:1;
*** 1060,1071 **** uint32_t rsvd4:20; #endif uint32_t rsvd5; }; ! /* [12] OPCODE_CREATE_COMMON_CQ */ ! struct mbx_create_common_cq { struct mbx_hdr hdr; union { struct { #ifdef _BIG_ENDIAN uint16_t rsvd0; --- 1261,1272 ---- uint32_t rsvd4:20; #endif uint32_t rsvd5; }; ! /* [12] OPCODE_CREATE_COMMON_CQ V0 */ ! struct mbx_create_common_cq_v0 { struct mbx_hdr hdr; union { struct { #ifdef _BIG_ENDIAN uint16_t rsvd0;
*** 1072,1082 **** uint16_t num_pages; #else uint16_t num_pages; uint16_t rsvd0; #endif ! struct oce_cq_ctx cq_ctx; struct phys_addr pages[4]; }req; struct { uint16_t cq_id; --- 1273,1283 ---- uint16_t num_pages; #else uint16_t num_pages; uint16_t rsvd0; #endif ! struct oce_cq_ctx_v0 cq_ctx; struct phys_addr pages[4]; }req; struct { uint16_t cq_id;
*** 1083,1092 **** --- 1284,1363 ---- uint16_t rsvd0; }rsp; }params; }; + struct oce_cq_ctx_v2 { + #ifdef _BIG_ENDIAN + /* dw0 */ + uint32_t eventable:1; + uint32_t rsvd2:1; + uint32_t valid:1; + uint32_t count:2; + uint32_t rsvd1:11; + uint32_t auto_valid:1; + uint32_t nodelay:1; + uint32_t coalesce_wm:2; + uint32_t rsvd0:12; + + /* dw1 */ + uint32_t armed:1; + uint32_t rsvd3:15; + uint32_t eq_id:16; + + /* dw2 */ + uint32_t rsvd4:16; + uint32_t cqe_count:16; + #else + /* dw0 */ + uint32_t rsvd0:12; + uint32_t coalesce_wm:2; + uint32_t nodelay:1; + uint32_t auto_valid:1; + uint32_t rsvd1:11; + uint32_t count:2; + uint32_t valid:1; + uint32_t rsvd2:1; + uint32_t eventable:1; + + /* dw1 */ + uint32_t eq_id:16; + uint32_t rsvd3:15; + uint32_t armed:1; + + /* dw2 */ + uint32_t cqe_count:16; + uint32_t rsvd4:16; + #endif + uint32_t rsvd5; + }; + + /* [12] OPCODE_CREATE_COMMON_CQ V2 */ + struct mbx_create_common_cq_v2 { + struct mbx_hdr hdr; + union { + struct { + #ifdef _BIG_ENDIAN + uint8_t rsvd0; + uint8_t page_size; + uint16_t num_pages; + #else + uint16_t num_pages; + uint8_t page_size; + uint8_t rsvd0; + #endif + struct oce_cq_ctx_v2 cq_ctx; + struct phys_addr pages[8]; + }req; + + struct { + uint16_t cq_id; + uint16_t rsvd0; + }rsp; + }params; + }; + /* [54] OPCODE_DESTROY_COMMON_CQ */ struct mbx_destroy_common_cq { struct mbx_hdr hdr; union { struct {
*** 1103,1113 **** uint32_t rsvd0; }rsp; }params; }; ! struct mq_ring_ctx { union { struct { #ifdef _BIG_ENDIAN /* dw 0 */ uint32_t cq_id:10; --- 1374,1384 ---- uint32_t rsvd0; }rsp; }params; }; ! struct mq_ring_ctx_v0 { union { struct { #ifdef _BIG_ENDIAN /* dw 0 */ uint32_t cq_id:10;
*** 1152,1162 **** }s; uint32_t dw[4]; }u0; }; ! /* [21] OPCODE_CREATE_COMMON_MQ */ struct mbx_create_common_mq { struct mbx_hdr hdr; union { struct { #ifdef _BIG_ENDIAN --- 1423,1433 ---- }s; uint32_t dw[4]; }u0; }; ! /* [21] OPCODE_CREATE_COMMON_MQ V0 */ struct mbx_create_common_mq { struct mbx_hdr hdr; union { struct { #ifdef _BIG_ENDIAN
*** 1164,1174 **** uint16_t num_pages; #else uint16_t num_pages; uint16_t rsvd0; #endif ! struct mq_ring_ctx context; struct phys_addr pages[8]; }req; struct { uint32_t mq_id:16; --- 1435,1445 ---- uint16_t num_pages; #else uint16_t num_pages; uint16_t rsvd0; #endif ! struct mq_ring_ctx_v0 context; struct phys_addr pages[8]; }req; struct { uint32_t mq_id:16;
*** 1175,1184 **** --- 1446,1540 ---- uint32_t rsvd0:16; }rsp; }params; }; + /* [90] OPCODE_COMMON_MCC_CREATE_EXT V0 */ + struct mbx_create_common_mq_ext_v0 { + struct mbx_hdr hdr; + union { + struct { + #ifdef _BIG_ENDIAN + uint16_t rsvd0; + uint16_t num_pages; + #else + uint16_t num_pages; + uint16_t rsvd0; + #endif + uint32_t async_event_bitmap[1]; + struct mq_ring_ctx_v0 context; + struct phys_addr pages[8]; + }req; + + struct { + uint32_t mq_id:16; + uint32_t rsvd0:16; + }rsp; + }params; + }; + + struct mq_ring_ctx_v1 { + union { + struct { + #ifdef _BIG_ENDIAN + /* dw 0 */ + uint32_t rsrvd0:12; + uint32_t ring_size:4; + uint32_t async_cq_id:16; + + /* dw1 */ + uint32_t valid:1; + uint32_t rsrvd1:31; + + /* dw 2 */ + uint32_t rsvd2:31; + uint32_t async_cq_valid:1; + #else + /* dw 0 */ + uint32_t async_cq_id:16; + uint32_t ring_size:4; + uint32_t rsrvd0:12; + + /* dw1 */ + uint32_t rsrvd1:31; + uint32_t valid:1; + + /* dw 2 */ + uint32_t async_cq_valid:1; + uint32_t rsvd2:31; + #endif + /* dw3 */ + uint32_t rsvd3; + }s; + uint32_t dw[4]; + }u0; + }; + + /* [90] OPCODE_COMMON_MCC_CREATE_EXT V1 */ + struct mbx_create_common_mq_ext_v1 { + struct mbx_hdr hdr; + union { + struct { + #ifdef _BIG_ENDIAN + uint16_t cq_id; + uint16_t num_pages; + #else + uint16_t num_pages; + uint16_t cq_id; + #endif + uint32_t async_event_bitmap[1]; + struct mq_ring_ctx_v1 context; + struct phys_addr pages[8]; + }req; + + struct { + uint32_t mq_id:16; + uint32_t rsvd0:16; + }rsp; + }params; + }; + /* [53] OPCODE_DESTROY_COMMON_MQ */ struct mbx_destroy_common_mq { struct mbx_hdr hdr; union { struct {
*** 1429,1438 **** --- 1785,1811 ---- struct { uint32_t rsvd0; }rsp; } params; }; + + /* [103] OPCODE_COMMON_SET_DRIVER_FUNCTION_CAPABILITIES */ + struct mbx_common_set_drvfn_capab { + struct mbx_hdr hdr; + union { + struct { + uint32_t valid_capability_flags; + uint32_t capability_flags; + uint8_t sbz[212]; + } request; + struct { + uint32_t valid_capability_flags; + uint32_t capability_flags; + uint8_t sbz[212]; + } response; + } params; + }; #pragma pack() #ifdef __cplusplus }