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