Lines Matching refs:srb
154 static void arcmsr_free_srb(struct CommandControlBlock *srb);
174 static void arcmsr_srb_complete(struct CommandControlBlock *srb, int stand_flag);
176 static void arcmsr_report_sense_info(struct CommandControlBlock *srb);
177 static void arcmsr_build_srb(struct CommandControlBlock *srb, bus_dma_segment_t *dm_segs, u_int32_t…
629 static void arcmsr_report_sense_info(struct CommandControlBlock *srb) in arcmsr_report_sense_info() argument
631 union ccb *pccb = srb->pccb; in arcmsr_report_sense_info()
637 memcpy(&pccb->csio.sense_data, srb->arcmsr_cdb.SenseData, in arcmsr_report_sense_info()
736 static void arcmsr_srb_complete(struct CommandControlBlock *srb, int stand_flag) in arcmsr_srb_complete() argument
738 struct AdapterControlBlock *acb = srb->acb; in arcmsr_srb_complete()
739 union ccb *pccb = srb->pccb; in arcmsr_srb_complete()
741 if(srb->srb_flags & SRB_FLAG_TIMER_START) in arcmsr_srb_complete()
742 callout_stop(&srb->ccb_callout); in arcmsr_srb_complete()
751 bus_dmamap_sync(acb->dm_segs_dmat, srb->dm_segs_dmamap, op); in arcmsr_srb_complete()
752 bus_dmamap_unload(acb->dm_segs_dmat, srb->dm_segs_dmamap); in arcmsr_srb_complete()
762 if(srb->srb_state != ARCMSR_SRB_TIMEOUT) in arcmsr_srb_complete()
763 arcmsr_free_srb(srb); in arcmsr_srb_complete()
771 …report_srb_state(struct AdapterControlBlock *acb, struct CommandControlBlock *srb, u_int16_t error) in arcmsr_report_srb_state() argument
775 target = srb->pccb->ccb_h.target_id; in arcmsr_report_srb_state()
776 lun = srb->pccb->ccb_h.target_lun; in arcmsr_report_srb_state()
781 srb->pccb->ccb_h.status |= CAM_REQ_CMP; in arcmsr_report_srb_state()
782 arcmsr_srb_complete(srb, 1); in arcmsr_report_srb_state()
784 switch(srb->arcmsr_cdb.DeviceStatus) { in arcmsr_report_srb_state()
790 srb->pccb->ccb_h.status |= CAM_DEV_NOT_THERE; in arcmsr_report_srb_state()
791 arcmsr_srb_complete(srb, 1); in arcmsr_report_srb_state()
797 srb->pccb->ccb_h.status |= CAM_DEV_NOT_THERE; in arcmsr_report_srb_state()
798 arcmsr_srb_complete(srb, 1); in arcmsr_report_srb_state()
803 arcmsr_report_sense_info(srb); in arcmsr_report_srb_state()
804 arcmsr_srb_complete(srb, 1); in arcmsr_report_srb_state()
809 , acb->pci_unit, target, lun ,srb->arcmsr_cdb.DeviceStatus); in arcmsr_report_srb_state()
811 srb->pccb->ccb_h.status |= CAM_UNCOR_PARITY; in arcmsr_report_srb_state()
813 arcmsr_srb_complete(srb, 1); in arcmsr_report_srb_state()
824 struct CommandControlBlock *srb; in arcmsr_drain_donequeue() local
830 …srb = (struct CommandControlBlock *)(acb->vir2phy_offset+(flag_srb << 5));/*frame must be 32 bytes… in arcmsr_drain_donequeue()
834 …srb = (struct CommandControlBlock *)(acb->vir2phy_offset+(flag_srb & 0xFFFFFFE0)); /*frame must be… in arcmsr_drain_donequeue()
838 srb = acb->psrb_pool[flag_srb]; in arcmsr_drain_donequeue()
841 …srb = (struct CommandControlBlock *)(acb->vir2phy_offset+(flag_srb << 5));/*frame must be 32 bytes… in arcmsr_drain_donequeue()
844 if((srb->acb != acb) || (srb->srb_state != ARCMSR_SRB_START)) { in arcmsr_drain_donequeue()
845 if(srb->srb_state == ARCMSR_SRB_TIMEOUT) { in arcmsr_drain_donequeue()
846 arcmsr_free_srb(srb); in arcmsr_drain_donequeue()
847 printf("arcmsr%d: srb='%p' return srb has been timeouted\n", acb->pci_unit, srb); in arcmsr_drain_donequeue()
852 acb->pci_unit, srb, srb->srb_state, acb->srboutstandingcount); in arcmsr_drain_donequeue()
855 arcmsr_report_srb_state(acb, srb, error); in arcmsr_drain_donequeue()
863 struct CommandControlBlock *srb = (struct CommandControlBlock *)arg; in arcmsr_srb_timeout() local
868 target = srb->pccb->ccb_h.target_id; in arcmsr_srb_timeout()
869 lun = srb->pccb->ccb_h.target_lun; in arcmsr_srb_timeout()
870 acb = srb->acb; in arcmsr_srb_timeout()
872 if(srb->srb_state == ARCMSR_SRB_START) in arcmsr_srb_timeout()
874 cmd = scsiio_cdb_ptr(&srb->pccb->csio)[0]; in arcmsr_srb_timeout()
875 srb->srb_state = ARCMSR_SRB_TIMEOUT; in arcmsr_srb_timeout()
876 srb->pccb->ccb_h.status |= CAM_CMD_TIMEOUT; in arcmsr_srb_timeout()
877 arcmsr_srb_complete(srb, 1); in arcmsr_srb_timeout()
879 acb->pci_unit, target, lun, cmd, srb); in arcmsr_srb_timeout()
952 struct CommandControlBlock *srb; in arcmsr_iop_reset() local
964 srb = acb->psrb_pool[i]; in arcmsr_iop_reset()
965 if(srb->srb_state == ARCMSR_SRB_START) { in arcmsr_iop_reset()
966 srb->srb_state = ARCMSR_SRB_ABORTED; in arcmsr_iop_reset()
967 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_iop_reset()
968 arcmsr_srb_complete(srb, 1); in arcmsr_iop_reset()
970 , acb->pci_unit, srb->pccb->ccb_h.target_id in arcmsr_iop_reset()
971 , (uintmax_t)srb->pccb->ccb_h.target_lun, srb); in arcmsr_iop_reset()
987 static void arcmsr_build_srb(struct CommandControlBlock *srb, in arcmsr_build_srb() argument
990 struct ARCMSR_CDB *arcmsr_cdb = &srb->arcmsr_cdb; in arcmsr_build_srb()
993 union ccb *pccb = srb->pccb; in arcmsr_build_srb()
1005 struct AdapterControlBlock *acb = srb->acb; in arcmsr_build_srb()
1014 srb->srb_flags |= SRB_FLAG_WRITE; in arcmsr_build_srb()
1016 bus_dmamap_sync(acb->dm_segs_dmat, srb->dm_segs_dmamap, op); in arcmsr_build_srb()
1067 srb->arc_cdb_size = arccdbsize; in arcmsr_build_srb()
1074 static void arcmsr_post_srb(struct AdapterControlBlock *acb, struct CommandControlBlock *srb) in arcmsr_post_srb() argument
1076 u_int32_t cdb_phyaddr_low = (u_int32_t) srb->cdb_phyaddr; in arcmsr_post_srb()
1077 struct ARCMSR_CDB *arcmsr_cdb = (struct ARCMSR_CDB *)&srb->arcmsr_cdb; in arcmsr_post_srb()
1079 …bus_dmamap_sync(acb->srb_dmat, acb->srb_dmamap, (srb->srb_flags & SRB_FLAG_WRITE) ? BUS_DMASYNC_PO… in arcmsr_post_srb()
1081 srb->srb_state = ARCMSR_SRB_START; in arcmsr_post_srb()
1113 arc_cdb_size = (srb->arc_cdb_size > 0x300) ? 0x300 : srb->arc_cdb_size; in arcmsr_post_srb()
1136 pinbound_srb->addressHigh = (u_int32_t)((srb->cdb_phyaddr >> 16) >> 16); in arcmsr_post_srb()
1137 pinbound_srb->addressLow = (u_int32_t)srb->cdb_phyaddr; in arcmsr_post_srb()
1138 pinbound_srb->length = srb->arc_cdb_size >> 2; in arcmsr_post_srb()
1139 arcmsr_cdb->Context = (u_int32_t)srb->cdb_phyaddr; in arcmsr_post_srb()
1158 arc_cdb_size = (srb->arc_cdb_size > 0x300) ? 0x300 : srb->arc_cdb_size; in arcmsr_post_srb()
1159 ccb_post_stamp = (srb->smid | ((arc_cdb_size-1) >> 6)); in arcmsr_post_srb()
1167 if (srb->arc_cdb_size <= 0x300) in arcmsr_post_srb()
1168 arc_cdb_size = (srb->arc_cdb_size - 1) >> 6 | 1; in arcmsr_post_srb()
1170 arc_cdb_size = ((srb->arc_cdb_size + 0xff) >> 8) + 2; in arcmsr_post_srb()
1175 ccb_post_stamp = (srb->smid | arc_cdb_size); in arcmsr_post_srb()
1709 struct CommandControlBlock *srb; in arcmsr_abort_dr_ccbs() local
1717 srb = acb->psrb_pool[i]; in arcmsr_abort_dr_ccbs()
1718 if (srb->srb_state == ARCMSR_SRB_START) in arcmsr_abort_dr_ccbs()
1720 if((target == srb->pccb->ccb_h.target_id) && (lun == srb->pccb->ccb_h.target_lun)) in arcmsr_abort_dr_ccbs()
1722 srb->srb_state = ARCMSR_SRB_ABORTED; in arcmsr_abort_dr_ccbs()
1723 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_abort_dr_ccbs()
1724 arcmsr_srb_complete(srb, 1); in arcmsr_abort_dr_ccbs()
1725 printf("arcmsr%d: abort scsi id %d lun %d srb=%p \n", acb->pci_unit, target, lun, srb); in arcmsr_abort_dr_ccbs()
2724 static void arcmsr_free_srb(struct CommandControlBlock *srb) in arcmsr_free_srb() argument
2728 acb = srb->acb; in arcmsr_free_srb()
2730 srb->srb_state = ARCMSR_SRB_DONE; in arcmsr_free_srb()
2731 srb->srb_flags = 0; in arcmsr_free_srb()
2732 acb->srbworkingQ[acb->workingsrb_doneindex] = srb; in arcmsr_free_srb()
2743 struct CommandControlBlock *srb = NULL; in arcmsr_get_freesrb() local
2749 srb = acb->srbworkingQ[workingsrb_startindex]; in arcmsr_get_freesrb()
2755 srb = NULL; in arcmsr_get_freesrb()
2758 return(srb); in arcmsr_get_freesrb()
2965 struct CommandControlBlock *srb = (struct CommandControlBlock *)arg; in arcmsr_execute_srb() local
2966 struct AdapterControlBlock *acb = (struct AdapterControlBlock *)srb->acb; in arcmsr_execute_srb()
2970 pccb = srb->pccb; in arcmsr_execute_srb()
2983 arcmsr_srb_complete(srb, 0); in arcmsr_execute_srb()
2988 arcmsr_srb_complete(srb, 0); in arcmsr_execute_srb()
2994 arcmsr_srb_complete(srb, 0); in arcmsr_execute_srb()
3007 arcmsr_srb_complete(srb, 0); in arcmsr_execute_srb()
3013 bus_dmamap_unload(acb->dm_segs_dmat, srb->dm_segs_dmamap); in arcmsr_execute_srb()
3015 arcmsr_srb_complete(srb, 0); in arcmsr_execute_srb()
3026 arcmsr_srb_complete(srb, 0); in arcmsr_execute_srb()
3030 arcmsr_build_srb(srb, dm_segs, nseg); in arcmsr_execute_srb()
3031 arcmsr_post_srb(acb, srb); in arcmsr_execute_srb()
3034 arcmsr_callout_init(&srb->ccb_callout); in arcmsr_execute_srb()
3035 callout_reset_sbt(&srb->ccb_callout, SBT_1MS * in arcmsr_execute_srb()
3037 arcmsr_srb_timeout, srb, 0); in arcmsr_execute_srb()
3038 srb->srb_flags |= SRB_FLAG_TIMER_START; in arcmsr_execute_srb()
3047 struct CommandControlBlock *srb; in arcmsr_seek_cmd2abort() local
3066 srb = acb->psrb_pool[i]; in arcmsr_seek_cmd2abort()
3067 if(srb->srb_state == ARCMSR_SRB_START) { in arcmsr_seek_cmd2abort()
3068 if(srb->pccb == abortccb) { in arcmsr_seek_cmd2abort()
3069 srb->srb_state = ARCMSR_SRB_ABORTED; in arcmsr_seek_cmd2abort()
3073 , (uintmax_t)abortccb->ccb_h.target_lun, srb); in arcmsr_seek_cmd2abort()
3074 arcmsr_polling_srbdone(acb, srb); in arcmsr_seek_cmd2abort()
3166 struct CommandControlBlock *srb; in arcmsr_action() local
3181 if((srb = arcmsr_get_freesrb(acb)) == NULL) { in arcmsr_action()
3186 pccb->ccb_h.arcmsr_ccbsrb_ptr = srb; in arcmsr_action()
3188 srb->pccb = pccb; in arcmsr_action()
3190 , srb->dm_segs_dmamap in arcmsr_action()
3192 , arcmsr_execute_srb, srb, /*flags*/0); in arcmsr_action()
3464 struct CommandControlBlock *srb; in arcmsr_polling_hba_srbdone() local
3487 srb = (struct CommandControlBlock *) in arcmsr_polling_hba_srbdone()
3490 poll_srb_done = (srb == poll_srb) ? 1:0; in arcmsr_polling_hba_srbdone()
3491 if((srb->acb != acb) || (srb->srb_state != ARCMSR_SRB_START)) { in arcmsr_polling_hba_srbdone()
3492 if(srb->srb_state == ARCMSR_SRB_ABORTED) { in arcmsr_polling_hba_srbdone()
3496 , srb->pccb->ccb_h.target_id in arcmsr_polling_hba_srbdone()
3497 , (uintmax_t)srb->pccb->ccb_h.target_lun, srb); in arcmsr_polling_hba_srbdone()
3498 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_polling_hba_srbdone()
3499 arcmsr_srb_complete(srb, 1); in arcmsr_polling_hba_srbdone()
3505 , srb, acb->srboutstandingcount); in arcmsr_polling_hba_srbdone()
3508 arcmsr_report_srb_state(acb, srb, error); in arcmsr_polling_hba_srbdone()
3519 struct CommandControlBlock *srb; in arcmsr_polling_hbb_srbdone() local
3546 srb = (struct CommandControlBlock *) in arcmsr_polling_hbb_srbdone()
3549 poll_srb_done = (srb == poll_srb) ? 1:0; in arcmsr_polling_hbb_srbdone()
3550 if((srb->acb != acb) || (srb->srb_state != ARCMSR_SRB_START)) { in arcmsr_polling_hbb_srbdone()
3551 if(srb->srb_state == ARCMSR_SRB_ABORTED) { in arcmsr_polling_hbb_srbdone()
3555 , srb->pccb->ccb_h.target_id in arcmsr_polling_hbb_srbdone()
3556 , (uintmax_t)srb->pccb->ccb_h.target_lun, srb); in arcmsr_polling_hbb_srbdone()
3557 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_polling_hbb_srbdone()
3558 arcmsr_srb_complete(srb, 1); in arcmsr_polling_hbb_srbdone()
3564 , srb, acb->srboutstandingcount); in arcmsr_polling_hbb_srbdone()
3567 arcmsr_report_srb_state(acb, srb, error); in arcmsr_polling_hbb_srbdone()
3577 struct CommandControlBlock *srb; in arcmsr_polling_hbc_srbdone() local
3601 …srb = (struct CommandControlBlock *)(acb->vir2phy_offset+(flag_srb & 0xFFFFFFE0));/*frame must be … in arcmsr_polling_hbc_srbdone()
3604 poll_srb_done = (srb == poll_srb) ? 1:0; in arcmsr_polling_hbc_srbdone()
3605 if((srb->acb != acb) || (srb->srb_state != ARCMSR_SRB_START)) { in arcmsr_polling_hbc_srbdone()
3606 if(srb->srb_state == ARCMSR_SRB_ABORTED) { in arcmsr_polling_hbc_srbdone()
3608 , acb->pci_unit, srb->pccb->ccb_h.target_id, (uintmax_t)srb->pccb->ccb_h.target_lun, srb); in arcmsr_polling_hbc_srbdone()
3609 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_polling_hbc_srbdone()
3610 arcmsr_srb_complete(srb, 1); in arcmsr_polling_hbc_srbdone()
3614 , acb->pci_unit, srb, acb->srboutstandingcount); in arcmsr_polling_hbc_srbdone()
3617 arcmsr_report_srb_state(acb, srb, error); in arcmsr_polling_hbc_srbdone()
3628 struct CommandControlBlock *srb; in arcmsr_polling_hbd_srbdone() local
3656 …srb = (struct CommandControlBlock *)(acb->vir2phy_offset+(flag_srb & 0xFFFFFFE0));/*frame must be … in arcmsr_polling_hbd_srbdone()
3660 poll_srb_done = (srb == poll_srb) ? 1:0; in arcmsr_polling_hbd_srbdone()
3661 if((srb->acb != acb) || (srb->srb_state != ARCMSR_SRB_START)) { in arcmsr_polling_hbd_srbdone()
3662 if(srb->srb_state == ARCMSR_SRB_ABORTED) { in arcmsr_polling_hbd_srbdone()
3664 , acb->pci_unit, srb->pccb->ccb_h.target_id, (uintmax_t)srb->pccb->ccb_h.target_lun, srb); in arcmsr_polling_hbd_srbdone()
3665 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_polling_hbd_srbdone()
3666 arcmsr_srb_complete(srb, 1); in arcmsr_polling_hbd_srbdone()
3670 , acb->pci_unit, srb, acb->srboutstandingcount); in arcmsr_polling_hbd_srbdone()
3673 arcmsr_report_srb_state(acb, srb, error); in arcmsr_polling_hbd_srbdone()
3683 struct CommandControlBlock *srb; in arcmsr_polling_hbe_srbdone() local
3711 srb = acb->psrb_pool[cmdSMID]; in arcmsr_polling_hbe_srbdone()
3714 poll_srb_done = (srb == poll_srb) ? 1:0; in arcmsr_polling_hbe_srbdone()
3715 if((srb->acb != acb) || (srb->srb_state != ARCMSR_SRB_START)) { in arcmsr_polling_hbe_srbdone()
3716 if(srb->srb_state == ARCMSR_SRB_ABORTED) { in arcmsr_polling_hbe_srbdone()
3718 , acb->pci_unit, srb->pccb->ccb_h.target_id, (uintmax_t)srb->pccb->ccb_h.target_lun, srb); in arcmsr_polling_hbe_srbdone()
3719 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_polling_hbe_srbdone()
3720 arcmsr_srb_complete(srb, 1); in arcmsr_polling_hbe_srbdone()
3724 , acb->pci_unit, srb, acb->srboutstandingcount); in arcmsr_polling_hbe_srbdone()
3727 arcmsr_report_srb_state(acb, srb, error); in arcmsr_polling_hbe_srbdone()
5326 struct CommandControlBlock *srb; in arcmsr_shutdown() local
5344 srb = acb->psrb_pool[i]; in arcmsr_shutdown()
5345 if(srb->srb_state == ARCMSR_SRB_START) { in arcmsr_shutdown()
5346 srb->srb_state = ARCMSR_SRB_ABORTED; in arcmsr_shutdown()
5347 srb->pccb->ccb_h.status |= CAM_REQ_ABORTED; in arcmsr_shutdown()
5348 arcmsr_srb_complete(srb, 1); in arcmsr_shutdown()