Lines Matching full:request

62 static void ata_cam_end_transaction(device_t dev, struct ata_request *request);
63 static void ata_cam_request_sense(device_t dev, struct ata_request *request);
286 struct ata_request *request; in ata_reinit() local
289 if ((request = ch->running)) { in ata_reinit()
293 callout_stop(&request->callout); in ata_reinit()
295 ch->dma.unload(request); in ata_reinit()
296 request->result = ERESTART; in ata_reinit()
297 ata_cam_end_transaction(dev, request); in ata_reinit()
359 struct ata_request *request; in ata_interrupt_locked() local
365 /* do we have a running request */ in ata_interrupt_locked()
366 if (!(request = ch->running)) in ata_interrupt_locked()
369 ATA_DEBUG_RQ(request, "interrupt"); in ata_interrupt_locked()
373 device_printf(request->dev, "interrupt on idle channel ignored\n"); in ata_interrupt_locked()
378 * we have the HW locks, so end the transaction for this request in ata_interrupt_locked()
381 if (ch->hw.end_transaction(request) == ATA_OP_FINISHED) { in ata_interrupt_locked()
385 ata_cam_end_transaction(ch->dev, request); in ata_interrupt_locked()
436 ata_cmd2str(struct ata_request *request) in ata_cmd2str() argument
440 if (request->flags & ATA_R_ATAPI) { in ata_cmd2str()
441 switch (request->u.atapi.sense.key ? in ata_cmd2str()
442 request->u.atapi.saved_cmd : request->u.atapi.ccb[0]) { in ata_cmd2str()
497 switch (request->u.ata.command) { in ata_cmd2str()
499 switch (request->u.ata.feature) { in ata_cmd2str()
506 switch (request->u.ata.feature) { in ata_cmd2str()
534 switch (request->u.ata.feature) { in ata_cmd2str()
546 if (request->u.ata.feature == 0xec) in ata_cmd2str()
548 switch (request->u.ata.lba) { in ata_cmd2str()
563 switch(request->u.ata.feature) { in ata_cmd2str()
602 switch (request->u.ata.feature) { in ata_cmd2str()
629 sprintf(buffer, "unknown CMD (0x%02x)", request->u.ata.command); in ata_cmd2str()
704 struct ata_request *request; in ata_timeout() local
707 request = arg; in ata_timeout()
708 ch = device_get_softc(request->parent); in ata_timeout()
709 //request->flags |= ATA_R_DEBUG; in ata_timeout()
710 ATA_DEBUG_RQ(request, "timeout"); in ata_timeout()
713 * If we have an ATA_ACTIVE request running, we flag the request in ata_timeout()
715 * Also, NULL out the running request so we wont loose the race with in ata_timeout()
719 request->flags |= ATA_R_TIMEOUT; in ata_timeout()
721 ch->dma.unload(request); in ata_timeout()
724 ata_cam_end_transaction(ch->dev, request); in ata_timeout()
733 struct ata_request *request; in ata_cam_begin_transaction() local
735 request = &ch->request; in ata_cam_begin_transaction()
736 bzero(request, sizeof(*request)); in ata_cam_begin_transaction()
738 /* setup request */ in ata_cam_begin_transaction()
739 request->dev = NULL; in ata_cam_begin_transaction()
740 request->parent = dev; in ata_cam_begin_transaction()
741 request->unit = ccb->ccb_h.target_id; in ata_cam_begin_transaction()
743 request->data = ccb->ataio.data_ptr; in ata_cam_begin_transaction()
744 request->bytecount = ccb->ataio.dxfer_len; in ata_cam_begin_transaction()
745 request->u.ata.command = ccb->ataio.cmd.command; in ata_cam_begin_transaction()
746 request->u.ata.feature = ((uint16_t)ccb->ataio.cmd.features_exp << 8) | in ata_cam_begin_transaction()
748 request->u.ata.count = ((uint16_t)ccb->ataio.cmd.sector_count_exp << 8) | in ata_cam_begin_transaction()
751 request->flags |= ATA_R_48BIT; in ata_cam_begin_transaction()
752 request->u.ata.lba = in ata_cam_begin_transaction()
757 request->u.ata.lba = in ata_cam_begin_transaction()
760 request->u.ata.lba |= ((uint64_t)ccb->ataio.cmd.lba_high << 16) | in ata_cam_begin_transaction()
764 request->flags |= ATA_R_NEEDRESULT; in ata_cam_begin_transaction()
767 request->flags |= ATA_R_DMA; in ata_cam_begin_transaction()
769 request->flags |= ATA_R_READ; in ata_cam_begin_transaction()
771 request->flags |= ATA_R_WRITE; in ata_cam_begin_transaction()
776 request->transfersize = min(request->bytecount, in ata_cam_begin_transaction()
779 request->transfersize = min(request->bytecount, 512); in ata_cam_begin_transaction()
781 request->data = ccb->csio.data_ptr; in ata_cam_begin_transaction()
782 request->bytecount = ccb->csio.dxfer_len; in ata_cam_begin_transaction()
785 request->u.atapi.ccb, ccb->csio.cdb_len); in ata_cam_begin_transaction()
786 request->flags |= ATA_R_ATAPI; in ata_cam_begin_transaction()
788 request->flags |= ATA_R_ATAPI16; in ata_cam_begin_transaction()
791 request->flags |= ATA_R_DMA; in ata_cam_begin_transaction()
793 request->flags |= ATA_R_READ; in ata_cam_begin_transaction()
795 request->flags |= ATA_R_WRITE; in ata_cam_begin_transaction()
796 request->transfersize = min(request->bytecount, in ata_cam_begin_transaction()
799 request->retries = 0; in ata_cam_begin_transaction()
800 request->timeout = (ccb->ccb_h.timeout + 999) / 1000; in ata_cam_begin_transaction()
801 callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); in ata_cam_begin_transaction()
802 request->ccb = ccb; in ata_cam_begin_transaction()
803 request->flags |= ATA_R_DATA_IN_CCB; in ata_cam_begin_transaction()
805 ch->running = request; in ata_cam_begin_transaction()
807 if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { in ata_cam_begin_transaction()
810 ata_cam_end_transaction(dev, request); in ata_cam_begin_transaction()
816 ata_cam_request_sense(device_t dev, struct ata_request *request) in ata_cam_request_sense() argument
819 union ccb *ccb = request->ccb; in ata_cam_request_sense()
823 bzero(request, sizeof(*request)); in ata_cam_request_sense()
824 request->dev = NULL; in ata_cam_request_sense()
825 request->parent = dev; in ata_cam_request_sense()
826 request->unit = ccb->ccb_h.target_id; in ata_cam_request_sense()
827 request->data = (void *)&ccb->csio.sense_data; in ata_cam_request_sense()
828 request->bytecount = ccb->csio.sense_len; in ata_cam_request_sense()
829 request->u.atapi.ccb[0] = ATAPI_REQUEST_SENSE; in ata_cam_request_sense()
830 request->u.atapi.ccb[4] = ccb->csio.sense_len; in ata_cam_request_sense()
831 request->flags |= ATA_R_ATAPI; in ata_cam_request_sense()
833 request->flags |= ATA_R_ATAPI16; in ata_cam_request_sense()
835 request->flags |= ATA_R_DMA; in ata_cam_request_sense()
836 request->flags |= ATA_R_READ; in ata_cam_request_sense()
837 request->transfersize = min(request->bytecount, in ata_cam_request_sense()
839 request->retries = 0; in ata_cam_request_sense()
840 request->timeout = (ccb->ccb_h.timeout + 999) / 1000; in ata_cam_request_sense()
841 callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); in ata_cam_request_sense()
842 request->ccb = ccb; in ata_cam_request_sense()
844 ch->running = request; in ata_cam_request_sense()
846 if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { in ata_cam_request_sense()
849 ata_cam_end_transaction(dev, request); in ata_cam_request_sense()
855 ata_cam_process_sense(device_t dev, struct ata_request *request) in ata_cam_process_sense() argument
858 union ccb *ccb = request->ccb; in ata_cam_process_sense()
863 if (request->flags & ATA_R_TIMEOUT) in ata_cam_process_sense()
865 if ((request->flags & ATA_R_TIMEOUT) == 0 && in ata_cam_process_sense()
866 (request->status & ATA_S_ERROR) == 0 && in ata_cam_process_sense()
867 request->result == 0) { in ata_cam_process_sense()
881 ata_cam_end_transaction(device_t dev, struct ata_request *request) in ata_cam_end_transaction() argument
884 union ccb *ccb = request->ccb; in ata_cam_end_transaction()
888 ata_cam_process_sense(dev, request); in ata_cam_end_transaction()
893 if (request->flags & ATA_R_TIMEOUT) { in ata_cam_end_transaction()
898 } else if (request->status & ATA_S_ERROR) { in ata_cam_end_transaction()
905 } else if (request->result == ERESTART) in ata_cam_end_transaction()
907 else if (request->result != 0) in ata_cam_end_transaction()
917 ((request->status & ATA_S_ERROR) || in ata_cam_end_transaction()
920 res->status = request->status; in ata_cam_end_transaction()
921 res->error = request->error; in ata_cam_end_transaction()
922 res->lba_low = request->u.ata.lba; in ata_cam_end_transaction()
923 res->lba_mid = request->u.ata.lba >> 8; in ata_cam_end_transaction()
924 res->lba_high = request->u.ata.lba >> 16; in ata_cam_end_transaction()
925 res->device = request->u.ata.lba >> 24; in ata_cam_end_transaction()
926 res->lba_low_exp = request->u.ata.lba >> 24; in ata_cam_end_transaction()
927 res->lba_mid_exp = request->u.ata.lba >> 32; in ata_cam_end_transaction()
928 res->lba_high_exp = request->u.ata.lba >> 40; in ata_cam_end_transaction()
929 res->sector_count = request->u.ata.count; in ata_cam_end_transaction()
930 res->sector_count_exp = request->u.ata.count >> 8; in ata_cam_end_transaction()
935 ccb->ataio.dxfer_len - request->donecount; in ata_cam_end_transaction()
938 ccb->csio.dxfer_len - request->donecount; in ata_cam_end_transaction()
943 ata_cam_request_sense(dev, request); in ata_cam_end_transaction()