Lines Matching refs:wlp
1115 dca_initworklist(dca_t *dca, dca_worklist_t *wlp) in dca_initworklist() argument
1118 int reqprealloc = wlp->dwl_hiwater + (MAXWORK * MAXREQSPERMCR); in dca_initworklist()
1123 mutex_init(&wlp->dwl_lock, NULL, MUTEX_DRIVER, dca->dca_icookie); in dca_initworklist()
1124 mutex_init(&wlp->dwl_freereqslock, NULL, MUTEX_DRIVER, in dca_initworklist()
1126 mutex_init(&wlp->dwl_freelock, NULL, MUTEX_DRIVER, dca->dca_icookie); in dca_initworklist()
1127 cv_init(&wlp->dwl_cv, NULL, CV_DRIVER, NULL); in dca_initworklist()
1129 mutex_enter(&wlp->dwl_lock); in dca_initworklist()
1131 dca_initq(&wlp->dwl_freereqs); in dca_initworklist()
1132 dca_initq(&wlp->dwl_waitq); in dca_initworklist()
1133 dca_initq(&wlp->dwl_freework); in dca_initworklist()
1134 dca_initq(&wlp->dwl_runq); in dca_initworklist()
1141 mutex_exit(&wlp->dwl_lock); in dca_initworklist()
1144 workp->dw_wlp = wlp; in dca_initworklist()
1147 mutex_exit(&wlp->dwl_lock); in dca_initworklist()
1157 reqp->dr_wlp = wlp; in dca_initworklist()
1166 dca_worklist_t *wlp; in dca_init() local
1175 wlp = WORKLIST(dca, MCR1); in dca_init()
1176 (void) sprintf(wlp->dwl_name, "dca%d:mcr1", in dca_init()
1178 wlp->dwl_lowater = ddi_getprop(DDI_DEV_T_ANY, in dca_init()
1181 wlp->dwl_hiwater = ddi_getprop(DDI_DEV_T_ANY, in dca_init()
1184 wlp->dwl_reqspermcr = min(ddi_getprop(DDI_DEV_T_ANY, in dca_init()
1187 wlp->dwl_dca = dca; in dca_init()
1188 wlp->dwl_mcr = MCR1; in dca_init()
1189 if (dca_initworklist(dca, wlp) != DDI_SUCCESS) { in dca_init()
1196 wlp = WORKLIST(dca, MCR2); in dca_init()
1197 (void) sprintf(wlp->dwl_name, "dca%d:mcr2", in dca_init()
1199 wlp->dwl_lowater = ddi_getprop(DDI_DEV_T_ANY, in dca_init()
1202 wlp->dwl_hiwater = ddi_getprop(DDI_DEV_T_ANY, in dca_init()
1205 wlp->dwl_reqspermcr = min(ddi_getprop(DDI_DEV_T_ANY, in dca_init()
1208 wlp->dwl_dca = dca; in dca_init()
1209 wlp->dwl_mcr = MCR2; in dca_init()
1210 if (dca_initworklist(dca, wlp) != DDI_SUCCESS) { in dca_init()
1230 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_uninit() local
1238 mutex_enter(&wlp->dwl_lock); in dca_uninit()
1242 mutex_exit(&wlp->dwl_lock); in dca_uninit()
1247 mutex_destroy(&wlp->dwl_lock); in dca_uninit()
1248 mutex_destroy(&wlp->dwl_freereqslock); in dca_uninit()
1249 mutex_destroy(&wlp->dwl_freelock); in dca_uninit()
1250 cv_destroy(&wlp->dwl_cv); in dca_uninit()
1251 wlp->dwl_prov = NULL; in dca_uninit()
1827 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_getwork() local
1830 mutex_enter(&wlp->dwl_freelock); in dca_getwork()
1831 workp = (dca_work_t *)dca_dequeue(&wlp->dwl_freework); in dca_getwork()
1832 mutex_exit(&wlp->dwl_freelock); in dca_getwork()
1856 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_getreq() local
1859 mutex_enter(&wlp->dwl_freereqslock); in dca_getreq()
1860 reqp = (dca_request_t *)dca_dequeue(&wlp->dwl_freereqs); in dca_getreq()
1861 mutex_exit(&wlp->dwl_freereqslock); in dca_getreq()
1871 reqp->dr_wlp = wlp; in dca_getreq()
2092 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_start() local
2094 mutex_enter(&wlp->dwl_lock); in dca_start()
2106 mutex_exit(&wlp->dwl_lock); in dca_start()
2110 dca_enqueue(&wlp->dwl_waitq, (dca_listnode_t *)reqp); in dca_start()
2111 wlp->dwl_count++; in dca_start()
2112 wlp->dwl_lastsubmit = ddi_get_lbolt(); in dca_start()
2113 reqp->dr_wlp = wlp; in dca_start()
2115 if ((wlp->dwl_count == wlp->dwl_hiwater) && (wlp->dwl_busy == 0)) { in dca_start()
2118 wlp->dwl_flowctl++; in dca_start()
2119 wlp->dwl_busy = 1; in dca_start()
2121 crypto_prov_notify(wlp->dwl_prov, CRYPTO_PROVIDER_BUSY); in dca_start()
2127 if (wlp->dwl_count >= wlp->dwl_reqspermcr) { in dca_start()
2129 } else if (!wlp->dwl_schedtid) { in dca_start()
2131 wlp->dwl_schedtid = timeout(dca_schedtimeout, in dca_start()
2132 (void *)wlp, drv_usectohz(MSEC)); in dca_start()
2138 mutex_exit(&wlp->dwl_lock); in dca_start()
2146 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_schedule() local
2151 ASSERT(mutex_owned(&wlp->dwl_lock)); in dca_schedule()
2156 if (wlp->dwl_drain || (dca->dca_flags & DCA_FAILED)) { in dca_schedule()
2183 if ((wlp->dwl_count < wlp->dwl_reqspermcr) && in dca_schedule()
2184 (ddi_get_lbolt() < (wlp->dwl_lastsubmit + in dca_schedule()
2187 if (wlp->dwl_schedtid == 0) { in dca_schedule()
2188 wlp->dwl_schedtid = timeout(dca_schedtimeout, in dca_schedule()
2189 (void *)wlp, drv_usectohz(MSEC)); in dca_schedule()
2211 while (nreqs < wlp->dwl_reqspermcr) { in dca_schedule()
2214 reqp = (dca_request_t *)dca_dequeue(&wlp->dwl_waitq); in dca_schedule()
2222 wlp->dwl_count--; in dca_schedule()
2223 if ((wlp->dwl_count == wlp->dwl_lowater) && in dca_schedule()
2224 (wlp->dwl_busy)) { in dca_schedule()
2225 wlp->dwl_busy = 0; in dca_schedule()
2226 crypto_prov_notify(wlp->dwl_prov, in dca_schedule()
2291 wlp->dwl_submit++; in dca_schedule()
2317 dca_enqueue(&wlp->dwl_runq, (dca_listnode_t *)workp); in dca_schedule()
2330 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_reclaim() local
2336 DBG(dca, DRECLAIM, "worklist = 0x%p (MCR%d)", wlp, mcr); in dca_reclaim()
2337 ASSERT(mutex_owned(&wlp->dwl_lock)); in dca_reclaim()
2346 workp = (dca_work_t *)dca_peekqueue(&wlp->dwl_runq); in dca_reclaim()
2373 if (wlp->dwl_drain && QEMPTY(&wlp->dwl_runq)) { in dca_reclaim()
2374 cv_signal(&wlp->dwl_cv); in dca_reclaim()
2378 for (i = 0; i < wlp->dwl_reqspermcr; i++) { in dca_reclaim()
2391 mutex_exit(&wlp->dwl_lock); in dca_reclaim()
2393 for (i = 0; i < wlp->dwl_reqspermcr; i++) { in dca_reclaim()
2410 mutex_enter(&wlp->dwl_lock); in dca_reclaim()
2521 dca_worklist_t *wlp; in dca_failure() local
2524 wlp = WORKLIST(dca, mcr); in dca_failure()
2526 if (wlp == NULL || wlp->dwl_waitq.dl_prev == NULL) { in dca_failure()
2532 have_mutex = mutex_tryenter(&wlp->dwl_lock); in dca_failure()
2533 workp = (dca_work_t *)dca_dequeue(&wlp->dwl_runq); in dca_failure()
2536 mutex_exit(&wlp->dwl_lock); in dca_failure()
2539 mutex_exit(&wlp->dwl_lock); in dca_failure()
2544 for (i = 0; i < wlp->dwl_reqspermcr; i++) { in dca_failure()
2552 mutex_enter(&wlp->dwl_lock); in dca_failure()
2556 if (wlp->dwl_drain && QEMPTY(&wlp->dwl_runq)) { in dca_failure()
2557 cv_signal(&wlp->dwl_cv); in dca_failure()
2566 mutex_exit(&wlp->dwl_lock); in dca_failure()
2579 dca_worklist_t *wlp = (dca_worklist_t *)arg; in dca_schedtimeout() local
2580 mutex_enter(&wlp->dwl_lock); in dca_schedtimeout()
2581 wlp->dwl_schedtid = 0; in dca_schedtimeout()
2582 dca_schedule(wlp->dwl_dca, wlp->dwl_mcr); in dca_schedtimeout()
2583 mutex_exit(&wlp->dwl_lock); in dca_schedtimeout()
2598 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_jobtimeout() local
2602 mutex_enter(&wlp->dwl_lock); in dca_jobtimeout()
2605 workp = (dca_work_t *)dca_peekqueue(&wlp->dwl_runq); in dca_jobtimeout()
2608 mutex_exit(&wlp->dwl_lock); in dca_jobtimeout()
2614 mutex_exit(&wlp->dwl_lock); in dca_jobtimeout()
2624 mutex_exit(&wlp->dwl_lock); in dca_jobtimeout()
2657 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_rejectjobs() local
2660 if (wlp == NULL || wlp->dwl_waitq.dl_prev == NULL) { in dca_rejectjobs()
2663 have_mutex = mutex_tryenter(&wlp->dwl_lock); in dca_rejectjobs()
2665 reqp = (dca_request_t *)dca_unqueue(&wlp->dwl_waitq); in dca_rejectjobs()
2670 wlp->dwl_count--; in dca_rejectjobs()
2671 if ((wlp->dwl_count == wlp->dwl_lowater) && in dca_rejectjobs()
2672 (wlp->dwl_busy)) { in dca_rejectjobs()
2673 wlp->dwl_busy = 0; in dca_rejectjobs()
2674 crypto_prov_notify(wlp->dwl_prov, in dca_rejectjobs()
2677 mutex_exit(&wlp->dwl_lock); in dca_rejectjobs()
2681 mutex_enter(&wlp->dwl_lock); in dca_rejectjobs()
2684 mutex_exit(&wlp->dwl_lock); in dca_rejectjobs()
2696 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_drain() local
2698 mutex_enter(&wlp->dwl_lock); in dca_drain()
2699 wlp->dwl_drain = 1; in dca_drain()
2702 if (!QEMPTY(&wlp->dwl_runq)) { in dca_drain()
2703 (void) cv_reltimedwait(&wlp->dwl_cv, &wlp->dwl_lock, in dca_drain()
2706 if (!QEMPTY(&wlp->dwl_runq)) { in dca_drain()
2708 mutex_exit(&wlp->dwl_lock); in dca_drain()
2715 tid = wlp->dwl_schedtid; in dca_drain()
2716 mutex_exit(&wlp->dwl_lock); in dca_drain()
2727 mutex_exit(&wlp->dwl_lock); in dca_drain()
2739 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_undrain() local
2740 mutex_enter(&wlp->dwl_lock); in dca_undrain()
2741 wlp->dwl_drain = 0; in dca_undrain()
2743 mutex_exit(&wlp->dwl_lock); in dca_undrain()