19517SBill.Taylor@Sun.COM /* 29517SBill.Taylor@Sun.COM * CDDL HEADER START 39517SBill.Taylor@Sun.COM * 49517SBill.Taylor@Sun.COM * The contents of this file are subject to the terms of the 59517SBill.Taylor@Sun.COM * Common Development and Distribution License (the "License"). 69517SBill.Taylor@Sun.COM * You may not use this file except in compliance with the License. 79517SBill.Taylor@Sun.COM * 89517SBill.Taylor@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99517SBill.Taylor@Sun.COM * or http://www.opensolaris.org/os/licensing. 109517SBill.Taylor@Sun.COM * See the License for the specific language governing permissions 119517SBill.Taylor@Sun.COM * and limitations under the License. 129517SBill.Taylor@Sun.COM * 139517SBill.Taylor@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 149517SBill.Taylor@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159517SBill.Taylor@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 169517SBill.Taylor@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 179517SBill.Taylor@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 189517SBill.Taylor@Sun.COM * 199517SBill.Taylor@Sun.COM * CDDL HEADER END 209517SBill.Taylor@Sun.COM */ 219517SBill.Taylor@Sun.COM 229517SBill.Taylor@Sun.COM /* 23*12965SWilliam.Taylor@Oracle.COM * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 249517SBill.Taylor@Sun.COM */ 259517SBill.Taylor@Sun.COM 269517SBill.Taylor@Sun.COM #ifndef _SYS_IB_ADAPTERS_HERMON_EVENT_H 279517SBill.Taylor@Sun.COM #define _SYS_IB_ADAPTERS_HERMON_EVENT_H 289517SBill.Taylor@Sun.COM 299517SBill.Taylor@Sun.COM /* 309517SBill.Taylor@Sun.COM * hermon_event.h 319517SBill.Taylor@Sun.COM * Contains all of the prototypes, #defines, and structures necessary 329517SBill.Taylor@Sun.COM * for the Interrupt and Event Processing routines 339517SBill.Taylor@Sun.COM * Specifically it contains the various event types, event flags, 349517SBill.Taylor@Sun.COM * structures used for managing Hermon event queues, and prototypes for 359517SBill.Taylor@Sun.COM * many of the functions consumed by other parts of the Hermon driver. 369517SBill.Taylor@Sun.COM */ 379517SBill.Taylor@Sun.COM 389517SBill.Taylor@Sun.COM #include <sys/types.h> 399517SBill.Taylor@Sun.COM #include <sys/conf.h> 409517SBill.Taylor@Sun.COM #include <sys/ddi.h> 419517SBill.Taylor@Sun.COM #include <sys/sunddi.h> 429517SBill.Taylor@Sun.COM 439517SBill.Taylor@Sun.COM #ifdef __cplusplus 449517SBill.Taylor@Sun.COM extern "C" { 459517SBill.Taylor@Sun.COM #endif 469517SBill.Taylor@Sun.COM 479517SBill.Taylor@Sun.COM /* 489517SBill.Taylor@Sun.COM * Hermon UAR Doorbell Write Macro - writes UAR registers 499517SBill.Taylor@Sun.COM * 509517SBill.Taylor@Sun.COM * If on a 32-bit system, we must hold a lock around the ddi_put64() to 519517SBill.Taylor@Sun.COM * ensure that the 64-bit write is an atomic operation. This is a 529517SBill.Taylor@Sun.COM * requirement of the Hermon hardware and is to protect from the race 539517SBill.Taylor@Sun.COM * condition present when more than one kernel thread attempts to do each 549517SBill.Taylor@Sun.COM * of their two 32-bit accesses (for 64-bit doorbell) simultaneously. 559517SBill.Taylor@Sun.COM * 569517SBill.Taylor@Sun.COM * If we are on a 64-bit system then the ddi_put64() is completed as one 579517SBill.Taylor@Sun.COM * 64-bit instruction, and the lock is not needed. 589517SBill.Taylor@Sun.COM * 599517SBill.Taylor@Sun.COM * This is done as a preprocessor #if to speed up execution at run-time 609517SBill.Taylor@Sun.COM * since doorbell ringing is a "fast-path" operation. 619517SBill.Taylor@Sun.COM */ 629517SBill.Taylor@Sun.COM #if (DATAMODEL_NATIVE == DATAMODEL_ILP32) 639517SBill.Taylor@Sun.COM #define HERMON_UAR_DOORBELL(state, uarhdl, hs_uar, doorbell) { \ 649517SBill.Taylor@Sun.COM mutex_enter(&state->hs_uar_lock); \ 659517SBill.Taylor@Sun.COM ddi_put64(uarhdl, hs_uar, doorbell); \ 669517SBill.Taylor@Sun.COM mutex_exit(&state->hs_uar_lock); \ 679517SBill.Taylor@Sun.COM } 689517SBill.Taylor@Sun.COM #else 699517SBill.Taylor@Sun.COM #define HERMON_UAR_DOORBELL(state, uarhdl, hs_uar, doorbell) { \ 709517SBill.Taylor@Sun.COM ddi_put64(uarhdl, hs_uar, doorbell); \ 719517SBill.Taylor@Sun.COM } 729517SBill.Taylor@Sun.COM #endif 739517SBill.Taylor@Sun.COM 749517SBill.Taylor@Sun.COM /* 759517SBill.Taylor@Sun.COM * HERMON Doorbell Record (DBr) Write Macro - writes doorbell record in memory 769517SBill.Taylor@Sun.COM * 779517SBill.Taylor@Sun.COM * Since the DBr is only 32 bits at a time, this can be just a put32, not 789517SBill.Taylor@Sun.COM * put64. 799517SBill.Taylor@Sun.COM */ 809517SBill.Taylor@Sun.COM 819517SBill.Taylor@Sun.COM #define HERMON_UAR_DB_RECORD_WRITE(db_addr, dbr) \ 829517SBill.Taylor@Sun.COM *(uint32_t *)(db_addr) = htonl(dbr) 839517SBill.Taylor@Sun.COM 849517SBill.Taylor@Sun.COM /* 859517SBill.Taylor@Sun.COM * The following defines specify the default number of Event Queues (EQ) and 869517SBill.Taylor@Sun.COM * their default size. By default the size of each EQ is set to 8K entries, 879517SBill.Taylor@Sun.COM * but this value is controllable through the "cp_log_eq_sz" configuration 889517SBill.Taylor@Sun.COM * variable. We also specify the number of EQs which the Arbel driver 899517SBill.Taylor@Sun.COM * currently uses (HERMON_NUM_EQ_USED). Note: this value should be less than 909517SBill.Taylor@Sun.COM * or equal to HERMON_NUM_EQ. 919517SBill.Taylor@Sun.COM * HERMON: will limit to 4 total - in anticipation of VMM implementation 929517SBill.Taylor@Sun.COM * logical Eq (0)-catastrophic, 939517SBill.Taylor@Sun.COM * (1)-error completions, 949517SBill.Taylor@Sun.COM * (2)-misc events and 959517SBill.Taylor@Sun.COM * (3)-completions 969517SBill.Taylor@Sun.COM */ 979517SBill.Taylor@Sun.COM 989517SBill.Taylor@Sun.COM #define HERMON_NUM_EQ_SHIFT 0x9 /* hermon has 512 EQs available */ 999517SBill.Taylor@Sun.COM #define HERMON_NUM_EQ (1 << HERMON_NUM_EQ_SHIFT) 1009517SBill.Taylor@Sun.COM 1019517SBill.Taylor@Sun.COM #define HERMON_NUM_EQ_USED 4 /* four per domain */ 1029517SBill.Taylor@Sun.COM #define HERMON_DEFAULT_EQ_SZ_SHIFT 0xd /* 8192 entries/EQ */ 1039517SBill.Taylor@Sun.COM #define HERMON_EQ_CI_MASK 0xFFFFFF /* low 24 bits */ 1049517SBill.Taylor@Sun.COM 1059517SBill.Taylor@Sun.COM /* 1069517SBill.Taylor@Sun.COM * These are the defines for the Hermon event types. They are specified by 1079517SBill.Taylor@Sun.COM * the Hermon PRM. Below are the "event type masks" in 1089517SBill.Taylor@Sun.COM * which each event type corresponds to one of the 64-bits in the mask. 1099517SBill.Taylor@Sun.COM */ 1109517SBill.Taylor@Sun.COM 1119517SBill.Taylor@Sun.COM /* Note: In order per PRM listing */ 1129517SBill.Taylor@Sun.COM /* Completion Events */ 1139517SBill.Taylor@Sun.COM #define HERMON_EVT_COMPLETION 0x00 1149517SBill.Taylor@Sun.COM /* IB Affiliated Asynch Events */ 1159517SBill.Taylor@Sun.COM #define HERMON_EVT_PATH_MIGRATED 0x01 1169517SBill.Taylor@Sun.COM #define HERMON_EVT_COMM_ESTABLISHED 0x02 1179517SBill.Taylor@Sun.COM #define HERMON_EVT_SEND_QUEUE_DRAINED 0x03 118*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_SRQ_LAST_WQE_REACHED 0x13 1199517SBill.Taylor@Sun.COM #define HERMON_EVT_SRQ_LIMIT 0x14 1209517SBill.Taylor@Sun.COM /* QP Affiliated Asynch Event */ 1219517SBill.Taylor@Sun.COM #define HERMON_EVT_CQ_ERRORS 0x04 /* overrun, protection */ 1229517SBill.Taylor@Sun.COM #define HERMON_EVT_LOCAL_WQ_CAT_ERROR 0x05 1239517SBill.Taylor@Sun.COM #define HERMON_EVT_LOCAL_QPC_CAT_ERROR 0x06 1249517SBill.Taylor@Sun.COM #define HERMON_EVT_PATH_MIGRATE_FAILED 0x07 1259517SBill.Taylor@Sun.COM #define HERMON_EVT_INV_REQ_LOCAL_WQ_ERROR 0x10 1269517SBill.Taylor@Sun.COM #define HERMON_EVT_LOCAL_ACC_VIO_WQ_ERROR 0x11 1279517SBill.Taylor@Sun.COM #define HERMON_EVT_SRQ_CATASTROPHIC_ERROR 0x12 1289517SBill.Taylor@Sun.COM #define HERMON_EVT_SPOOF_FAIL 0x16 /* enet only */ 129*12965SWilliam.Taylor@Oracle.COM /* FEXCH Errors (QP Affiliated) */ 130*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_FEXCH_ERROR 0x0B 131*12965SWilliam.Taylor@Oracle.COM 1329517SBill.Taylor@Sun.COM /* Unaffiliated Asynch Events/Errors */ 1339517SBill.Taylor@Sun.COM #define HERMON_EVT_PORT_STATE_CHANGE 0x09 1349517SBill.Taylor@Sun.COM #define HERMON_EVT_GPIO 0x15 1359517SBill.Taylor@Sun.COM /* Command Interface */ 1369517SBill.Taylor@Sun.COM #define HERMON_EVT_COMMAND_INTF_COMP 0x0A 1379517SBill.Taylor@Sun.COM /* Miscellaneous */ 1389517SBill.Taylor@Sun.COM #define HERMON_EVT_LOCAL_CAT_ERROR 0x08 1399517SBill.Taylor@Sun.COM 1409517SBill.Taylor@Sun.COM 1419517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_COMPLETION \ 1429517SBill.Taylor@Sun.COM (1 << HERMON_EVT_COMPLETION) 1439517SBill.Taylor@Sun.COM 1449517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_PATH_MIGRATED \ 1459517SBill.Taylor@Sun.COM (1 << HERMON_EVT_PATH_MIGRATED) 1469517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_COMM_ESTABLISHED \ 1479517SBill.Taylor@Sun.COM (1 << HERMON_EVT_COMM_ESTABLISHED) 1489517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_SEND_QUEUE_DRAINED \ 1499517SBill.Taylor@Sun.COM (1 << HERMON_EVT_SEND_QUEUE_DRAINED) 1509517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_SRQ_LAST_WQE_REACHED \ 1519517SBill.Taylor@Sun.COM (1 << HERMON_EVT_SRQ_LAST_WQE_REACHED) 152*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_SRQ_LIMIT \ 1539517SBill.Taylor@Sun.COM (1 << HERMON_EVT_SRQ_LIMIT) 1549517SBill.Taylor@Sun.COM 155*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_CQ_ERRORS \ 1569517SBill.Taylor@Sun.COM (1 << HERMON_EVT_CQ_ERRORS) 1579517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_LOCAL_WQ_CAT_ERROR \ 1589517SBill.Taylor@Sun.COM (1 << HERMON_EVT_LOCAL_WQ_CAT_ERROR) 1599517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_LOCAL_QPC_CAT_ERROR \ 1609517SBill.Taylor@Sun.COM (1 << HERMON_EVT_LOCAL_QPC_CAT_ERROR) 1619517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_PATH_MIGRATE_FAILED \ 1629517SBill.Taylor@Sun.COM (1 << HERMON_EVT_PATH_MIGRATE_FAILED) 1639517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_INV_REQ_LOCAL_WQ_ERROR \ 1649517SBill.Taylor@Sun.COM (1 << HERMON_EVT_INV_REQ_LOCAL_WQ_ERROR) 1659517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_LOCAL_ACC_VIO_WQ_ERROR \ 1669517SBill.Taylor@Sun.COM (1 << HERMON_EVT_LOCAL_ACC_VIO_WQ_ERROR) 1679517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_SRQ_CATASTROPHIC_ERROR \ 1689517SBill.Taylor@Sun.COM (1 << HERMON_EVT_SRQ_CATASTROPHIC_ERROR) 169*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_SPOOF_FAIL \ 1709517SBill.Taylor@Sun.COM (1 << HERMON_EVT_SPOOF_FAIL) 1719517SBill.Taylor@Sun.COM 172*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_FEXCH_ERROR \ 173*12965SWilliam.Taylor@Oracle.COM (1 << HERMON_EVT_FEXCH_ERROR) 174*12965SWilliam.Taylor@Oracle.COM 175*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_PORT_STATE_CHANGE \ 1769517SBill.Taylor@Sun.COM (1 << HERMON_EVT_PORT_STATE_CHANGE) 177*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_GPIO \ 1789517SBill.Taylor@Sun.COM (1 << HERMON_EVT_GPIO) 1799517SBill.Taylor@Sun.COM 180*12965SWilliam.Taylor@Oracle.COM #define HERMON_EVT_MSK_COMMAND_INTF_COMP \ 1819517SBill.Taylor@Sun.COM (1 << HERMON_EVT_COMMAND_INTF_COMP) 1829517SBill.Taylor@Sun.COM 1839517SBill.Taylor@Sun.COM #define HERMON_EVT_MSK_LOCAL_CAT_ERROR \ 1849517SBill.Taylor@Sun.COM (1 << HERMON_EVT_LOCAL_CAT_ERROR) 1859517SBill.Taylor@Sun.COM 1869517SBill.Taylor@Sun.COM 1879517SBill.Taylor@Sun.COM #define HERMON_EVT_NO_MASK 0 1889517SBill.Taylor@Sun.COM 189*12965SWilliam.Taylor@Oracle.COM /* For now, "catchall" is just HERMON_EVT_LOCAL_QPC_CAT_ERROR. */ 1909517SBill.Taylor@Sun.COM #define HERMON_EVT_CATCHALL_MASK 0x0040 191*12965SWilliam.Taylor@Oracle.COM 1929517SBill.Taylor@Sun.COM /* 1939517SBill.Taylor@Sun.COM * The last defines are used by hermon_eqe_sync() to indicate whether or not 1949517SBill.Taylor@Sun.COM * to force a DMA sync. The case for forcing a DMA sync on a EQE comes from 1959517SBill.Taylor@Sun.COM * the possibility that we could receive an interrupt, read of the ECR, and 1969517SBill.Taylor@Sun.COM * have each of these operations complete successfully _before_ the hardware 1979517SBill.Taylor@Sun.COM * has finished its DMA to the event queue. 1989517SBill.Taylor@Sun.COM */ 1999517SBill.Taylor@Sun.COM #define HERMON_EQ_SYNC_NORMAL 0x0 2009517SBill.Taylor@Sun.COM #define HERMON_EQ_SYNC_FORCE 0x1 2019517SBill.Taylor@Sun.COM 2029517SBill.Taylor@Sun.COM /* 2039517SBill.Taylor@Sun.COM * Catastrophic error values. In case of a catastrophic error, the following 2049517SBill.Taylor@Sun.COM * errors are reported in a special buffer space. The buffer location is 2059517SBill.Taylor@Sun.COM * returned from a QUERY_FW command. We check that buffer against these error 2069517SBill.Taylor@Sun.COM * values to determine what kind of error occurred. 2079517SBill.Taylor@Sun.COM */ 2089517SBill.Taylor@Sun.COM #define HERMON_CATASTROPHIC_INTERNAL_ERROR 0x0 2099517SBill.Taylor@Sun.COM #define HERMON_CATASTROPHIC_UPLINK_BUS_ERROR 0x3 2109517SBill.Taylor@Sun.COM #define HERMON_CATASTROPHIC_INTERNAL_PARITY_ERROR 0x5 2119517SBill.Taylor@Sun.COM /* Presumably, this is no longer supported */ 2129517SBill.Taylor@Sun.COM #define HERMON_CATASTROPHIC_DDR_DATA_ERROR 0x4 2139517SBill.Taylor@Sun.COM 2149517SBill.Taylor@Sun.COM /* 2159517SBill.Taylor@Sun.COM * This define is the 'enable' flag used when programming the MSI number 2169517SBill.Taylor@Sun.COM * into event queues. It is or'd with the MSI number and the result is 2179517SBill.Taylor@Sun.COM * written into the EX context. 2189517SBill.Taylor@Sun.COM */ 2199517SBill.Taylor@Sun.COM 2209517SBill.Taylor@Sun.COM #define HERMON_EQ_MSI_ENABLE_FLAG 0x200 /* bit 9 of 0x14 in EQC */ 2219517SBill.Taylor@Sun.COM 2229517SBill.Taylor@Sun.COM /* 2239517SBill.Taylor@Sun.COM * The following#defines are for the EQ's in the UAR pages. In Hermon, the 2249517SBill.Taylor@Sun.COM * arm mechanism is new - in the first 128 (that is, 0 - 127) UAR pages, which 2259517SBill.Taylor@Sun.COM * are reserved, the only useful thing is the EQ registers. In turn those 2269517SBill.Taylor@Sun.COM * locations are ignored in any other UAR page. 2279517SBill.Taylor@Sun.COM * 2289517SBill.Taylor@Sun.COM * The driver writes to the with the MSB bit set to arm it, and the current 2299517SBill.Taylor@Sun.COM * CI (consumer index). 2309517SBill.Taylor@Sun.COM */ 2319517SBill.Taylor@Sun.COM #define G_EQ0 0x0800 2329517SBill.Taylor@Sun.COM #define G_EQ1 0x0808 2339517SBill.Taylor@Sun.COM #define G_EQ2 0x0810 2349517SBill.Taylor@Sun.COM #define G_EQ3 0x0818 2359517SBill.Taylor@Sun.COM 2369517SBill.Taylor@Sun.COM /* 2379517SBill.Taylor@Sun.COM * They should be written as a 32-bit entity: 2389517SBill.Taylor@Sun.COM * bit 31: Arm (if set) 2399517SBill.Taylor@Sun.COM * bit 23:0 Consumer Index 2409517SBill.Taylor@Sun.COM */ 2419517SBill.Taylor@Sun.COM #define EQ_ARM_BIT 0x80000000 2429517SBill.Taylor@Sun.COM 2439517SBill.Taylor@Sun.COM /* 2449517SBill.Taylor@Sun.COM * The register to be written is: 2459517SBill.Taylor@Sun.COM * (EQ_num / 4) == UAR page 2469517SBill.Taylor@Sun.COM * (EQ_NUM % 4) == G_EQx 2479517SBill.Taylor@Sun.COM */ 2489517SBill.Taylor@Sun.COM 2499517SBill.Taylor@Sun.COM #define ARM_EQ_INDEX(eq) \ 2509517SBill.Taylor@Sun.COM (((eq >> 2) * PAGESIZE) + (0x0800 + ((eq & 0x03) * 0x08))) 2519517SBill.Taylor@Sun.COM 2529517SBill.Taylor@Sun.COM 2539517SBill.Taylor@Sun.COM /* 2549517SBill.Taylor@Sun.COM * The hermon_sw_eq_s structure is also referred to using the "hermon_eqhdl_t" 2559517SBill.Taylor@Sun.COM * typedef (see hermon_typedef.h). It encodes all the information necessary 2569517SBill.Taylor@Sun.COM * to track the various resources needed to allocate, initialize, poll, and 2579517SBill.Taylor@Sun.COM * (later) free an event queue (EQ). 2589517SBill.Taylor@Sun.COM * 2599517SBill.Taylor@Sun.COM * Specifically, it has a consumer index and a lock to ensure single threaded 2609517SBill.Taylor@Sun.COM * access to it. It has pointers to the various resources allocated for the 2619517SBill.Taylor@Sun.COM * event queue, i.e. an EQC resource and the memory for the event queue 262*12965SWilliam.Taylor@Oracle.COM * itself. It has flags to indicate which type of event class(es) the EQ 263*12965SWilliam.Taylor@Oracle.COM * has been mapped to (eq_evttypemask). 2649517SBill.Taylor@Sun.COM * 2659517SBill.Taylor@Sun.COM * It also has a pointer to the associated MR handle (for the mapped queue 2669517SBill.Taylor@Sun.COM * memory) and a function pointer that points to the handler that should 2679517SBill.Taylor@Sun.COM * be called when the corresponding EQ has fired. Note: the "eq_func" 2689517SBill.Taylor@Sun.COM * handler takes a Hermon softstate pointer, a pointer to the EQ handle, and a 2699517SBill.Taylor@Sun.COM * pointer to a generic hermon_hw_eqe_t structure. It is up to the "eq_func" 2709517SBill.Taylor@Sun.COM * handler function to determine what specific type of event is being passed. 2719517SBill.Taylor@Sun.COM * 2729517SBill.Taylor@Sun.COM * Lastly, we have the always necessary backpointer to the resource for the 2739517SBill.Taylor@Sun.COM * EQ handle structure itself. 2749517SBill.Taylor@Sun.COM */ 2759517SBill.Taylor@Sun.COM struct hermon_sw_eq_s { 2769517SBill.Taylor@Sun.COM uint32_t eq_consindx; 2779517SBill.Taylor@Sun.COM uint32_t eq_eqnum; 2789517SBill.Taylor@Sun.COM hermon_hw_eqe_t *eq_buf; 279*12965SWilliam.Taylor@Oracle.COM uint32_t *eq_doorbell; 2809517SBill.Taylor@Sun.COM hermon_mrhdl_t eq_mrhdl; 2819517SBill.Taylor@Sun.COM uint32_t eq_bufsz; 2829517SBill.Taylor@Sun.COM uint32_t eq_log_eqsz; 2839517SBill.Taylor@Sun.COM uint_t eq_evttypemask; 2849517SBill.Taylor@Sun.COM hermon_rsrc_t *eq_eqcrsrcp; 2859517SBill.Taylor@Sun.COM hermon_rsrc_t *eq_rsrcp; 2869517SBill.Taylor@Sun.COM int (*eq_func)(hermon_state_t *state, hermon_eqhdl_t eq, 2879517SBill.Taylor@Sun.COM hermon_hw_eqe_t *eqe); 2889517SBill.Taylor@Sun.COM 2899517SBill.Taylor@Sun.COM struct hermon_qalloc_info_s eq_eqinfo; 2909517SBill.Taylor@Sun.COM }; 2919517SBill.Taylor@Sun.COM 2929517SBill.Taylor@Sun.COM int hermon_eq_init_all(hermon_state_t *state); 2939517SBill.Taylor@Sun.COM int hermon_eq_fini_all(hermon_state_t *state); 2949517SBill.Taylor@Sun.COM int hermon_eq_arm_all(hermon_state_t *state); 2959517SBill.Taylor@Sun.COM uint_t hermon_isr(caddr_t arg1, caddr_t arg2); 2969517SBill.Taylor@Sun.COM void hermon_eq_doorbell(hermon_state_t *state, uint32_t eq_cmd, uint32_t eqn, 2979517SBill.Taylor@Sun.COM uint32_t eq_param); 2989517SBill.Taylor@Sun.COM void hermon_eq_overflow_handler(hermon_state_t *state, hermon_eqhdl_t eq, 2999517SBill.Taylor@Sun.COM hermon_hw_eqe_t *eqe); 300*12965SWilliam.Taylor@Oracle.COM void hermon_eq_reset_uar_baseaddr(hermon_state_t *state); 3019517SBill.Taylor@Sun.COM 3029517SBill.Taylor@Sun.COM #ifdef __cplusplus 3039517SBill.Taylor@Sun.COM } 3049517SBill.Taylor@Sun.COM #endif 3059517SBill.Taylor@Sun.COM 3069517SBill.Taylor@Sun.COM #endif /* _SYS_IB_ADAPTERS_HERMON_EVENT_H */ 307