Lines Matching refs:cam_sc
94 mpi3mr_release_simq_reinit(struct mpi3mr_cam_softc *cam_sc);
946 mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) in mpi3mr_action_scsiio() argument
956 sc = cam_sc->sc; in mpi3mr_action_scsiio()
966 KASSERT(csio->ccb_h.target_id < cam_sc->maxtargets, in mpi3mr_action_scsiio()
980 targ = mpi3mr_find_target_by_per_id(cam_sc, csio->ccb_h.target_id); in mpi3mr_action_scsiio()
1057 if ((cam_sc->flags & MPI3MRSAS_QUEUE_FROZEN) == 0) { in mpi3mr_action_scsiio()
1058 xpt_freeze_simq(cam_sc->sim, 1); in mpi3mr_action_scsiio()
1059 cam_sc->flags |= MPI3MRSAS_QUEUE_FROZEN; in mpi3mr_action_scsiio()
1284 struct mpi3mr_cam_softc *cam_sc; in mpi3mr_cam_poll() local
1289 cam_sc = cam_sim_softc(sim); in mpi3mr_cam_poll()
1290 sc = cam_sc->sc; in mpi3mr_cam_poll()
1292 mpi3mr_dprint(cam_sc->sc, MPI3MR_TRACE, "func: %s line: %d is called\n", in mpi3mr_cam_poll()
1306 struct mpi3mr_cam_softc *cam_sc; in mpi3mr_cam_action() local
1309 cam_sc = cam_sim_softc(sim); in mpi3mr_cam_action()
1311 mpi3mr_dprint(cam_sc->sc, MPI3MR_TRACE, "ccb func_code 0x%x target id: 0x%x\n", in mpi3mr_cam_action()
1314 mtx_assert(&cam_sc->sc->mpi3mr_mtx, MA_OWNED); in mpi3mr_cam_action()
1326 cpi->max_target = cam_sc->maxtargets - 1; in mpi3mr_cam_action()
1333 cpi->initiator_id = cam_sc->maxtargets; in mpi3mr_cam_action()
1349 targ = mpi3mr_find_target_by_per_id(cam_sc, ccb->ccb_h.target_id); in mpi3mr_cam_action()
1356 mpi3mr_dprint(cam_sc->sc, MPI3MR_XINFO, in mpi3mr_cam_action()
1375 KASSERT(cts->ccb_h.target_id < cam_sc->maxtargets, in mpi3mr_cam_action()
1378 targ = mpi3mr_find_target_by_per_id(cam_sc, cts->ccb_h.target_id); in mpi3mr_cam_action()
1381 mpi3mr_dprint(cam_sc->sc, MPI3MR_TRACE, "Device with target ID: 0x%x does not exist\n", in mpi3mr_cam_action()
1427 mpi3mr_dprint(cam_sc->sc, MPI3MR_INFO, "mpi3mr_action " in mpi3mr_cam_action()
1433 mpi3mr_dprint(cam_sc->sc, MPI3MR_INFO, "mpi3mr_action faking success " in mpi3mr_cam_action()
1438 mpi3mr_action_scsiio(cam_sc, ccb); in mpi3mr_cam_action()
1448 mpi3mr_startup_increment(struct mpi3mr_cam_softc *cam_sc) in mpi3mr_startup_increment() argument
1450 if ((cam_sc->flags & MPI3MRSAS_IN_STARTUP) != 0) { in mpi3mr_startup_increment()
1451 if (cam_sc->startup_refcount++ == 0) { in mpi3mr_startup_increment()
1453 mpi3mr_dprint(cam_sc->sc, MPI3MR_XINFO, in mpi3mr_startup_increment()
1457 mpi3mr_dprint(cam_sc->sc, MPI3MR_XINFO, "%s refcount %u\n", __func__, in mpi3mr_startup_increment()
1458 cam_sc->startup_refcount); in mpi3mr_startup_increment()
1463 mpi3mr_release_simq_reinit(struct mpi3mr_cam_softc *cam_sc) in mpi3mr_release_simq_reinit() argument
1465 if (cam_sc->flags & MPI3MRSAS_QUEUE_FROZEN) { in mpi3mr_release_simq_reinit()
1466 cam_sc->flags &= ~MPI3MRSAS_QUEUE_FROZEN; in mpi3mr_release_simq_reinit()
1467 xpt_release_simq(cam_sc->sim, 1); in mpi3mr_release_simq_reinit()
1468 mpi3mr_dprint(cam_sc->sc, MPI3MR_INFO, "Unfreezing SIM queue\n"); in mpi3mr_release_simq_reinit()
1475 struct mpi3mr_cam_softc *cam_sc = sc->cam_sc; in mpi3mr_rescan_target() local
1480 pathid = cam_sim_path(cam_sc->sim); in mpi3mr_rescan_target()
1512 mpi3mr_startup_decrement(struct mpi3mr_cam_softc *cam_sc) in mpi3mr_startup_decrement() argument
1514 if ((cam_sc->flags & MPI3MRSAS_IN_STARTUP) != 0) { in mpi3mr_startup_decrement()
1515 if (--cam_sc->startup_refcount == 0) { in mpi3mr_startup_decrement()
1519 mpi3mr_dprint(cam_sc->sc, MPI3MR_XINFO, in mpi3mr_startup_decrement()
1521 cam_sc->flags &= ~MPI3MRSAS_IN_STARTUP; in mpi3mr_startup_decrement()
1522 xpt_release_simq(cam_sc->sim, 1); in mpi3mr_startup_decrement()
1525 mpi3mr_dprint(cam_sc->sc, MPI3MR_XINFO, "%s refcount %u\n", __func__, in mpi3mr_startup_decrement()
1526 cam_sc->startup_refcount); in mpi3mr_startup_decrement()
1550 while ((fw_event = TAILQ_FIRST(&sc->cam_sc->ev_queue)) != NULL) { in mpi3mr_freeup_events()
1551 TAILQ_REMOVE(&sc->cam_sc->ev_queue, fw_event, ev_link); in mpi3mr_freeup_events()
1645 target = mpi3mr_find_target_by_dev_handle(sc->cam_sc, handle); in mpi3mr_process_sastopochg_evt()
1672 mpi3mr_startup_decrement(sc->cam_sc); in mpi3mr_process_sastopochg_evt()
1772 target = mpi3mr_find_target_by_dev_handle(sc->cam_sc, handle); in mpi3mr_process_pcietopochg_evt()
1800 mpi3mr_startup_decrement(sc->cam_sc); in mpi3mr_process_pcietopochg_evt()
1811 mpi3mr_startup_increment(sc->cam_sc); in mpi3mr_add_device()
1812 target = mpi3mr_find_target_by_per_id(sc->cam_sc, per_id); in mpi3mr_add_device()
1835 mpi3mr_startup_decrement(sc->cam_sc); in mpi3mr_add_device()
1847 target = mpi3mr_find_target_by_dev_handle(sc->cam_sc, handle); in mpi3mr_remove_device_from_os()
1892 TAILQ_REMOVE(&sc->cam_sc->tgt_list, target, tgt_next); in mpi3mr_remove_device_from_list()
1944 tgtdev = mpi3mr_find_target_by_dev_handle(sc->cam_sc, dev_handle); in mpi3mr_devstatuschg_evt_bh()
1983 tgtdev = mpi3mr_find_target_by_dev_handle(sc->cam_sc, dev_handle); in mpi3mr_devinfochg_evt_bh()
2072 while ((fw_event = TAILQ_FIRST(&sc->cam_sc->ev_queue)) != NULL) { in mpi3mr_firmware_event_work()
2073 TAILQ_REMOVE(&sc->cam_sc->ev_queue, fw_event, ev_link); in mpi3mr_firmware_event_work()
2094 struct mpi3mr_cam_softc *cam_sc; in mpi3mr_cam_attach() local
2100 cam_sc = malloc(sizeof(struct mpi3mr_cam_softc), M_MPI3MR, M_WAITOK|M_ZERO); in mpi3mr_cam_attach()
2101 cam_sc->maxtargets = sc->facts.max_perids + 1; in mpi3mr_cam_attach()
2103 TAILQ_INIT(&cam_sc->tgt_list); in mpi3mr_cam_attach()
2105 sc->cam_sc = cam_sc; in mpi3mr_cam_attach()
2106 cam_sc->sc = sc; in mpi3mr_cam_attach()
2110 if ((cam_sc->devq = cam_simq_alloc(reqs)) == NULL) { in mpi3mr_cam_attach()
2117 cam_sc->sim = cam_sim_alloc(mpi3mr_cam_action, mpi3mr_cam_poll, "mpi3mr", cam_sc, in mpi3mr_cam_attach()
2118 unit, &sc->mpi3mr_mtx, reqs, reqs, cam_sc->devq); in mpi3mr_cam_attach()
2119 if (cam_sc->sim == NULL) { in mpi3mr_cam_attach()
2125 TAILQ_INIT(&cam_sc->ev_queue); in mpi3mr_cam_attach()
2128 TASK_INIT(&cam_sc->ev_task, 0, mpi3mr_firmware_event_work, sc); in mpi3mr_cam_attach()
2129 cam_sc->ev_tq = taskqueue_create("mpi3mr_taskq", M_NOWAIT | M_ZERO, in mpi3mr_cam_attach()
2130 taskqueue_thread_enqueue, &cam_sc->ev_tq); in mpi3mr_cam_attach()
2131 taskqueue_start_threads(&cam_sc->ev_tq, 1, PRIBIO, "%s taskq", in mpi3mr_cam_attach()
2141 if ((error = xpt_bus_register(cam_sc->sim, sc->mpi3mr_dev, 0)) != 0) { in mpi3mr_cam_attach()
2153 cam_sc->flags |= MPI3MRSAS_IN_STARTUP | MPI3MRSAS_IN_DISCOVERY; in mpi3mr_cam_attach()
2154 sc->cam_sc->startup_refcount = 0; in mpi3mr_cam_attach()
2155 mpi3mr_startup_increment(cam_sc); in mpi3mr_cam_attach()
2157 callout_init(&cam_sc->discovery_callout, 1 /*mpsafe*/); in mpi3mr_cam_attach()
2163 status = xpt_create_path(&cam_sc->path, /*periph*/NULL, in mpi3mr_cam_attach()
2164 cam_sim_path(sc->cam_sc->sim), CAM_TARGET_WILDCARD, in mpi3mr_cam_attach()
2169 cam_sc->path = NULL; in mpi3mr_cam_attach()
2192 struct mpi3mr_cam_softc *cam_sc; in mpi3mr_cam_detach() local
2196 if (sc->cam_sc == NULL) in mpi3mr_cam_detach()
2199 cam_sc = sc->cam_sc; in mpi3mr_cam_detach()
2208 if (cam_sc->ev_tq != NULL) in mpi3mr_cam_detach()
2209 taskqueue_free(cam_sc->ev_tq); in mpi3mr_cam_detach()
2213 while (cam_sc->startup_refcount != 0) in mpi3mr_cam_detach()
2214 mpi3mr_startup_decrement(cam_sc); in mpi3mr_cam_detach()
2217 if (cam_sc->path != NULL) { in mpi3mr_cam_detach()
2218 xpt_free_path(cam_sc->path); in mpi3mr_cam_detach()
2219 cam_sc->path = NULL; in mpi3mr_cam_detach()
2222 if (cam_sc->flags & MPI3MRSAS_IN_STARTUP) in mpi3mr_cam_detach()
2223 xpt_release_simq(cam_sc->sim, 1); in mpi3mr_cam_detach()
2225 if (cam_sc->sim != NULL) { in mpi3mr_cam_detach()
2226 xpt_bus_deregister(cam_sim_path(cam_sc->sim)); in mpi3mr_cam_detach()
2227 cam_sim_free(cam_sc->sim, FALSE); in mpi3mr_cam_detach()
2232 if (cam_sc->devq != NULL) in mpi3mr_cam_detach()
2233 cam_simq_free(cam_sc->devq); in mpi3mr_cam_detach()
2237 TAILQ_FOREACH(target, &cam_sc->tgt_list, tgt_next) { in mpi3mr_cam_detach()
2238 TAILQ_REMOVE(&sc->cam_sc->tgt_list, target, tgt_next); in mpi3mr_cam_detach()
2250 free(cam_sc, M_MPI3MR); in mpi3mr_cam_detach()
2251 sc->cam_sc = NULL; in mpi3mr_cam_detach()