Lines Matching defs:vpkt

1079 	struct vhci_pkt		*vpkt = TGTPKT2VHCIPKT(pkt);
1082 if (!vpkt->vpkt_tgt_init_bp)
1085 addr = bp_mapin_common(vpkt->vpkt_tgt_init_bp,
1086 (vpkt->vpkt_flags & CFLAG_NOWAIT) ? VM_NOSLEEP : VM_SLEEP);
1101 vlun->svl_bcount = vpkt->vpkt_tgt_init_bp->b_bcount;
1102 vlun->svl_first_path = vpkt->vpkt_path;
1127 struct vhci_pkt *vpkt = TGTPKT2VHCIPKT(pkt);
1141 ASSERT(vpkt != NULL);
1142 ASSERT(vpkt->vpkt_state != VHCI_PKT_ISSUED);
1163 if (!(vpkt->vpkt_state & VHCI_PKT_THRU_TASKQ)) {
1165 vhci_dispatch_scsi_start, (void *) vpkt,
1252 (vpkt->vpkt_org_vpkt == NULL)) {
1253 vpkt->vpkt_tgt_init_pkt_flags |= PKT_CONSISTENT;
1259 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) == 0) {
1263 ap, vpkt, vpkt->vpkt_tgt_init_pkt_flags, NULL_FUNC))
1277 "vhci_scsi_start: v_b_t called 0x%p\n", (void *)vpkt));
1279 ASSERT(vpkt->vpkt_hba_pkt != NULL);
1280 ASSERT(vpkt->vpkt_path != NULL);
1286 VHCI_DEBUG(8, (CE_NOTE, vhci->vhci_dip, "vhci_scsi_start vpkt %p\n",
1287 (void *)vpkt));
1288 vhci_update_pHCI_pkt(vpkt, pkt);
1291 if (vpkt->vpkt_path != vlun->svl_resrv_pip) {
1295 (void *)vlun, (void *)vpkt->vpkt_path,
1302 svp = (scsi_vhci_priv_t *)mdi_pi_get_vhci_private(vpkt->vpkt_path);
1313 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) == 0) {
1314 scsi_destroy_pkt(vpkt->vpkt_hba_pkt);
1315 vpkt->vpkt_hba_pkt = NULL;
1316 if (vpkt->vpkt_path) {
1317 mdi_rele_path(vpkt->vpkt_path);
1318 vpkt->vpkt_path = NULL;
1330 mdi_pi_get_path_instance(vpkt->vpkt_path))) {
1332 * This is an attempt to reserve vpkt->vpkt_path. But the
1341 mdi_pi_get_path_instance(vpkt->vpkt_path),
1342 (void *)vpkt->vpkt_path));
1448 flags = vpkt->vpkt_hba_pkt->pkt_flags;
1456 if (scsi_pkt_allocated_correctly(vpkt->vpkt_hba_pkt))
1457 vpkt->vpkt_hba_pkt->pkt_path_instance =
1458 mdi_pi_get_path_instance(vpkt->vpkt_path);
1460 rval = scsi_transport(vpkt->vpkt_hba_pkt);
1463 struct scsi_pkt *tpkt = vpkt->vpkt_tgt_pkt;
1464 struct scsi_pkt *pkt = vpkt->vpkt_hba_pkt;
1476 vpkt->vpkt_tgt_init_scblen);
1480 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) == 0) {
1481 scsi_destroy_pkt(vpkt->vpkt_hba_pkt);
1482 vpkt->vpkt_hba_pkt = NULL;
1483 if (vpkt->vpkt_path) {
1484 mdi_rele_path(vpkt->vpkt_path);
1485 vpkt->vpkt_path = NULL;
1493 ASSERT(vpkt->vpkt_org_vpkt == NULL);
1502 } else if (vpkt->vpkt_tgt_pkt->pkt_cdbp[0] == SCMD_PRIN) {
1514 ASSERT(vpkt->vpkt_hba_pkt != NULL);
1518 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) == 0) {
1519 scsi_destroy_pkt(vpkt->vpkt_hba_pkt);
1520 vpkt->vpkt_hba_pkt = NULL;
1521 if (vpkt->vpkt_path) {
1522 MDI_PI_ERRSTAT(vpkt->vpkt_path, MDI_PI_TRANSERR);
1523 mdi_rele_path(vpkt->vpkt_path);
1524 vpkt->vpkt_path = NULL;
1921 struct vhci_pkt *vpkt;
1939 ap, cmdlen, statuslen, tgtlen, sizeof (*vpkt), callback,
1947 vpkt = (struct vhci_pkt *)(pktp->pkt_ha_private);
1948 ASSERT(vpkt);
1951 vpkt->vpkt_tgt_pkt = pktp;
1957 vpkt->vpkt_tgt_init_pkt_flags = flags;
1958 vpkt->vpkt_flags = (callback == NULL_FUNC) ? CFLAG_NOWAIT : 0;
1959 vpkt->vpkt_state = VHCI_PKT_IDLE;
1960 vpkt->vpkt_tgt_init_cdblen = cmdlen;
1961 vpkt->vpkt_tgt_init_scblen = statuslen;
1964 vpkt = pkt->pkt_ha_private;
1968 "vpkt %p flags %x\n", (void *)vpkt, flags));
1975 vpkt->vpkt_tgt_init_bp = bp;
1985 vpkt->vpkt_flags |= CFLAG_DMA_PARTIAL;
1988 if (vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) {
1994 vpkt->vpkt_tgt_pkt->pkt_state = 0;
1995 vpkt->vpkt_tgt_pkt->pkt_statistics = 0;
1996 vpkt->vpkt_tgt_pkt->pkt_reason = 0;
1999 * Binding a vpkt->vpkt_path for this IO at init_time.
2001 * this vpkt->vpkt_path binding before re-init IO again.
2005 (void *)vpkt, newpkt));
2006 if (pkt && vpkt->vpkt_hba_pkt) {
2010 vhci_update_pHCI_pkt(vpkt, pkt);
2014 ap, vpkt, flags, callback);
2017 ap, vpkt, flags, NULL_FUNC);
2021 (void *)vpkt, rval));
2042 (void *)vpkt, newpkt));
2045 vpkt->vpkt_tgt_pkt);
2049 ASSERT(vpkt->vpkt_hba_pkt != NULL);
2050 ASSERT(vpkt->vpkt_path != NULL);
2053 vpkt->vpkt_tgt_pkt->pkt_resid =
2054 vpkt->vpkt_hba_pkt->pkt_resid;
2057 return (vpkt->vpkt_tgt_pkt);
2068 struct vhci_pkt *vpkt = (struct vhci_pkt *)pkt->pkt_ha_private;
2071 "vhci_scsi_destroy_pkt: vpkt 0x%p\n", (void *)vpkt));
2073 vpkt->vpkt_tgt_init_pkt_flags = 0;
2074 if (vpkt->vpkt_hba_pkt) {
2075 scsi_destroy_pkt(vpkt->vpkt_hba_pkt);
2076 vpkt->vpkt_hba_pkt = NULL;
2078 if (vpkt->vpkt_path) {
2079 mdi_rele_path(vpkt->vpkt_path);
2080 vpkt->vpkt_path = NULL;
2083 ASSERT(vpkt->vpkt_state != VHCI_PKT_ISSUED);
2084 scsi_hba_pkt_free(ap, vpkt->vpkt_tgt_pkt);
2096 struct vhci_pkt *vpkt = (struct vhci_pkt *)pkt->pkt_ha_private;
2099 "vhci_scsi_dmafree: vpkt 0x%p\n", (void *)vpkt));
2101 ASSERT(vpkt != NULL);
2102 if (vpkt->vpkt_hba_pkt) {
2103 scsi_destroy_pkt(vpkt->vpkt_hba_pkt);
2104 vpkt->vpkt_hba_pkt = NULL;
2106 if (vpkt->vpkt_path) {
2107 mdi_rele_path(vpkt->vpkt_path);
2108 vpkt->vpkt_path = NULL;
2121 struct vhci_pkt *vpkt = (struct vhci_pkt *)pkt->pkt_ha_private;
2123 ASSERT(vpkt != NULL);
2124 if (vpkt->vpkt_hba_pkt) {
2125 scsi_sync_pkt(vpkt->vpkt_hba_pkt);
2216 vhci_bind_transport(struct scsi_address *ap, struct vhci_pkt *vpkt, int flags,
2237 if ((vpkt->vpkt_tgt_pkt->pkt_cdbp[0] == SCMD_PROUT) &&
2238 (((vpkt->vpkt_tgt_pkt->pkt_cdbp[1] & 0x1f) ==
2240 ((vpkt->vpkt_tgt_pkt->pkt_cdbp[1] & 0x1f) ==
2281 } else if (vpkt->vpkt_tgt_pkt->pkt_cdbp[0] == SCMD_PRIN) {
2282 if ((vpkt->vpkt_state & VHCI_PKT_THRU_TASKQ) == 0) {
2293 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) && vpkt->vpkt_path) {
2296 "vpkt 0x%p, path 0x%p\n",
2297 (void *)vpkt, (void *)vpkt->vpkt_path));
2298 pip = vpkt->vpkt_path;
2309 if ((vpkt->vpkt_tgt_pkt->pkt_flags & FLAG_PKT_PATH_INSTANCE) &&
2310 scsi_pkt_allocated_correctly(vpkt->vpkt_tgt_pkt)) {
2311 path_instance = vpkt->vpkt_tgt_pkt->pkt_path_instance;
2318 if (vpkt->vpkt_hba_pkt == NULL) {
2334 rval = mdi_select_path(cdip, vpkt->vpkt_tgt_init_bp,
2364 rval = mdi_select_path(cdip, vpkt->vpkt_tgt_init_bp,
2373 vpkt->vpkt_tgt_init_bp,
2432 rval = mdi_select_path(cdip, vpkt->vpkt_tgt_init_bp,
2461 if (!(vpkt->vpkt_state & VHCI_PKT_IN_FAILOVER)) {
2485 vpkt->vpkt_state |= VHCI_PKT_IN_FAILOVER;
2491 vpkt->vpkt_path = pip;
2499 pkt = vpkt->vpkt_hba_pkt;
2505 (path_instance == mdi_pi_get_path_instance(vpkt->vpkt_path)));
2511 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) &&
2512 vpkt->vpkt_path && vpkt->vpkt_hba_pkt) {
2515 "vpkt 0x%p, path 0x%p hba_pkt 0x%p\n",
2516 (void *)vpkt, (void *)vpkt->vpkt_path, (void *)pkt));
2517 pkt = vpkt->vpkt_hba_pkt;
2521 if (pkt == NULL || (vpkt->vpkt_flags & CFLAG_DMA_PARTIAL)) {
2523 vpkt->vpkt_tgt_init_bp, vpkt->vpkt_tgt_init_cdblen,
2524 vpkt->vpkt_tgt_init_scblen, 0, flags, func, NULL);
2529 (void *)vhci, (void *)psd, (void *)vpkt));
2530 if ((vpkt->vpkt_hba_pkt == NULL) && vpkt->vpkt_path) {
2531 MDI_PI_ERRSTAT(vpkt->vpkt_path,
2533 mdi_rele_path(vpkt->vpkt_path);
2534 vpkt->vpkt_path = NULL;
2545 if (vpkt->vpkt_tgt_init_bp == NULL ||
2546 geterror(vpkt->vpkt_tgt_init_bp))
2553 pkt->pkt_private = vpkt;
2554 vpkt->vpkt_hba_pkt = pkt;
2691 struct vhci_pkt *vpkt;
2695 vpkt = (struct vhci_pkt *)pkt->pkt_private;
2696 tpkt = vpkt->vpkt_tgt_pkt;
2697 pip = vpkt->vpkt_path;
2777 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) == 0) {
2779 vpkt->vpkt_hba_pkt = NULL;
2780 if (vpkt->vpkt_path) {
2781 mdi_rele_path(vpkt->vpkt_path);
2782 vpkt->vpkt_path = NULL;
2791 ASSERT(vpkt->vpkt_org_vpkt == NULL);
2831 struct vhci_pkt *vpkt = *intr_vpkt;
2834 struct scsi_vhci *vhci = ADDR2VHCI(&vpkt->vpkt_tgt_pkt->pkt_address);
2844 ASSERT(vpkt->vpkt_path);
2845 svp = mdi_pi_get_vhci_private(vpkt->vpkt_path);
2857 if (vpkt->vpkt_tgt_init_bp->b_bcount <= VHCI_PRIN_HEADER_SZ) {
2862 if (vpkt->vpkt_org_vpkt == NULL) {
2867 bp_mapin_common(vpkt->vpkt_tgt_init_bp, VM_NOSLEEP);
2873 vpkt->vpkt_tgt_init_bp->b_un.b_daddr;
2911 if ((vpkt->vpkt_tgt_init_bp->b_bcount < needed_length) &&
2912 (vpkt->vpkt_org_vpkt == NULL)) {
2914 new_pkt = vhci_create_retry_pkt(vpkt);
2950 mdi_pathinfo_t *path_holder = vpkt->vpkt_path;
2957 if (vpkt->vpkt_path != NULL) {
2958 mdi_rele_path(vpkt->vpkt_path);
2959 vpkt->vpkt_path = NULL;
2968 vpkt->vpkt_path = path_holder;
3064 if (vpkt->vpkt_org_vpkt != NULL) {
3065 new_bp = vpkt->vpkt_tgt_init_bp;
3069 vpkt = vhci_sync_retry_pkt(vpkt);
3070 *intr_vpkt = vpkt;
3078 vpkt->vpkt_tgt_init_bp, VM_NOSLEEP);
3085 if (svl_prin_length <= vpkt->vpkt_tgt_init_bp->b_bcount) {
3097 vpkt->vpkt_tgt_init_bp->b_bcount);
3119 if (vpkt->vpkt_org_vpkt != NULL) {
3120 new_bp = vpkt->vpkt_tgt_init_bp;
3125 new_vpkt = vpkt;
3126 vpkt = vpkt->vpkt_org_vpkt;
3137 vpkt->vpkt_tgt_pkt->pkt_reason = CMD_ABORTED;
3138 vpkt->vpkt_tgt_pkt->pkt_statistics |= STAT_ABORTED;
3156 struct vhci_pkt *vpkt = (struct vhci_pkt *)pkt->pkt_private;
3170 ASSERT(vpkt != NULL);
3171 tpkt = vpkt->vpkt_tgt_pkt;
3173 svp = (scsi_vhci_priv_t *)mdi_pi_get_vhci_private(vpkt->vpkt_path);
3177 lpath = vpkt->vpkt_path;
3249 vpkt->vpkt_tgt_init_scblen);
3258 vpkt->vpkt_tgt_init_scblen);
3267 vpkt->vpkt_tgt_init_scblen);
3318 vpkt->vpkt_tgt_init_scblen);
3339 (void *)vlun, (void *)vpkt->vpkt_path));
3345 vlun->svl_resrv_pip = vpkt->vpkt_path;
3348 (void *)vlun, (void *)vpkt->vpkt_path));
3356 (void *)vlun, (void *)vpkt->vpkt_path));
3365 mdi_pi_kstat_iosupdate(vpkt->vpkt_path, vpkt->vpkt_tgt_init_bp);
3383 (pkt->pkt_cdbp[0] == SCMD_PRIN) && vpkt->vpkt_tgt_init_bp) {
3399 if (vpkt->vpkt_org_vpkt != NULL) {
3400 pkt = vpkt->vpkt_org_vpkt->vpkt_hba_pkt;
3401 tpkt = vpkt->vpkt_org_vpkt->
3411 vpkt->vpkt_state &=
3417 * vpkt will contain the address of the
3418 * original vpkt
3420 if (vhci_do_prin(&vpkt) == VHCI_CMD_RETRY) {
3511 vpkt->vpkt_state &= ~VHCI_PKT_THRU_TASKQ;
3517 * this point, it is an error so restore the original vpkt and
3521 if (vpkt->vpkt_org_vpkt != NULL) {
3522 struct vhci_pkt *new_vpkt = vpkt;
3523 vpkt = vpkt->vpkt_org_vpkt;
3532 vpkt->vpkt_tgt_pkt->pkt_reason = CMD_ABORTED;
3533 vpkt->vpkt_tgt_pkt->pkt_statistics |= STAT_ABORTED;
3535 pkt = vpkt->vpkt_hba_pkt;
3536 tpkt = vpkt->vpkt_tgt_pkt;
3547 mdi_pi_spathname(vpkt->vpkt_path));
3558 if ((vpkt->vpkt_flags & CFLAG_DMA_PARTIAL) == 0) {
3560 vpkt->vpkt_hba_pkt = NULL;
3561 if (vpkt->vpkt_path) {
3562 mdi_rele_path(vpkt->vpkt_path);
3563 vpkt->vpkt_path = NULL;
3582 struct vhci_pkt *vpkt = (struct vhci_pkt *)pkt->pkt_private;
3590 ASSERT(vpkt != NULL);
3591 tpkt = vpkt->vpkt_tgt_pkt;
3593 svp = (scsi_vhci_priv_t *)mdi_pi_get_vhci_private(vpkt->vpkt_path);
3630 swarg->svs_pi = vpkt->vpkt_path;
3637 mdi_hold_path(vpkt->vpkt_path);
7847 struct vhci_pkt *vpkt = (struct vhci_pkt *)arg;
7848 struct scsi_pkt *tpkt = vpkt->vpkt_tgt_pkt;
7853 (void *)ADDR2DIP(&(vpkt->vpkt_tgt_pkt->pkt_address))));
7859 vpkt->vpkt_state |= VHCI_PKT_THRU_TASKQ;
7869 while ((rval = vhci_scsi_start(&(vpkt->vpkt_tgt_pkt->pkt_address),
7870 vpkt->vpkt_tgt_pkt)) == TRAN_BUSY) {
7884 vpkt->vpkt_state &= ~VHCI_PKT_THRU_TASKQ;
7891 (void *)ADDR2DIP(&(vpkt->vpkt_tgt_pkt->pkt_address))));
7898 * this point, it is an error so restore the original vpkt and
7902 if (vpkt->vpkt_org_vpkt != NULL) {
7903 struct vhci_pkt *new_vpkt = vpkt;
7905 mdi_pi_get_vhci_private(vpkt->vpkt_path);
7907 vpkt = vpkt->vpkt_org_vpkt;
7909 vpkt->vpkt_tgt_pkt->pkt_reason = tpkt->pkt_reason;
7910 vpkt->vpkt_tgt_pkt->pkt_statistics = tpkt->pkt_statistics;
7915 tpkt = vpkt->vpkt_tgt_pkt;
8018 vhci_update_pHCI_pkt(struct vhci_pkt *vpkt, struct scsi_pkt *pkt)
8021 ASSERT(vpkt->vpkt_hba_pkt);
8023 vpkt->vpkt_hba_pkt->pkt_flags = pkt->pkt_flags;
8024 vpkt->vpkt_hba_pkt->pkt_flags |= FLAG_NOQUEUE;
8026 if ((vpkt->vpkt_hba_pkt->pkt_flags & FLAG_NOINTR) ||
8027 MDI_PI_IS_SUSPENDED(vpkt->vpkt_path)) {
8032 vpkt->vpkt_hba_pkt->pkt_flags |= FLAG_NOINTR;
8033 vpkt->vpkt_hba_pkt->pkt_comp = NULL;
8035 vpkt->vpkt_hba_pkt->pkt_comp = vhci_intr;
8037 vpkt->vpkt_hba_pkt->pkt_time = pkt->pkt_time;
8038 bcopy(pkt->pkt_cdbp, vpkt->vpkt_hba_pkt->pkt_cdbp,
8039 vpkt->vpkt_tgt_init_cdblen);
8040 vpkt->vpkt_hba_pkt->pkt_resid = pkt->pkt_resid;
8043 vpkt->vpkt_hba_pkt->pkt_state = 0;
8044 vpkt->vpkt_hba_pkt->pkt_statistics = 0;
8045 vpkt->vpkt_hba_pkt->pkt_reason = 0;
8202 vhci_create_retry_pkt(struct vhci_pkt *vpkt)
8208 mdi_pi_get_vhci_private(vpkt->vpkt_path);
8214 vpkt->vpkt_tgt_init_bp, vpkt->vpkt_tgt_init_cdblen,
8215 vpkt->vpkt_tgt_init_scblen, 0, PKT_CONSISTENT, NULL_FUNC, NULL);
8219 pkt->pkt_address = vpkt->vpkt_tgt_pkt->pkt_address;
8220 pkt->pkt_flags = vpkt->vpkt_tgt_pkt->pkt_flags;
8221 pkt->pkt_time = vpkt->vpkt_tgt_pkt->pkt_time;
8222 pkt->pkt_comp = vpkt->vpkt_tgt_pkt->pkt_comp;
8228 bcopy(vpkt->vpkt_tgt_pkt->pkt_cdbp,
8229 pkt->pkt_cdbp, vpkt->vpkt_tgt_init_cdblen);
8234 new_vpkt->vpkt_org_vpkt = vpkt;
8243 * vpkt and destroys the new vpkt from the internal retry.
8246 vhci_sync_retry_pkt(struct vhci_pkt *vpkt)
8252 mdi_pi_get_vhci_private(vpkt->vpkt_path);
8254 ASSERT(vpkt->vpkt_org_vpkt != NULL);
8258 ret_vpkt = vpkt->vpkt_org_vpkt;
8260 hba_pkt = vpkt->vpkt_hba_pkt;
8272 * Destroy the internally created vpkt for the retry
8275 vpkt->vpkt_tgt_pkt);