advlib.c (40133) | advlib.c (40733) |
---|---|
1/* 2 * Low level routines for the Advanced Systems Inc. SCSI controllers chips 3 * 4 * Copyright (c) 1996-1997 Justin Gibbs. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 14 unchanged lines hidden (view full) --- 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 * | 1/* 2 * Low level routines for the Advanced Systems Inc. SCSI controllers chips 3 * 4 * Copyright (c) 1996-1997 Justin Gibbs. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 14 unchanged lines hidden (view full) --- 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 * |
31 * $Id: advlib.c,v 1.7 1998/10/07 03:32:57 gibbs Exp $ | 31 * $Id: advlib.c,v 1.8 1998/10/09 21:40:50 gibbs Exp $ |
32 */ 33/* 34 * Ported from: 35 * advansys.c - Linux Host Driver for AdvanSys SCSI Adapters 36 * 37 * Copyright (c) 1995-1996 Advanced System Products, Inc. 38 * All Rights Reserved. 39 * --- 986 unchanged lines hidden (view full) --- 1026 u_int8_t scsi_status; 1027 union ccb *ccb; 1028 1029 scsi_status = adv_read_lram_8(adv, halt_q_addr 1030 + ADV_SCSIQ_SCSI_STATUS); 1031 ccb = (union ccb *) adv_read_lram_32(adv, halt_q_addr 1032 + ADV_SCSIQ_D_CCBPTR); 1033 xpt_freeze_devq(ccb->ccb_h.path, /*count*/1); | 32 */ 33/* 34 * Ported from: 35 * advansys.c - Linux Host Driver for AdvanSys SCSI Adapters 36 * 37 * Copyright (c) 1995-1996 Advanced System Products, Inc. 38 * All Rights Reserved. 39 * --- 986 unchanged lines hidden (view full) --- 1026 u_int8_t scsi_status; 1027 union ccb *ccb; 1028 1029 scsi_status = adv_read_lram_8(adv, halt_q_addr 1030 + ADV_SCSIQ_SCSI_STATUS); 1031 ccb = (union ccb *) adv_read_lram_32(adv, halt_q_addr 1032 + ADV_SCSIQ_D_CCBPTR); 1033 xpt_freeze_devq(ccb->ccb_h.path, /*count*/1); |
1034 ccb->ccb_h.status |= CAM_DEV_QFRZN; | 1034 ccb->ccb_h.status |= CAM_DEV_QFRZN|CAM_SCSI_STATUS_ERROR; 1035 ccb->csio.scsi_status = SCSI_STATUS_QUEUE_FULL; |
1035 adv_abort_ccb(adv, tid_no, ADV_TIX_TO_LUN(target_ix), 1036 /*ccb*/NULL, CAM_REQUEUE_REQ, 1037 /*queued_only*/TRUE); 1038 scsi_busy = adv_read_lram_8(adv, ADVV_SCSIBUSY_B); 1039 scsi_busy &= ~target_mask; 1040 adv_write_lram_8(adv, ADVV_SCSIBUSY_B, scsi_busy); 1041 } 1042 adv_write_lram_16(adv, ADVV_HALTCODE_W, 0); --- 922 unchanged lines hidden (view full) --- 1965 && (scsiq->d2.target_ix == target_ix) 1966 && (queued_only == 0 1967 || !(scsiq->q_status & (QS_DISC1|QS_DISC2|QS_BUSY|QS_DONE))) 1968 && (ccb == NULL || (ccb == (union ccb *)scsiq->d2.ccb_ptr))) { 1969 union ccb *aborted_ccb; 1970 struct adv_ccb_info *cinfo; 1971 1972 scsiq->q_status |= QS_ABORTED; | 1036 adv_abort_ccb(adv, tid_no, ADV_TIX_TO_LUN(target_ix), 1037 /*ccb*/NULL, CAM_REQUEUE_REQ, 1038 /*queued_only*/TRUE); 1039 scsi_busy = adv_read_lram_8(adv, ADVV_SCSIBUSY_B); 1040 scsi_busy &= ~target_mask; 1041 adv_write_lram_8(adv, ADVV_SCSIBUSY_B, scsi_busy); 1042 } 1043 adv_write_lram_16(adv, ADVV_HALTCODE_W, 0); --- 922 unchanged lines hidden (view full) --- 1966 && (scsiq->d2.target_ix == target_ix) 1967 && (queued_only == 0 1968 || !(scsiq->q_status & (QS_DISC1|QS_DISC2|QS_BUSY|QS_DONE))) 1969 && (ccb == NULL || (ccb == (union ccb *)scsiq->d2.ccb_ptr))) { 1970 union ccb *aborted_ccb; 1971 struct adv_ccb_info *cinfo; 1972 1973 scsiq->q_status |= QS_ABORTED; |
1973 scsiq->d3.done_stat = QD_ABORTED_BY_HOST; | |
1974 adv_write_lram_8(adv, q_addr + ADV_SCSIQ_B_STATUS, 1975 scsiq->q_status); 1976 aborted_ccb = (union ccb *)scsiq->d2.ccb_ptr; 1977 /* Don't clobber earlier error codes */ 1978 if ((aborted_ccb->ccb_h.status & CAM_STATUS_MASK) 1979 == CAM_REQ_INPROG) 1980 aborted_ccb->ccb_h.status |= status; 1981 cinfo = (struct adv_ccb_info *) --- 58 unchanged lines hidden --- | 1974 adv_write_lram_8(adv, q_addr + ADV_SCSIQ_B_STATUS, 1975 scsiq->q_status); 1976 aborted_ccb = (union ccb *)scsiq->d2.ccb_ptr; 1977 /* Don't clobber earlier error codes */ 1978 if ((aborted_ccb->ccb_h.status & CAM_STATUS_MASK) 1979 == CAM_REQ_INPROG) 1980 aborted_ccb->ccb_h.status |= status; 1981 cinfo = (struct adv_ccb_info *) --- 58 unchanged lines hidden --- |