Lines Matching refs:target

83  *  2- 7( 6): target
182 struct sbp_target *target;
343 fwdev = sdev->target->fwdev;
344 device_printf(sdev->target->sbp->fd.dev,
357 device_printf(sdev->target->sbp->fd.dev,
368 int target;
383 int bus, i, target=-1;
393 w[wired[i].target] = 1;
396 target = wired[i].target;
399 if (target >= 0) {
400 if (target < SBP_NUM_TARGETS &&
401 sbp->targets[target].fwdev == NULL)
402 return (target);
404 "target %d is not free for %08x:%08x\n",
405 target, fwdev->eui.hi, fwdev->eui.lo);
406 target = -1;
408 /* non-wired target */
411 target = i;
415 return target;
419 sbp_alloc_lun(struct sbp_target *target)
427 sbp = target->sbp;
428 crom_init_context(&cc, target->fwdev->csrrom);
437 printf("target %d lun %d found\n", target->target_id, lun);
444 device_printf(target->sbp->fd.dev, "%d no LUN found\n",
445 target->target_id);
452 for (lun = 0; lun < target->num_lun; lun++) {
453 sdev = target->luns[lun];
461 target->luns[lun] = NULL;
466 if (maxlun != target->num_lun) {
467 newluns = (struct sbp_dev **) realloc(target->luns,
473 newluns = target->luns;
474 maxlun = target->num_lun;
481 if (maxlun > target->num_lun)
482 bzero(&newluns[target->num_lun],
484 (maxlun - target->num_lun));
486 target->luns = newluns;
487 target->num_lun = maxlun;
490 crom_init_context(&cc, target->fwdev->csrrom);
503 sdev = target->luns[lun];
511 target->luns[lun] = sdev;
513 sdev->target = target;
519 device_get_nameunit(sdev->target->sbp->fd.dev),
520 sdev->target->target_id,
537 target->luns[lun] = NULL;
568 for (lun = 0; lun < target->num_lun; lun++) {
569 sdev = target->luns[lun];
573 target->luns[lun] = NULL;
582 struct sbp_target *target;
594 /* new target */
595 target = &sbp->targets[i];
596 target->fwdev = fwdev;
597 target->target_id = i;
600 crom_init_context(&cc, target->fwdev->csrrom);
604 target->fwdev = NULL;
607 target->mgm_hi = 0xffff;
608 target->mgm_lo = 0xf0000000 | (reg->val << 2);
609 target->mgm_ocb_cur = NULL;
611 printf("target:%d mgm_port: %x\n", i, target->mgm_lo);
613 STAILQ_INIT(&target->xferlist);
614 target->n_xfer = 0;
615 STAILQ_INIT(&target->mgm_ocb_queue);
616 callout_init_mtx(&target->mgm_ocb_timeout, &sbp->mtx, 0);
617 callout_init_mtx(&target->scan_callout, &sbp->mtx, 0);
619 target->luns = NULL;
620 target->num_lun = 0;
621 return target;
634 fwdev = sdev->target->fwdev;
661 SBP_LOCK_ASSERT(sdev->target->sbp);
673 timevalsub(&delta, &sdev->target->sbp->last_busreset);
691 sbp_probe_target(struct sbp_target *target)
693 struct sbp_softc *sbp = target->sbp;
697 alive = SBP_FWDEV_ALIVE(target->fwdev);
700 __func__, target->target_id,
704 sbp_alloc_lun(target);
707 for (i=0; i < target->num_lun; i++) {
708 sdev = target->luns[i];
724 /* new or revived target */
741 device_printf(sbp->fd.dev, "%s: lost target\n",
751 target->luns[i] = NULL;
788 struct sbp_target *target;
806 target = &sbp->targets[i];
807 if (target->fwdev == NULL)
811 if (target->fwdev == fwdev)
815 sbp_cam_detach_target(target);
816 sbp_free_target(target);
830 target = &sbp->targets[i];
831 if (target->fwdev == fwdev) {
832 /* known target */
838 /* new target */
839 target = sbp_alloc_target(sbp, fwdev);
840 if (target == NULL)
848 * It is safe to drop the lock here as the target is already
850 * And the target is not yet exposed, so there should not be
855 sbp_probe_target(target);
857 if (target->num_lun == 0)
858 sbp_free_target(target);
874 device_printf(sdev->target->sbp->fd.dev,"%s\n", __func__);
877 SBP_LOCK(sdev->target->sbp);
878 STAILQ_INSERT_TAIL(&sdev->target->sbp->fwb.xferlist, xfer, link);
879 SBP_UNLOCK(sdev->target->sbp);
891 SBP_LOCK_ASSERT(sdev->target->sbp);
892 STAILQ_INSERT_TAIL(&sdev->target->xferlist, xfer, link);
899 struct sbp_target *target = sdev->target;
903 device_printf(sdev->target->sbp->fd.dev,
907 SBP_LOCK(target->sbp);
908 for (i = 0; i < target->num_lun; i++) {
909 tsdev = target->luns[i];
913 SBP_UNLOCK(target->sbp);
923 device_printf(sdev->target->sbp->fd.dev,
945 device_printf(sdev->target->sbp->fd.dev,
949 SBP_LOCK(sdev->target->sbp);
951 SBP_UNLOCK(sdev->target->sbp);
955 sbp_next_dev(struct sbp_target *target, int lun)
960 for (i = lun, sdevp = &target->luns[lun]; i < target->num_lun;
972 struct sbp_target *target;
976 target = sdev->target;
977 sbp = target->sbp;
989 sdev = sbp_next_dev(target, sdev->lun_id + 1);
1009 struct sbp_target *target = (struct sbp_target *)arg;
1013 SBP_LOCK_ASSERT(target->sbp);
1014 sdev = sbp_next_dev(target, 0);
1016 printf("sbp_cam_scan_target: nothing to do for target%d\n",
1017 target->target_id);
1021 device_printf(sdev->target->sbp->fd.dev,
1029 SBP_UNLOCK(target->sbp);
1041 SBP_LOCK(target->sbp);
1050 callout_reset_sbt(&sdev->target->scan_callout, SBT_1MS * scan_delay, 0,
1051 sbp_cam_scan_target, (void *)sdev->target, 0);
1058 struct sbp_target *target;
1062 target = sdev->target;
1063 sbp = target->sbp;
1066 device_printf(sdev->target->sbp->fd.dev,
1073 cam_sim_path(target->sbp->sim),
1074 target->target_id, sdev->lun_id);
1098 device_printf(sdev->target->sbp->fd.dev,
1102 device_printf(sdev->target->sbp->fd.dev,
1106 SBP_LOCK(sdev->target->sbp);
1112 SBP_UNLOCK(sdev->target->sbp);
1121 SBP_LOCK_ASSERT(sdev->target->sbp);
1123 device_printf(sdev->target->sbp->fd.dev,
1146 device_printf(sdev->target->sbp->fd.dev,
1149 SBP_LOCK(sdev->target->sbp);
1152 SBP_UNLOCK(sdev->target->sbp);
1161 device_printf(sdev->target->sbp->fd.dev,
1181 device_printf(sdev->target->sbp->fd.dev,
1188 SBP_LOCK(sdev->target->sbp);
1201 SBP_UNLOCK(sdev->target->sbp);
1211 device_printf(sdev->target->sbp->fd.dev,
1217 SBP_LOCK_ASSERT(sdev->target->sbp);
1237 htonl(((sdev->target->sbp->fd.fc->nodeid | FWLOCALBUS) << 16));
1254 device_printf(sdev->target->sbp->fd.dev,
1259 device_printf(sdev->target->sbp->fd.dev,
1262 SBP_LOCK(sdev->target->sbp);
1269 SBP_UNLOCK(sdev->target->sbp);
1278 device_printf(sdev->target->sbp->fd.dev,
1301 struct sbp_target *target;
1304 SBP_LOCK_ASSERT(sdev->target->sbp);
1306 target = sdev->target;
1307 xfer = STAILQ_FIRST(&target->xferlist);
1309 if (target->n_xfer > 5 /* XXX */) {
1310 printf("sbp: no more xfer for this target\n");
1318 target->n_xfer++;
1320 printf("sbp: alloc %d xfer\n", target->n_xfer);
1323 STAILQ_REMOVE_HEAD(&target->xferlist, link);
1328 xfer->send.spd = min(sdev->target->fwdev->speed, max_speed);
1329 xfer->fc = sdev->target->sbp->fd.fc;
1344 fp->mode.wreqq.dst = FWLOCALBUS | sdev->target->fwdev->dst;
1355 struct sbp_target *target;
1358 target = sdev->target;
1359 nid = target->sbp->fd.fc->nodeid | FWLOCALBUS;
1361 SBP_LOCK_ASSERT(target->sbp);
1363 ocb = STAILQ_FIRST(&target->mgm_ocb_queue);
1364 if (target->mgm_ocb_cur != NULL || ocb == NULL) {
1367 STAILQ_REMOVE_HEAD(&target->mgm_ocb_queue, ocb);
1379 ocb->orb[7] = htonl(SBP_DEV2ADDR(target->target_id, sdev->lun_id));
1382 device_printf(sdev->target->sbp->fd.dev,
1411 if (target->mgm_ocb_cur != NULL) {
1413 STAILQ_INSERT_TAIL(&sdev->target->mgm_ocb_queue, ocb, ocb);
1417 target->mgm_ocb_cur = ocb;
1419 callout_reset(&target->mgm_ocb_timeout, 5 * hz,
1428 fp->mode.wreqb.dest_hi = sdev->target->mgm_hi;
1429 fp->mode.wreqb.dest_lo = sdev->target->mgm_lo;
1448 device_get_nameunit(ocb->sdev->target->sbp->fd.dev),
1546 device_printf(ocb->sdev->target->sbp->fd.dev,
1566 device_printf(sdev->target->sbp->fd.dev,
1616 struct sbp_target *target;
1650 "sbp_recv1: invalid target %d\n", t);
1653 target = &sbp->targets[t];
1655 if (l >= target->num_lun || target->luns[l] == NULL) {
1657 "sbp_recv1: invalid lun %d (target=%d)\n", l, t);
1660 sdev = target->luns[l];
1667 ocb = target->mgm_ocb_cur;
1670 callout_stop(&target->mgm_ocb_timeout);
1671 target->mgm_ocb_cur = NULL;
1677 device_printf(sdev->target->sbp->fd.dev,
1685 device_printf(sdev->target->sbp->fd.dev,
1690 device_printf(sdev->target->sbp->fd.dev,
1703 device_printf(sdev->target->sbp->fd.dev,
1711 device_printf(sdev->target->sbp->fd.dev,
1769 device_printf(sdev->target->sbp->fd.dev,
1779 device_printf(sdev->target->sbp->fd.dev,
1789 device_printf(sdev->target->sbp->fd.dev,
1802 device_printf(sdev->target->sbp->fd.dev,
1821 device_printf(sdev->target->sbp->fd.dev,
1874 xfer->spd = min(sdev->target->fwdev->speed, max_speed);
2016 struct sbp_target *target;
2025 target = &sbp->targets[i];
2026 if (target->luns == NULL)
2028 for (j = 0; j < target->num_lun; j++) {
2029 sdev = target->luns[j];
2061 sbp = sdev->target->sbp;
2074 sbp_free_target(struct sbp_target *target)
2080 if (target->luns == NULL)
2082 sbp = target->sbp;
2085 callout_drain(&target->mgm_ocb_timeout);
2086 callout_drain(&target->scan_callout);
2088 for (i = 0; i < target->num_lun; i++)
2089 sbp_free_sdev(target->luns[i]);
2091 STAILQ_FOREACH_SAFE(xfer, &target->xferlist, link, next) {
2094 STAILQ_INIT(&target->xferlist);
2095 free(target->luns, M_SBP);
2096 target->num_lun = 0;
2097 target->luns = NULL;
2098 target->fwdev = NULL;
2150 SBP_LOCK_ASSERT(sdev->target->sbp);
2163 sbp_cam_detach_target(struct sbp_target *target)
2167 SBP_LOCK_ASSERT(target->sbp);
2168 if (target->luns != NULL) {
2170 printf("sbp_detach_target %d\n", target->target_id);
2172 callout_stop(&target->scan_callout);
2173 for (i = 0; i < target->num_lun; i++)
2174 sbp_cam_detach_sdev(target->luns[i]);
2182 struct sbp_target *target = sdev->target;
2185 SBP_LOCK_ASSERT(target->sbp);
2186 for (i = 0; i < target->num_lun; i++) {
2187 tsdev = target->luns[i];
2202 printf("target reset\n");
2218 struct sbp_target *target = sdev->target;
2220 SBP_LOCK_ASSERT(target->sbp);
2221 device_printf(sdev->target->sbp->fd.dev,
2224 target->mgm_ocb_cur = NULL;
2231 device_printf(sdev->target->sbp->fd.dev,
2243 device_printf(sdev->target->sbp->fd.dev,
2247 SBP_LOCK_ASSERT(sdev->target->sbp);
2264 sbp_cam_detach_target(target);
2265 if (target->luns != NULL)
2266 free(target->luns, M_SBP);
2267 target->num_lun = 0;
2268 target->luns = NULL;
2269 target->fwdev = NULL;
2279 struct sbp_target *target = NULL;
2284 /* target:lun -> sdev mapping */
2288 target = &sbp->targets[ccb->ccb_h.target_id];
2289 if (target->fwdev != NULL
2291 && ccb->ccb_h.target_lun < target->num_lun) {
2292 sdev = target->luns[ccb->ccb_h.target_lun];
2301 printf("invalid target %d lun %jx\n",
2314 "Invalid target (target needed)\n",
2328 /* The opcodes sometimes aimed at a target (sc is valid),
2329 * sometimes aimed at the SIM (sc is invalid and target is
2336 "Invalid target (no wildcard)\n",
2425 speed = min(target->fwdev->speed, max_speed);
2611 bus_dmamap_sync(ocb->sdev->target->sbp->dmat, ocb->dmamap,
2653 device_printf(sdev->target->sbp->fd.dev,
2657 SBP_LOCK_ASSERT(sdev->target->sbp);
2665 bus_dmamap_sync(sdev->target->sbp->dmat,
2670 bus_dmamap_unload(sdev->target->sbp->dmat,
2705 device_printf(sdev->target->sbp->fd.dev,
2718 SBP_LOCK_ASSERT(sdev->target->sbp);
2720 device_printf(sdev->target->sbp->fd.dev,
2757 SBP_LOCK_ASSERT(sdev->target->sbp);
2775 SBP_LOCK_ASSERT(sdev->target->sbp);
2793 SBP_LOCK_ASSERT(sdev->target->sbp);
2795 device_printf(sdev->target->sbp->fd.dev,
2803 bus_dmamap_sync(sdev->target->sbp->dmat, ocb->dmamap,
2806 bus_dmamap_unload(sdev->target->sbp->dmat, ocb->dmamap);
2823 SBP_LOCK_ASSERT(sdev->target->sbp);