Lines Matching refs:pptr

34 static void pmcs_ds_operational(pmcs_phy_t *pptr, pmcs_xscsi_t *tgt);
224 pmcs_ds_operational(pmcs_phy_t *pptr, pmcs_xscsi_t *tgt) in pmcs_ds_operational() argument
228 ASSERT(pptr); in pmcs_ds_operational()
229 pwp = pptr->pwp; in pmcs_ds_operational()
234 pptr->ds_recovery_retries = 0; in pmcs_ds_operational()
236 if ((pptr->ds_prev_good_recoveries == 0) || in pmcs_ds_operational()
237 (ddi_get_lbolt() - pptr->last_good_recovery > in pmcs_ds_operational()
239 pptr->last_good_recovery = ddi_get_lbolt(); in pmcs_ds_operational()
240 pptr->ds_prev_good_recoveries = 1; in pmcs_ds_operational()
241 } else if (ddi_get_lbolt() < pptr->last_good_recovery + in pmcs_ds_operational()
243 pptr->ds_prev_good_recoveries++; in pmcs_ds_operational()
245 pmcs_handle_ds_recovery_error(pptr, tgt, pwp, __func__, in pmcs_ds_operational()
250 if (!pptr->dead) { in pmcs_ds_operational()
264 pmcs_phy_t *pptr, *pnext, *pchild; in pmcs_dev_state_recovery() local
278 pptr = pwp->root_phys; in pmcs_dev_state_recovery()
281 pptr = phyp; in pmcs_dev_state_recovery()
284 while (pptr) { in pmcs_dev_state_recovery()
289 pmcs_lock_phy(pptr); in pmcs_dev_state_recovery()
290 pchild = pptr->children; in pmcs_dev_state_recovery()
291 pnext = pptr->sibling; in pmcs_dev_state_recovery()
292 pmcs_unlock_phy(pptr); in pmcs_dev_state_recovery()
299 pmcs_lock_phy(pptr); in pmcs_dev_state_recovery()
301 if (pptr->dead || !pptr->valid_device_id) { in pmcs_dev_state_recovery()
305 if (pptr->iport && (pptr->iport->ua_state != UA_ACTIVE)) { in pmcs_dev_state_recovery()
306 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, pptr->target, in pmcs_dev_state_recovery()
308 __func__, pptr->path); in pmcs_dev_state_recovery()
312 tgt = pptr->target; in pmcs_dev_state_recovery()
324 if (pptr->prev_recovery) { in pmcs_dev_state_recovery()
325 if (ddi_get_lbolt() - pptr->prev_recovery < in pmcs_dev_state_recovery()
327 pmcs_prt(pwp, PMCS_PRT_DEBUG2, pptr, tgt, in pmcs_dev_state_recovery()
330 __func__, pptr->path); in pmcs_dev_state_recovery()
337 pptr->prev_recovery = ddi_get_lbolt(); in pmcs_dev_state_recovery()
342 rc = pmcs_get_dev_state(pwp, pptr, tgt, &ds); in pmcs_dev_state_recovery()
344 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_dev_state_recovery()
347 __func__, pptr->path, rc); in pmcs_dev_state_recovery()
349 pmcs_handle_ds_recovery_error(pptr, tgt, pwp, in pmcs_dev_state_recovery()
357 pmcs_ds_operational(pptr, tgt); in pmcs_dev_state_recovery()
363 pmcs_prt(pwp, PMCS_PRT_DEBUG_DEV_STATE, pptr, tgt, in pmcs_dev_state_recovery()
372 rc = pmcs_send_err_recovery_cmd(pwp, ds, pptr, tgt); in pmcs_dev_state_recovery()
373 pmcs_prt(pwp, PMCS_PRT_DEBUG_DEV_STATE, pptr, tgt, in pmcs_dev_state_recovery()
379 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_dev_state_recovery()
382 __func__, pptr->path, rc); in pmcs_dev_state_recovery()
384 pmcs_handle_ds_recovery_error(pptr, tgt, pwp, in pmcs_dev_state_recovery()
394 pmcs_prt(pwp, PMCS_PRT_DEBUG_DEV_STATE, pptr, tgt, in pmcs_dev_state_recovery()
396 pptr->path); in pmcs_dev_state_recovery()
404 rc = pmcs_reset_phy(pwp, pptr, PMCS_PHYOP_HARD_RESET); in pmcs_dev_state_recovery()
409 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_dev_state_recovery()
411 __func__, pptr->path, rc); in pmcs_dev_state_recovery()
413 pmcs_handle_ds_recovery_error(pptr, tgt, pwp, in pmcs_dev_state_recovery()
422 if (pptr->abort_all_start) { in pmcs_dev_state_recovery()
423 while (pptr->abort_all_start) { in pmcs_dev_state_recovery()
424 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_dev_state_recovery()
426 "PHY 0x%p", __func__, (void *)pptr); in pmcs_dev_state_recovery()
427 cv_wait(&pptr->abort_all_cv, &pptr->phy_lock); in pmcs_dev_state_recovery()
433 rc = pmcs_abort(pwp, pptr, pptr->device_id, 1, 1); in pmcs_dev_state_recovery()
438 pptr->abort_pending = 1; in pmcs_dev_state_recovery()
439 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_dev_state_recovery()
441 __func__, pptr->path, rc); in pmcs_dev_state_recovery()
443 pmcs_handle_ds_recovery_error(pptr, tgt, in pmcs_dev_state_recovery()
453 pmcs_prt(pwp, PMCS_PRT_DEBUG_DEV_STATE, pptr, tgt, in pmcs_dev_state_recovery()
455 __func__, (void *)pptr, (void *)tgt); in pmcs_dev_state_recovery()
456 rc = pmcs_set_dev_state(pwp, pptr, tgt, in pmcs_dev_state_recovery()
459 pmcs_ds_operational(pptr, tgt); in pmcs_dev_state_recovery()
461 pmcs_prt(pwp, PMCS_PRT_DEBUG_DEV_STATE, pptr, tgt, in pmcs_dev_state_recovery()
465 pmcs_handle_ds_recovery_error(pptr, tgt, pwp, in pmcs_dev_state_recovery()
475 pmcs_unlock_phy(pptr); in pmcs_dev_state_recovery()
476 pptr = pnext; in pmcs_dev_state_recovery()
610 pmcs_phy_t *pptr = pwrk->phy; in pmcs_start_ssp_event_recovery() local
617 if (pptr) { in pmcs_start_ssp_event_recovery()
618 pmcs_dec_phy_ref_count(pptr); in pmcs_start_ssp_event_recovery()
620 pptr = NULL; in pmcs_start_ssp_event_recovery()
626 if (pptr == NULL) { in pmcs_start_ssp_event_recovery()
638 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_start_ssp_event_recovery()
647 pmcs_lock_phy(pptr); in pmcs_start_ssp_event_recovery()
655 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_start_ssp_event_recovery()
657 __func__, pptr->path); in pmcs_start_ssp_event_recovery()
661 pptr->abort_pending = 1; in pmcs_start_ssp_event_recovery()
666 pmcs_unlock_phy(pptr); in pmcs_start_ssp_event_recovery()
688 pmcs_unlock_phy(pptr); in pmcs_start_ssp_event_recovery()
693 pmcs_prt(pwp, PMCS_PRT_DEBUG1, pptr, NULL, in pmcs_start_ssp_event_recovery()
698 pmcs_unlock_phy(pptr); in pmcs_start_ssp_event_recovery()
709 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_start_ssp_event_recovery()
715 pmcs_unlock_phy(pptr); in pmcs_start_ssp_event_recovery()
730 pmcs_unlock_phy(pptr); in pmcs_start_ssp_event_recovery()
731 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_start_ssp_event_recovery()
750 pmcs_phy_t *pptr = pwrk->phy; in pmcs_tgt_event_recovery() local
761 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_tgt_event_recovery()
773 rv = pmcs_ssp_tmf(pwp, pptr, SAS_QUERY_TASK, htag, in pmcs_tgt_event_recovery()
780 pmcs_prt(pwp, PMCS_PRT_DEBUG, pptr, tgt, in pmcs_tgt_event_recovery()
792 if (pmcs_ssp_tmf(pwp, pptr, SAS_ABORT_TASK, htag, in pmcs_tgt_event_recovery()
796 (void) pmcs_abort(pwp, pptr, htag, 0, 1); in pmcs_tgt_event_recovery()
809 pmcs_start_dev_state_recovery(tgt, pptr); in pmcs_tgt_event_recovery()