Lines Matching refs:umdevice

42 bnx_intr_priv(um_device_t *const umdevice)  in bnx_intr_priv()  argument
48 lmdevice = &(umdevice->lm_dev); in bnx_intr_priv()
57 um_send_driver_pulse(umdevice); in bnx_intr_priv()
65 waitq = &(_RX_QINFO(umdevice, idx).waitq); in bnx_intr_priv()
67 mutex_enter(&umdevice->os_param.rcv_mutex); in bnx_intr_priv()
70 mutex_exit(&umdevice->os_param.rcv_mutex); in bnx_intr_priv()
79 bnx_xmit_ring_intr(umdevice, idx); in bnx_intr_priv()
85 mutex_enter(&umdevice->os_param.phy_mutex); in bnx_intr_priv()
87 mutex_exit(&umdevice->os_param.phy_mutex); in bnx_intr_priv()
123 bnx_intr_recv(um_device_t * const umdevice) in bnx_intr_recv() argument
125 mutex_enter(&umdevice->os_param.rcv_mutex); in bnx_intr_recv()
127 if (umdevice->intr_enabled == B_TRUE) { in bnx_intr_recv()
132 bnx_rxpkts_intr(umdevice); in bnx_intr_recv()
140 if (umdevice->intr_enabled == B_TRUE) { in bnx_intr_recv()
142 bnx_rxpkts_post(umdevice); in bnx_intr_recv()
145 mutex_exit(&umdevice->os_param.rcv_mutex); in bnx_intr_recv()
149 bnx_intr_xmit(um_device_t *const umdevice) in bnx_intr_xmit() argument
151 mutex_enter(&umdevice->os_param.xmit_mutex); in bnx_intr_xmit()
153 if (umdevice->intr_enabled == B_TRUE) { in bnx_intr_xmit()
157 bnx_txpkts_intr(umdevice); in bnx_intr_xmit()
160 mutex_exit(&umdevice->os_param.xmit_mutex); in bnx_intr_xmit()
167 um_device_t *umdevice; in bnx_intr_1lvl() local
170 umdevice = (um_device_t *)arg1; in bnx_intr_1lvl()
172 lmdevice = &(umdevice->lm_dev); in bnx_intr_1lvl()
174 mutex_enter(&umdevice->intr_mutex); in bnx_intr_1lvl()
176 if (umdevice->intr_enabled != B_TRUE) { in bnx_intr_1lvl()
181 mutex_exit(&umdevice->intr_mutex); in bnx_intr_1lvl()
182 umdevice->intr_in_disabled++; in bnx_intr_1lvl()
187 (void) ddi_dma_sync(*(umdevice->os_param.status_block_dma_hdl), 0, in bnx_intr_1lvl()
192 umdevice->dev_var.processed_status_idx) { in bnx_intr_1lvl()
203 umdevice->intr_no_change++; in bnx_intr_1lvl()
204 mutex_exit(&umdevice->intr_mutex); in bnx_intr_1lvl()
209 umdevice->intrFired++; in bnx_intr_1lvl()
218 umdevice->dev_var.processed_status_idx = in bnx_intr_1lvl()
222 intrstat = bnx_intr_priv(umdevice); in bnx_intr_1lvl()
224 value32 = umdevice->dev_var.processed_status_idx; in bnx_intr_1lvl()
235 umdevice->intr_count++; in bnx_intr_1lvl()
238 bnx_intr_recv(umdevice); in bnx_intr_1lvl()
242 bnx_intr_xmit(umdevice); in bnx_intr_1lvl()
245 mutex_exit(&umdevice->intr_mutex); in bnx_intr_1lvl()
251 bnx_intr_enable(um_device_t * const umdevice) in bnx_intr_enable() argument
255 umdevice->intr_count = 0; in bnx_intr_enable()
260 umdevice->intr_enabled = B_TRUE; in bnx_intr_enable()
262 if ((rc = ddi_intr_enable(umdevice->pIntrBlock[0])) != DDI_SUCCESS) { in bnx_intr_enable()
264 umdevice->dev_name, rc); in bnx_intr_enable()
269 lm_enable_int(&(umdevice->lm_dev)); in bnx_intr_enable()
271 FLUSHPOSTEDWRITES(&(umdevice->lm_dev)); in bnx_intr_enable()
295 bnx_intr_wait(um_device_t * const umdevice) in bnx_intr_wait() argument
297 if (mutex_tryenter(&umdevice->intr_mutex)) { in bnx_intr_wait()
307 mutex_enter(&umdevice->os_param.rcv_mutex); in bnx_intr_wait()
308 mutex_exit(&umdevice->os_param.rcv_mutex); in bnx_intr_wait()
317 mutex_enter(&umdevice->intr_mutex); in bnx_intr_wait()
319 mutex_exit(&umdevice->intr_mutex); in bnx_intr_wait()
324 bnx_intr_disable(um_device_t * const umdevice) in bnx_intr_disable() argument
331 umdevice->intr_enabled = B_FALSE; in bnx_intr_disable()
336 bnx_intr_wait(umdevice); in bnx_intr_disable()
339 lm_disable_int(&(umdevice->lm_dev)); in bnx_intr_disable()
341 FLUSHPOSTEDWRITES(&(umdevice->lm_dev)); in bnx_intr_disable()
343 if ((rc = ddi_intr_disable(umdevice->pIntrBlock[0])) != DDI_SUCCESS) { in bnx_intr_disable()
345 umdevice->dev_name, rc); in bnx_intr_disable()
350 bnxIntrInit(um_device_t *umdevice) in bnxIntrInit() argument
352 dev_info_t *pDev = umdevice->os_param.dip; in bnxIntrInit()
355 if ((umdevice->pIntrBlock = kmem_zalloc(sizeof (ddi_intr_handle_t), in bnxIntrInit()
358 "block!", umdevice->dev_name); in bnxIntrInit()
362 umdevice->intrType = (umdevice->dev_var.disableMsix) ? in bnxIntrInit()
366 if ((rc = ddi_intr_alloc(pDev, umdevice->pIntrBlock, in bnxIntrInit()
367 umdevice->intrType, 0, 1, &intrActual, in bnxIntrInit()
370 "%s isr handle block (%d)", umdevice->dev_name, in bnxIntrInit()
371 (umdevice->intrType == DDI_INTR_TYPE_MSIX) ? in bnxIntrInit()
374 if (umdevice->intrType == DDI_INTR_TYPE_MSIX) { in bnxIntrInit()
376 "level interrupts", umdevice->dev_name); in bnxIntrInit()
378 umdevice->intrType = DDI_INTR_TYPE_FIXED; in bnxIntrInit()
381 kmem_free(umdevice->pIntrBlock, in bnxIntrInit()
391 "isr handler!", umdevice->dev_name); in bnxIntrInit()
392 (void) ddi_intr_free(umdevice->pIntrBlock[0]); in bnxIntrInit()
393 kmem_free(umdevice->pIntrBlock, sizeof (ddi_intr_handle_t)); in bnxIntrInit()
397 if ((rc = ddi_intr_get_pri(umdevice->pIntrBlock[0], in bnxIntrInit()
398 &umdevice->intrPriority)) != DDI_SUCCESS) { in bnxIntrInit()
400 umdevice->dev_name, rc); in bnxIntrInit()
401 (void) ddi_intr_free(umdevice->pIntrBlock[0]); in bnxIntrInit()
402 kmem_free(umdevice->pIntrBlock, sizeof (ddi_intr_handle_t)); in bnxIntrInit()
406 if (umdevice->intrPriority >= ddi_intr_get_hilevel_pri()) { in bnxIntrInit()
408 umdevice->dev_name); in bnxIntrInit()
409 (void) ddi_intr_free(umdevice->pIntrBlock[0]); in bnxIntrInit()
410 kmem_free(umdevice->pIntrBlock, sizeof (ddi_intr_handle_t)); in bnxIntrInit()
414 if ((rc = ddi_intr_add_handler(umdevice->pIntrBlock[0], bnx_intr_1lvl, in bnxIntrInit()
415 (caddr_t)umdevice, NULL)) != DDI_SUCCESS) { in bnxIntrInit()
417 "handler (%d)", umdevice->dev_name, rc); in bnxIntrInit()
418 (void) ddi_intr_free(umdevice->pIntrBlock[0]); in bnxIntrInit()
419 kmem_free(umdevice->pIntrBlock, sizeof (ddi_intr_handle_t)); in bnxIntrInit()
424 mutex_init(&umdevice->intr_mutex, NULL, MUTEX_DRIVER, in bnxIntrInit()
425 DDI_INTR_PRI(umdevice->intrPriority)); in bnxIntrInit()
427 umdevice->lm_dev.vars.interrupt_mode = in bnxIntrInit()
428 (umdevice->intrType == DDI_INTR_TYPE_FIXED) ? in bnxIntrInit()
434 bnxIntrFini(um_device_t *umdevice) in bnxIntrFini() argument
438 if ((ret = ddi_intr_disable(umdevice->pIntrBlock[0])) != 0) { in bnxIntrFini()
439 dev_err(umdevice->os_param.dip, CE_WARN, in bnxIntrFini()
442 if ((ret = ddi_intr_remove_handler(umdevice->pIntrBlock[0])) != 0) { in bnxIntrFini()
443 dev_err(umdevice->os_param.dip, CE_WARN, in bnxIntrFini()
446 if ((ret = ddi_intr_free(umdevice->pIntrBlock[0])) != 0) { in bnxIntrFini()
447 dev_err(umdevice->os_param.dip, CE_WARN, in bnxIntrFini()
450 kmem_free(umdevice->pIntrBlock, sizeof (ddi_intr_handle_t)); in bnxIntrFini()
452 umdevice->pIntrBlock = NULL; in bnxIntrFini()
454 mutex_destroy(&umdevice->intr_mutex); in bnxIntrFini()