1*d14abf15SRobert Mustacchi 2*d14abf15SRobert Mustacchi /***************************************************************************** 3*d14abf15SRobert Mustacchi * CDDL HEADER START 4*d14abf15SRobert Mustacchi * 5*d14abf15SRobert Mustacchi * The contents of this file are subject to the terms of the 6*d14abf15SRobert Mustacchi * Common Development and Distribution License (the "License"). 7*d14abf15SRobert Mustacchi * You may not use this file except in compliance with the License. 8*d14abf15SRobert Mustacchi * 9*d14abf15SRobert Mustacchi * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*d14abf15SRobert Mustacchi * or http://www.opensolaris.org/os/licensing. 11*d14abf15SRobert Mustacchi * See the License for the specific language governing permissions 12*d14abf15SRobert Mustacchi * and limitations under the License. 13*d14abf15SRobert Mustacchi * 14*d14abf15SRobert Mustacchi * When distributing Covered Code, include this CDDL HEADER in each 15*d14abf15SRobert Mustacchi * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*d14abf15SRobert Mustacchi * If applicable, add the following below this CDDL HEADER, with the 17*d14abf15SRobert Mustacchi * fields enclosed by brackets "[]" replaced with your own identifying 18*d14abf15SRobert Mustacchi * information: Portions Copyright [yyyy] [name of copyright owner] 19*d14abf15SRobert Mustacchi * 20*d14abf15SRobert Mustacchi * CDDL HEADER END 21*d14abf15SRobert Mustacchi * 22*d14abf15SRobert Mustacchi * Copyright 2014 QLogic Corporation 23*d14abf15SRobert Mustacchi * The contents of this file are subject to the terms of the 24*d14abf15SRobert Mustacchi * QLogic End User License (the "License"). 25*d14abf15SRobert Mustacchi * You may not use this file except in compliance with the License. 26*d14abf15SRobert Mustacchi * 27*d14abf15SRobert Mustacchi * You can obtain a copy of the License at 28*d14abf15SRobert Mustacchi * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/ 29*d14abf15SRobert Mustacchi * QLogic_End_User_Software_License.txt 30*d14abf15SRobert Mustacchi * See the License for the specific language governing permissions 31*d14abf15SRobert Mustacchi * and limitations under the License. 32*d14abf15SRobert Mustacchi * 33*d14abf15SRobert Mustacchi *****************************************************************************/ 34*d14abf15SRobert Mustacchi 35*d14abf15SRobert Mustacchi #if defined(_VBD_) 36*d14abf15SRobert Mustacchi #include <ntddk.h> 37*d14abf15SRobert Mustacchi #elif defined(_VBD_CMD_) 38*d14abf15SRobert Mustacchi #include "vc_os_emul.h" 39*d14abf15SRobert Mustacchi #endif 40*d14abf15SRobert Mustacchi 41*d14abf15SRobert Mustacchi #include "../../Windows/b10bdrv/um_lock.h" 42*d14abf15SRobert Mustacchi 43*d14abf15SRobert Mustacchi // portable integer type of the pointer size for current platform (64/32) 44*d14abf15SRobert Mustacchi typedef ULONG_PTR mm_int_ptr_t; 45*d14abf15SRobert Mustacchi 46*d14abf15SRobert Mustacchi typedef spin_lock_t mm_spin_lock_t; 47*d14abf15SRobert Mustacchi 48*d14abf15SRobert Mustacchi #if defined(_IA64_) || defined(_VBD_CMD_) 49*d14abf15SRobert Mustacchi #define mm_read_barrier_imp() KeMemoryBarrier() 50*d14abf15SRobert Mustacchi #else 51*d14abf15SRobert Mustacchi #define mm_read_barrier_imp() KeMemoryBarrierWithoutFence() 52*d14abf15SRobert Mustacchi #endif 53*d14abf15SRobert Mustacchi 54*d14abf15SRobert Mustacchi /* Sections that are different between VBD_CMD and VBD (shouldn't be alot...) */ 55*d14abf15SRobert Mustacchi #if defined(_VBD_) 56*d14abf15SRobert Mustacchi lm_status_t mm_get_bar_offset_imp(struct _lm_device_t *pdev, 57*d14abf15SRobert Mustacchi u8_t barn, 58*d14abf15SRobert Mustacchi lm_address_t *bar_addr); 59*d14abf15SRobert Mustacchi 60*d14abf15SRobert Mustacchi lm_status_t mm_get_bar_size_imp(struct _lm_device_t *pdev, 61*d14abf15SRobert Mustacchi u8_t bar_num, 62*d14abf15SRobert Mustacchi u32_t *bar_sz); 63*d14abf15SRobert Mustacchi 64*d14abf15SRobert Mustacchi #else 65*d14abf15SRobert Mustacchi 66*d14abf15SRobert Mustacchi #define mm_get_bar_offset_imp(pdev, bar_num, bar_addr) \ 67*d14abf15SRobert Mustacchi lm_get_bar_offset_direct(pdev, bar_num, bar_addr) 68*d14abf15SRobert Mustacchi 69*d14abf15SRobert Mustacchi #define mm_get_bar_size_imp(pdev, bar_num, val_p) \ 70*d14abf15SRobert Mustacchi lm_get_bar_size_direct(pdev, bar_num, val_p) 71*d14abf15SRobert Mustacchi 72*d14abf15SRobert Mustacchi 73*d14abf15SRobert Mustacchi #endif 74*d14abf15SRobert Mustacchi 75*d14abf15SRobert Mustacchi #define mm_write_barrier_imp() KeMemoryBarrier() 76*d14abf15SRobert Mustacchi #define mm_barrier_imp() KeMemoryBarrier() 77*d14abf15SRobert Mustacchi 78*d14abf15SRobert Mustacchi #define mm_atomic_set_imp(_p, _v) InterlockedExchange((long*)(_p), (long)(_v)) 79*d14abf15SRobert Mustacchi 80*d14abf15SRobert Mustacchi #define mm_atomic_dec_imp(_p) InterlockedDecrement((long*)(_p)) 81*d14abf15SRobert Mustacchi #define mm_atomic_inc_imp(_p) InterlockedIncrement((long*)(_p)) 82*d14abf15SRobert Mustacchi 83*d14abf15SRobert Mustacchi #define mm_atomic_add_imp(_p, _v) \ 84*d14abf15SRobert Mustacchi InterlockedExchangeAdd((long*)(_p), (long)(_v)) 85*d14abf15SRobert Mustacchi #define mm_atomic_sub_imp(_p, _v) \ 86*d14abf15SRobert Mustacchi InterlockedExchangeAdd((long*)(_p), -1*(long)(_v)) 87*d14abf15SRobert Mustacchi 88*d14abf15SRobert Mustacchi #define mm_atomic_and_imp(_p, _v) InterlockedAnd((long*)(_p), (long)(_v)) 89*d14abf15SRobert Mustacchi #define mm_atomic_long_and_imp(_p, _v) mm_atomic_and_imp((_p), (_v)) 90*d14abf15SRobert Mustacchi 91*d14abf15SRobert Mustacchi #define mm_atomic_or_imp(_p, _v) InterlockedOr((long*)(_p), (long)(_v) ) 92*d14abf15SRobert Mustacchi #define mm_atomic_long_or_imp(_p, _v) mm_atomic_or_imp((_p), (_v)) 93*d14abf15SRobert Mustacchi 94*d14abf15SRobert Mustacchi #define mm_atomic_read_imp(_p) \ 95*d14abf15SRobert Mustacchi InterlockedExchangeAdd((long*)(_p), (long)(0)) 96*d14abf15SRobert Mustacchi #define mm_atomic_long_read_imp(_p) mm_atomic_read_imp((_p)) 97*d14abf15SRobert Mustacchi 98*d14abf15SRobert Mustacchi #define mm_atomic_cmpxchg_imp(_p, _old_val, _new_val) \ 99*d14abf15SRobert Mustacchi InterlockedCompareExchange(_p, (long)_new_val, (long)_old_val ) 100*d14abf15SRobert Mustacchi 101*d14abf15SRobert Mustacchi 102*d14abf15SRobert Mustacchi #define MM_WRITE_DOORBELL_IMP(PDEV, BAR, CID, VAL) \ 103*d14abf15SRobert Mustacchi if (IS_PFDEV(pdev)) \ 104*d14abf15SRobert Mustacchi { \ 105*d14abf15SRobert Mustacchi LM_BAR_WR32_ADDRESS((PDEV), ((u8_t *)PFDEV(PDEV)->context_info->array[VF_TO_PF_CID((PDEV), (CID))].cid_resc.mapped_cid_bar_addr + (DPM_TRIGER_TYPE)), (VAL)); \ 106*d14abf15SRobert Mustacchi } \ 107*d14abf15SRobert Mustacchi else \ 108*d14abf15SRobert Mustacchi { \ 109*d14abf15SRobert Mustacchi LM_BAR_WR32_ADDRESS((PDEV), ((u8_t *)(PDEV)->context_info->array[VF_TO_PF_CID((PDEV), (CID))].cid_resc.mapped_cid_bar_addr), (VAL)); \ 110*d14abf15SRobert Mustacchi } 111*d14abf15SRobert Mustacchi 112*d14abf15SRobert Mustacchi #define MM_REGISTER_LPME_IMP(_pdev, _func, _b_fw_access, _b_queue_for_fw) \ 113*d14abf15SRobert Mustacchi mm_register_lpme((_pdev), (_func), (_b_fw_access), (_b_queue_for_fw)) 114*d14abf15SRobert Mustacchi 115*d14abf15SRobert Mustacchi 116*d14abf15SRobert Mustacchi void MM_ACQUIRE_SPQ_LOCK_IMP(struct _lm_device_t *_pdev); 117*d14abf15SRobert Mustacchi void MM_RELEASE_SPQ_LOCK_IMP(struct _lm_device_t *_pdev); 118*d14abf15SRobert Mustacchi void MM_ACQUIRE_SPQ_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 119*d14abf15SRobert Mustacchi void MM_RELEASE_SPQ_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 120*d14abf15SRobert Mustacchi 121*d14abf15SRobert Mustacchi void MM_ACQUIRE_CID_LOCK_IMP(struct _lm_device_t *_pdev); 122*d14abf15SRobert Mustacchi void MM_RELEASE_CID_LOCK_IMP(struct _lm_device_t *_pdev); 123*d14abf15SRobert Mustacchi 124*d14abf15SRobert Mustacchi void MM_ACQUIRE_REQUEST_LOCK_IMP(struct _lm_device_t *_pdev); 125*d14abf15SRobert Mustacchi void MM_RELEASE_REQUEST_LOCK_IMP(struct _lm_device_t *_pdev); 126*d14abf15SRobert Mustacchi 127*d14abf15SRobert Mustacchi #define MM_ACQUIRE_REQUEST_LOCK_DPC_IMP(pdev) 128*d14abf15SRobert Mustacchi #define MM_RELEASE_REQUEST_LOCK_DPC_IMP(pdev) 129*d14abf15SRobert Mustacchi 130*d14abf15SRobert Mustacchi void MM_ACQUIRE_PHY_LOCK_IMP(struct _lm_device_t * pDev); 131*d14abf15SRobert Mustacchi void MM_RELEASE_PHY_LOCK_IMP(struct _lm_device_t * pDev); 132*d14abf15SRobert Mustacchi void MM_ACQUIRE_PHY_LOCK_DPC_IMP(struct _lm_device_t * pDev); 133*d14abf15SRobert Mustacchi void MM_RELEASE_PHY_LOCK_DPC_IMP(struct _lm_device_t * pDev); 134*d14abf15SRobert Mustacchi 135*d14abf15SRobert Mustacchi void MM_ACQUIRE_ISLES_CONTROL_LOCK_IMP(struct _lm_device_t *_pdev); 136*d14abf15SRobert Mustacchi void MM_RELEASE_ISLES_CONTROL_LOCK_IMP(struct _lm_device_t *_pdev); 137*d14abf15SRobert Mustacchi void MM_ACQUIRE_ISLES_CONTROL_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 138*d14abf15SRobert Mustacchi void MM_RELEASE_ISLES_CONTROL_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 139*d14abf15SRobert Mustacchi 140*d14abf15SRobert Mustacchi #define MM_ACQUIRE_RAMROD_COMP_LOCK_IMP(_pdev) 141*d14abf15SRobert Mustacchi #define MM_RELEASE_RAMROD_COMP_LOCK_IMP(_pdev) 142*d14abf15SRobert Mustacchi 143*d14abf15SRobert Mustacchi void MM_ACQUIRE_MCP_LOCK_IMP(struct _lm_device_t *_pdev); 144*d14abf15SRobert Mustacchi void MM_RELEASE_MCP_LOCK_IMP(struct _lm_device_t *_pdev); 145*d14abf15SRobert Mustacchi 146*d14abf15SRobert Mustacchi void MM_ACQUIRE_ISLES_CONTROL_LOCK_IMP(struct _lm_device_t *_pdev); 147*d14abf15SRobert Mustacchi void MM_RELEASE_ISLES_CONTROL_LOCK_IMP(struct _lm_device_t *_pdev); 148*d14abf15SRobert Mustacchi void MM_ACQUIRE_ISLES_CONTROL_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 149*d14abf15SRobert Mustacchi void MM_RELEASE_ISLES_CONTROL_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 150*d14abf15SRobert Mustacchi 151*d14abf15SRobert Mustacchi void MM_ACQUIRE_IND_REG_LOCK_IMP(struct _lm_device_t *_pdev); 152*d14abf15SRobert Mustacchi void MM_RELEASE_IND_REG_LOCK_IMP(struct _lm_device_t *_pdev); 153*d14abf15SRobert Mustacchi 154*d14abf15SRobert Mustacchi void MM_ACQUIRE_LOADER_LOCK_IMP(); 155*d14abf15SRobert Mustacchi void MM_RELEASE_LOADER_LOCK_IMP(); 156*d14abf15SRobert Mustacchi 157*d14abf15SRobert Mustacchi void MM_ACQUIRE_SP_REQ_MGR_LOCK_IMP(struct _lm_device_t *_pdev); 158*d14abf15SRobert Mustacchi void MM_RELEASE_SP_REQ_MGR_LOCK_IMP(struct _lm_device_t *_pdev); 159*d14abf15SRobert Mustacchi 160*d14abf15SRobert Mustacchi void MM_ACQUIRE_SB_LOCK_IMP(struct _lm_device_t *_pdev, u8_t _sb_idx); 161*d14abf15SRobert Mustacchi void MM_RELEASE_SB_LOCK_IMP(struct _lm_device_t *_pdev, u8_t _sb_idx); 162*d14abf15SRobert Mustacchi 163*d14abf15SRobert Mustacchi void MM_ACQUIRE_ETH_CON_LOCK_IMP(struct _lm_device_t *_pdev); 164*d14abf15SRobert Mustacchi void MM_RELEASE_ETH_CON_LOCK_IMP(struct _lm_device_t *_pdev); 165*d14abf15SRobert Mustacchi 166*d14abf15SRobert Mustacchi #ifdef VF_INVOLVED 167*d14abf15SRobert Mustacchi 168*d14abf15SRobert Mustacchi void MM_ACQUIRE_PF_LOCK_IMP(struct _lm_device_t *_pdev); 169*d14abf15SRobert Mustacchi void MM_RELEASE_PF_LOCK_IMP(struct _lm_device_t *_pdev); 170*d14abf15SRobert Mustacchi 171*d14abf15SRobert Mustacchi void MM_ACQUIRE_VFS_STATS_LOCK_IMP(struct _lm_device_t *_pdev); 172*d14abf15SRobert Mustacchi void MM_RELEASE_VFS_STATS_LOCK_IMP(struct _lm_device_t *_pdev); 173*d14abf15SRobert Mustacchi void MM_ACQUIRE_VFS_STATS_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 174*d14abf15SRobert Mustacchi void MM_RELEASE_VFS_STATS_LOCK_DPC_IMP(struct _lm_device_t *_pdev); 175*d14abf15SRobert Mustacchi 176*d14abf15SRobert Mustacchi void 177*d14abf15SRobert Mustacchi mm_sriov_invalidate_vf_block( 178*d14abf15SRobert Mustacchi struct _lm_device_t *pdev, 179*d14abf15SRobert Mustacchi u16_t vf_id, 180*d14abf15SRobert Mustacchi u64_t invalidate_bock); 181*d14abf15SRobert Mustacchi 182*d14abf15SRobert Mustacchi #endif /* VF_INVOLVED */ 183*d14abf15SRobert Mustacchi 184*d14abf15SRobert Mustacchi 185*d14abf15SRobert Mustacchi lm_status_t mm_er_initiate_recovery_imp(struct _lm_device_t * pdev); 186*d14abf15SRobert Mustacchi 187*d14abf15SRobert Mustacchi typedef void lm_generic_dpc_func(struct _lm_device_t *pdev); 188*d14abf15SRobert Mustacchi lm_status_t mm_register_dpc_imp(struct _lm_device_t *_pdev, 189*d14abf15SRobert Mustacchi lm_generic_dpc_func *func); 190*d14abf15SRobert Mustacchi 191*d14abf15SRobert Mustacchi void mm_empty_ramrod_received_imp(struct _lm_device_t *_pdev, 192*d14abf15SRobert Mustacchi const u32_t empty_data); 193*d14abf15SRobert Mustacchi 194*d14abf15SRobert Mustacchi void mm_dbus_start_if_enabled_imp(struct _lm_device_t *_pdev); 195*d14abf15SRobert Mustacchi void mm_dbus_stop_if_started_imp(struct _lm_device_t *_pdev); 196*d14abf15SRobert Mustacchi 197*d14abf15SRobert Mustacchi 198*d14abf15SRobert Mustacchi #ifdef BIG_ENDIAN 199*d14abf15SRobert Mustacchi // LE 200*d14abf15SRobert Mustacchi #define mm_le16_to_cpu_imp(val) SWAP_BYTES16(val) 201*d14abf15SRobert Mustacchi #define mm_cpu_to_le16_imp(val) SWAP_BYTES16(val) 202*d14abf15SRobert Mustacchi #define mm_le32_to_cpu_imp(val) SWAP_BYTES32(val) 203*d14abf15SRobert Mustacchi #define mm_cpu_to_le32_imp(val) SWAP_BYTES32(val) 204*d14abf15SRobert Mustacchi // BE 205*d14abf15SRobert Mustacchi #define mm_be32_to_cpu_imp(val) (val) 206*d14abf15SRobert Mustacchi #define mm_cpu_to_be32_imp(val) (val) 207*d14abf15SRobert Mustacchi #define mm_be16_to_cpu_imp(val) (val) 208*d14abf15SRobert Mustacchi #define mm_cpu_to_be16_imp(val) (val) 209*d14abf15SRobert Mustacchi #else /* LITTLE_ENDIAN */ 210*d14abf15SRobert Mustacchi // LE 211*d14abf15SRobert Mustacchi #define mm_le16_to_cpu_imp(val) (val) 212*d14abf15SRobert Mustacchi #define mm_cpu_to_le16_imp(val) (val) 213*d14abf15SRobert Mustacchi #define mm_le32_to_cpu_imp(val) (val) 214*d14abf15SRobert Mustacchi #define mm_cpu_to_le32_imp(val) (val) 215*d14abf15SRobert Mustacchi // BE 216*d14abf15SRobert Mustacchi #define mm_be32_to_cpu_imp(val) SWAP_BYTES32(val) 217*d14abf15SRobert Mustacchi #define mm_cpu_to_be32_imp(val) SWAP_BYTES32(val) 218*d14abf15SRobert Mustacchi #define mm_be16_to_cpu_imp(val) SWAP_BYTES16(val) 219*d14abf15SRobert Mustacchi #define mm_cpu_to_be16_imp(val) SWAP_BYTES16(val) 220*d14abf15SRobert Mustacchi #endif /* ifdef BIG_ENDIAN */ 221*d14abf15SRobert Mustacchi 222*d14abf15SRobert Mustacchi u32_t mm_get_cpu_count(); 223*d14abf15SRobert Mustacchi 224*d14abf15SRobert Mustacchi 225*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_FLAG_COUNTERS 0x01 226*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_FLAG_DESC 0x02 227*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_FLAG_MDL 0x04 // Currently - not working well!!! 228*d14abf15SRobert Mustacchi 229*d14abf15SRobert Mustacchi #define MEM_TRACE_FLAG_HIGH (RESOURCE_TRACE_FLAG_COUNTERS | RESOURCE_TRACE_FLAG_DESC) 230*d14abf15SRobert Mustacchi #define MEM_TRACE_FLAG_DEFAULT RESOURCE_TRACE_FLAG_COUNTERS 231*d14abf15SRobert Mustacchi 232*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_INC(_pdev, _cli_idx, _type, _field) \ 233*d14abf15SRobert Mustacchi { \ 234*d14abf15SRobert Mustacchi DbgBreakIf((_cli_idx) >= MAX_DO_TYPE_CNT); \ 235*d14abf15SRobert Mustacchi DbgBreakIf((_type) >= RESOURCE_TYPE_MAX); \ 236*d14abf15SRobert Mustacchi InterlockedIncrement((long*)&_pdev->resource_list. \ 237*d14abf15SRobert Mustacchi type_counters_arr[_cli_idx][_type]. \ 238*d14abf15SRobert Mustacchi _field); \ 239*d14abf15SRobert Mustacchi } 240*d14abf15SRobert Mustacchi 241*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_DEC(_pdev, _cli_idx, _type, _field) \ 242*d14abf15SRobert Mustacchi { \ 243*d14abf15SRobert Mustacchi DbgBreakIf((_cli_idx) >= MAX_DO_TYPE_CNT); \ 244*d14abf15SRobert Mustacchi DbgBreakIf((_type) >= RESOURCE_TYPE_MAX); \ 245*d14abf15SRobert Mustacchi InterlockedDecrement((long*)&_pdev->resource_list. \ 246*d14abf15SRobert Mustacchi type_counters_arr[_cli_idx][_type]. \ 247*d14abf15SRobert Mustacchi _field); \ 248*d14abf15SRobert Mustacchi } 249*d14abf15SRobert Mustacchi 250*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_ADD(_pdev, _cli_idx, _type, _field, _size) \ 251*d14abf15SRobert Mustacchi { \ 252*d14abf15SRobert Mustacchi DbgBreakIf((_cli_idx) >= MAX_DO_TYPE_CNT); \ 253*d14abf15SRobert Mustacchi DbgBreakIf((_type) >= RESOURCE_TYPE_MAX); \ 254*d14abf15SRobert Mustacchi InterlockedExchangeAdd((long*)&(_pdev->resource_list. \ 255*d14abf15SRobert Mustacchi type_counters_arr[_cli_idx][_type]. \ 256*d14abf15SRobert Mustacchi _field), (long)(_size)); \ 257*d14abf15SRobert Mustacchi } 258*d14abf15SRobert Mustacchi 259*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_SUB(_pdev, _cli_idx, _type, _field, _size) \ 260*d14abf15SRobert Mustacchi RESOURCE_TRACE_ADD( _pdev, _cli_idx, _type, _field, 0L-(long)_size) 261*d14abf15SRobert Mustacchi 262*d14abf15SRobert Mustacchi #define RESOURCE_TRACE_UPDATE_PEAK(_pdev, _cli_idx, _type) \ 263*d14abf15SRobert Mustacchi { \ 264*d14abf15SRobert Mustacchi DbgBreakIf((_cli_idx) >= MAX_DO_TYPE_CNT); \ 265*d14abf15SRobert Mustacchi DbgBreakIf((_type) >= RESOURCE_TYPE_MAX); \ 266*d14abf15SRobert Mustacchi if (_pdev->resource_list.type_counters_arr[_cli_idx][_type].size > \ 267*d14abf15SRobert Mustacchi _pdev->resource_list.type_counters_arr[_cli_idx][_type].size_peak) \ 268*d14abf15SRobert Mustacchi { \ 269*d14abf15SRobert Mustacchi _pdev->resource_list.type_counters_arr[_cli_idx][_type].size_peak = \ 270*d14abf15SRobert Mustacchi _pdev->resource_list.type_counters_arr[_cli_idx][_type].size; \ 271*d14abf15SRobert Mustacchi } \ 272*d14abf15SRobert Mustacchi if (_pdev->resource_list.type_counters_arr[_cli_idx][_type].cnt > \ 273*d14abf15SRobert Mustacchi _pdev->resource_list.type_counters_arr[_cli_idx][_type].cnt_peak) \ 274*d14abf15SRobert Mustacchi { \ 275*d14abf15SRobert Mustacchi _pdev->resource_list.type_counters_arr[_cli_idx][_type].cnt_peak = \ 276*d14abf15SRobert Mustacchi _pdev->resource_list.type_counters_arr[_cli_idx][_type].cnt; \ 277*d14abf15SRobert Mustacchi } \ 278*d14abf15SRobert Mustacchi } 279*d14abf15SRobert Mustacchi 280*d14abf15SRobert Mustacchi 281*d14abf15SRobert Mustacchi /* this is _NTDDK_ only... */ 282*d14abf15SRobert Mustacchi u32_t mm_get_wol_flags(struct _lm_device_t* pdev); 283*d14abf15SRobert Mustacchi 284*d14abf15SRobert Mustacchi /* this is _NTDDK_ only... */ 285*d14abf15SRobert Mustacchi u32_t mm_get_vmq_cnt(struct _lm_device_t* pdev); 286*d14abf15SRobert Mustacchi 287*d14abf15SRobert Mustacchi /* this is _NTDDK_ only... */ 288*d14abf15SRobert Mustacchi u32_t mm_get_feature_flags(struct _lm_device_t* pdev); 289*d14abf15SRobert Mustacchi 290*d14abf15SRobert Mustacchi u32_t mm_get_cap_offset(struct _lm_device_t *pdev, u32_t cap_id); 291*d14abf15SRobert Mustacchi 292*d14abf15SRobert Mustacchi 293*d14abf15SRobert Mustacchi void mm_dcb_indicate_event( 294*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 295*d14abf15SRobert Mustacchi IN lm_event_code_t event, 296*d14abf15SRobert Mustacchi IN u8_t *event_buf, 297*d14abf15SRobert Mustacchi IN u32_t event_buf_size 298*d14abf15SRobert Mustacchi ); 299*d14abf15SRobert Mustacchi #define MM_DCB_INDICATE_EVENT(_pdev,_event,_event_buf, _event_buf_size) mm_dcb_indicate_event(_pdev,_event,_event_buf, _event_buf_size) 300*d14abf15SRobert Mustacchi 301*d14abf15SRobert Mustacchi u32_t 302*d14abf15SRobert Mustacchi mm_dcb_mp_l2_is_enable(struct _lm_device_t *pdev); 303*d14abf15SRobert Mustacchi #define MM_DCB_MP_L2_IS_ENABLE(_pdev) (mm_dcb_mp_l2_is_enable(pdev)) 304*d14abf15SRobert Mustacchi 305