Lines Matching refs:pkt

32 smrt_ctrl_tran_start(struct scsi_address *sa, struct scsi_pkt *pkt)  in smrt_ctrl_tran_start()  argument
290 smrt_tran_setup_pkt(struct scsi_pkt *pkt, int (*callback)(caddr_t), in smrt_tran_setup_pkt() argument
302 sd = scsi_address_device(&pkt->pkt_address); in smrt_tran_setup_pkt()
308 smcms = (smrt_command_scsa_t *)pkt->pkt_ha_private; in smrt_tran_setup_pkt()
314 if (pkt->pkt_cdblen > CISS_CDBLEN) { in smrt_tran_setup_pkt()
320 "needed %u", CISS_CDBLEN, pkt->pkt_cdblen); in smrt_tran_setup_pkt()
333 smcms->smcms_pkt = pkt; in smrt_tran_setup_pkt()
335 pkt->pkt_cdbp = &smcm->smcm_va_cmd->Request.CDB[0]; in smrt_tran_setup_pkt()
336 smcm->smcm_va_cmd->Request.CDBLen = pkt->pkt_cdblen; in smrt_tran_setup_pkt()
344 smrt_tran_teardown_pkt(struct scsi_pkt *pkt) in smrt_tran_teardown_pkt() argument
347 pkt->pkt_ha_private; in smrt_tran_teardown_pkt()
352 pkt->pkt_cdbp = NULL; in smrt_tran_teardown_pkt()
356 smrt_set_arq_data(struct scsi_pkt *pkt, uchar_t key) in smrt_set_arq_data() argument
360 VERIFY3U(pkt->pkt_scblen, >=, sizeof (struct scsi_arq_status)); in smrt_set_arq_data()
363 sts = (struct scsi_arq_status *)(pkt->pkt_scbp); in smrt_set_arq_data()
387 pkt->pkt_state |= STATE_ARQ_DONE; in smrt_set_arq_data()
396 smrt_fake_report_lun(smrt_command_t *smcm, struct scsi_pkt *pkt) in smrt_fake_report_lun() argument
402 pkt->pkt_reason = CMD_CMPLT; in smrt_fake_report_lun()
403 pkt->pkt_state |= STATE_GOT_BUS | STATE_GOT_TARGET | STATE_SENT_CMD | in smrt_fake_report_lun()
411 if (pkt->pkt_cdbp[1] != 0 || pkt->pkt_cdbp[3] != 0 || in smrt_fake_report_lun()
412 pkt->pkt_cdbp[4] != 0 || pkt->pkt_cdbp[5] != 0 || in smrt_fake_report_lun()
413 pkt->pkt_cdbp[10] != 0 || pkt->pkt_cdbp[11] != 0 || in smrt_fake_report_lun()
414 pkt->pkt_cdbp[2] > 0x2) { in smrt_fake_report_lun()
415 smrt_set_arq_data(pkt, KEY_ILLEGAL_REQUEST); in smrt_fake_report_lun()
428 bp = scsi_pkt2bp(pkt); in smrt_fake_report_lun()
434 pkt->pkt_state |= STATE_XFERRED_DATA; in smrt_fake_report_lun()
435 pkt->pkt_resid = bp->b_bcount - sz; in smrt_fake_report_lun()
436 if (pkt->pkt_scblen >= 1) { in smrt_fake_report_lun()
437 pkt->pkt_scbp[0] = STATUS_GOOD; in smrt_fake_report_lun()
442 smrt_tran_start(struct scsi_address *sa, struct scsi_pkt *pkt) in smrt_tran_start() argument
453 sd = scsi_address_device(&pkt->pkt_address); in smrt_tran_start()
459 smcms = (smrt_command_scsa_t *)pkt->pkt_ha_private; in smrt_tran_start()
479 switch (pkt->pkt_cdbp[0]) { in smrt_tran_start()
495 pkt->pkt_reason = CMD_CMPLT; in smrt_tran_start()
496 pkt->pkt_state |= STATE_GOT_BUS | STATE_GOT_TARGET | in smrt_tran_start()
502 smrt_set_arq_data(pkt, KEY_ILLEGAL_REQUEST); in smrt_tran_start()
504 scsi_hba_pkt_comp(pkt); in smrt_tran_start()
516 smrt_fake_report_lun(smcm, pkt); in smrt_tran_start()
518 scsi_hba_pkt_comp(pkt); in smrt_tran_start()
524 if (pkt->pkt_flags & FLAG_NOINTR) { in smrt_tran_start()
536 if (pkt->pkt_numcookies > smrt->smrt_sg_cnt) { in smrt_tran_start()
541 " expected %u)", pkt->pkt_numcookies, smrt->smrt_sg_cnt); in smrt_tran_start()
544 smcm->smcm_va_cmd->Header.SGList = pkt->pkt_numcookies; in smrt_tran_start()
545 smcm->smcm_va_cmd->Header.SGTotal = pkt->pkt_numcookies; in smrt_tran_start()
546 for (unsigned i = 0; i < pkt->pkt_numcookies; i++) { in smrt_tran_start()
548 LE_64(pkt->pkt_cookies[i].dmac_laddress); in smrt_tran_start()
550 LE_32(pkt->pkt_cookies[i].dmac_size); in smrt_tran_start()
561 smcm->smcm_va_cmd->Request.CDBLen = pkt->pkt_cdblen; in smrt_tran_start()
564 smcm->smcm_va_cmd->Request.Timeout = LE_16(pkt->pkt_time); in smrt_tran_start()
565 if (pkt->pkt_numcookies > 0) { in smrt_tran_start()
570 if (pkt->pkt_dma_flags & DDI_DMA_READ) { in smrt_tran_start()
573 } else if (pkt->pkt_dma_flags & DDI_DMA_WRITE) { in smrt_tran_start()
592 pkt->pkt_resid = 0; in smrt_tran_start()
593 pkt->pkt_reason = CMD_CMPLT; in smrt_tran_start()
594 pkt->pkt_statistics = 0; in smrt_tran_start()
595 pkt->pkt_state = 0; in smrt_tran_start()
601 if (pkt->pkt_time != 0) { in smrt_tran_start()
602 smcm->smcm_expiry = gethrtime() + pkt->pkt_time * NANOSEC; in smrt_tran_start()
642 pkt->pkt_state |= STATE_GOT_BUS | STATE_GOT_TARGET | STATE_SENT_CMD; in smrt_tran_start()
644 if (pkt->pkt_flags & FLAG_NOINTR) { in smrt_tran_start()
792 smrt_tran_abort(struct scsi_address *sa, struct scsi_pkt *pkt) in smrt_tran_abort() argument
818 if (pkt != NULL) { in smrt_tran_abort()
823 pkt->pkt_ha_private; in smrt_tran_abort()
859 if (pkt != NULL) { in smrt_tran_abort()
907 struct scsi_pkt *pkt = smcm->smcm_scsa->smcms_pkt; in smrt_hba_complete_status() local
909 bzero(pkt->pkt_scbp, pkt->pkt_scblen); in smrt_hba_complete_status()
919 if (pkt->pkt_scblen < sizeof (struct scsi_arq_status)) { in smrt_hba_complete_status()
928 struct scsi_arq_status *sts = (struct scsi_arq_status *)pkt->pkt_scbp; in smrt_hba_complete_status()
949 size_t sense_len = pkt->pkt_scblen - offsetof(struct scsi_arq_status, in smrt_hba_complete_status()
960 pkt->pkt_state |= STATE_ARQ_DONE; in smrt_hba_complete_status()
964 if (pkt->pkt_scblen < sizeof (struct scsi_status)) { in smrt_hba_complete_status()
971 bcopy(&ei->ScsiStatus, pkt->pkt_scbp, sizeof (struct scsi_status)); in smrt_hba_complete_status()
995 struct scsi_pkt *pkt = smcm->smcm_scsa->smcms_pkt; in smrt_hba_complete() local
999 pkt->pkt_resid = ei->ResidualCnt; in smrt_hba_complete()
1005 if (pkt->pkt_reason != CMD_CMPLT) { in smrt_hba_complete()
1010 pkt->pkt_reason = CMD_RESET; in smrt_hba_complete()
1012 pkt->pkt_statistics |= STAT_BUS_RESET | STAT_DEV_RESET; in smrt_hba_complete()
1025 pkt->pkt_state |= STATE_XFERRED_DATA | STATE_GOT_STATUS; in smrt_hba_complete()
1044 pkt->pkt_state |= STATE_XFERRED_DATA | STATE_GOT_STATUS; in smrt_hba_complete()
1052 pkt->pkt_state |= STATE_XFERRED_DATA | STATE_GOT_STATUS; in smrt_hba_complete()
1060 pkt->pkt_state |= STATE_XFERRED_DATA | STATE_GOT_STATUS; in smrt_hba_complete()
1068 pkt->pkt_reason = CMD_DATA_OVR; in smrt_hba_complete()
1069 pkt->pkt_state |= STATE_XFERRED_DATA | STATE_GOT_STATUS; in smrt_hba_complete()
1077 pkt->pkt_reason = CMD_BADMSG; in smrt_hba_complete()
1078 pkt->pkt_state |= STATE_GOT_STATUS; in smrt_hba_complete()
1086 pkt->pkt_reason = CMD_BADMSG; in smrt_hba_complete()
1087 pkt->pkt_state |= STATE_GOT_STATUS; in smrt_hba_complete()
1095 pkt->pkt_reason = CMD_INCOMPLETE; in smrt_hba_complete()
1104 pkt->pkt_reason = CMD_INCOMPLETE; in smrt_hba_complete()
1114 pkt->pkt_reason = CMD_TIMEOUT; in smrt_hba_complete()
1115 pkt->pkt_statistics |= STAT_TIMEOUT; in smrt_hba_complete()
1117 pkt->pkt_reason = CMD_ABORTED; in smrt_hba_complete()
1119 pkt->pkt_state |= STATE_XFERRED_DATA | STATE_GOT_STATUS; in smrt_hba_complete()
1120 pkt->pkt_statistics |= STAT_ABORTED; in smrt_hba_complete()
1125 pkt->pkt_reason = CMD_TIMEOUT; in smrt_hba_complete()
1126 pkt->pkt_statistics |= STAT_TIMEOUT; in smrt_hba_complete()
1135 pkt->pkt_reason = CMD_TRAN_ERR; in smrt_hba_complete()
1146 scsi_hba_pkt_comp(pkt); in smrt_hba_complete()