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