Commit a4731d08 authored by Justin T. Gibbs's avatar Justin T. Gibbs

Aic7xxx Driver Update (6.2.33)

 o Correct MODULE_INFO string.
 o Bump version number.
parent 8e35db34
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES. * POSSIBILITY OF SUCH DAMAGES.
* *
* $Id: //depot/aic7xxx/aic7xxx/aic7xxx_inline.h#41 $ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_inline.h#42 $
* *
* $FreeBSD$ * $FreeBSD$
*/ */
...@@ -585,6 +585,20 @@ ahc_intr(struct ahc_softc *ahc) ...@@ -585,6 +585,20 @@ ahc_intr(struct ahc_softc *ahc)
intstat = ahc_inb(ahc, INTSTAT); intstat = ahc_inb(ahc, INTSTAT);
} }
if ((intstat & INT_PEND) == 0) {
#if AHC_PCI_CONFIG > 0
if (ahc->unsolicited_ints > 500) {
ahc->unsolicited_ints = 0;
if ((ahc->chip & AHC_PCI) != 0
&& (ahc_inb(ahc, ERROR) & PCIERRSTAT) != 0)
ahc->bus_intr(ahc);
}
#endif
ahc->unsolicited_ints++;
return (0);
}
ahc->unsolicited_ints = 0;
if (intstat & CMDCMPLT) { if (intstat & CMDCMPLT) {
ahc_outb(ahc, CLRINT, CLRCMDINT); ahc_outb(ahc, CLRINT, CLRCMDINT);
...@@ -604,20 +618,6 @@ ahc_intr(struct ahc_softc *ahc) ...@@ -604,20 +618,6 @@ ahc_intr(struct ahc_softc *ahc)
#endif #endif
} }
if ((intstat & INT_PEND) == 0) {
#if AHC_PCI_CONFIG > 0
if (ahc->unsolicited_ints > 500) {
ahc->unsolicited_ints = 0;
if ((ahc->chip & AHC_PCI) != 0
&& (ahc_inb(ahc, ERROR) & PCIERRSTAT) != 0)
ahc->bus_intr(ahc);
}
#endif
ahc->unsolicited_ints++;
return (0);
}
ahc->unsolicited_ints = 0;
/* /*
* Handle statuses that may invalidate our cached * Handle statuses that may invalidate our cached
* copy of INTSTAT separately. * copy of INTSTAT separately.
......
/* /*
* Adaptec AIC7xxx device driver for Linux. * Adaptec AIC7xxx device driver for Linux.
* *
* $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#218 $ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#220 $
* *
* Copyright (c) 1994 John Aycock * Copyright (c) 1994 John Aycock
* The University of Calgary Department of Computer Science. * The University of Calgary Department of Computer Science.
...@@ -465,7 +465,7 @@ MODULE_PARM_DESC(aic7xxx, ...@@ -465,7 +465,7 @@ MODULE_PARM_DESC(aic7xxx,
" allow_memio Allow device registers to be memory mapped\n" " allow_memio Allow device registers to be memory mapped\n"
" debug Bitmask of debug values to enable\n" " debug Bitmask of debug values to enable\n"
" no_probe Toggle EISA/VLB controller probing\n" " no_probe Toggle EISA/VLB controller probing\n"
" eisa_vl_probe Toggle EISA/VLB controller probing\n" " probe_eisa_vl Toggle EISA/VLB controller probing\n"
" no_reset Supress initial bus resets\n" " no_reset Supress initial bus resets\n"
" extended Enable extended geometry on all controllers\n" " extended Enable extended geometry on all controllers\n"
" periodic_otag Send an ordered tagged transaction\n" " periodic_otag Send an ordered tagged transaction\n"
...@@ -485,7 +485,7 @@ MODULE_PARM_DESC(aic7xxx, ...@@ -485,7 +485,7 @@ MODULE_PARM_DESC(aic7xxx,
" Set tag depth on Controller 1/Target 1 to 10 tags\n" " Set tag depth on Controller 1/Target 1 to 10 tags\n"
" Shorten the selection timeout to 128ms\n" " Shorten the selection timeout to 128ms\n"
"\n" "\n"
" options aic7xxx 'aic7xxx=eisa_vl_probe.tag_info:{{}.{.10}}.seltime:1'\n" " options aic7xxx 'aic7xxx=probe_eisa_vl.tag_info:{{}.{.10}}.seltime:1'\n"
); );
#endif #endif
...@@ -1682,7 +1682,7 @@ aic7xxx_setup(char *s) ...@@ -1682,7 +1682,7 @@ aic7xxx_setup(char *s)
#endif #endif
{ "reverse_scan", &aic7xxx_reverse_scan }, { "reverse_scan", &aic7xxx_reverse_scan },
{ "no_probe", &aic7xxx_probe_eisa_vl }, { "no_probe", &aic7xxx_probe_eisa_vl },
{ "probe_eisa_vlb", &aic7xxx_probe_eisa_vl }, { "probe_eisa_vl", &aic7xxx_probe_eisa_vl },
{ "periodic_otag", &aic7xxx_periodic_otag }, { "periodic_otag", &aic7xxx_periodic_otag },
{ "pci_parity", &aic7xxx_pci_parity }, { "pci_parity", &aic7xxx_pci_parity },
{ "seltime", &aic7xxx_seltime }, { "seltime", &aic7xxx_seltime },
...@@ -4735,6 +4735,7 @@ ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag) ...@@ -4735,6 +4735,7 @@ ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag)
u_int saved_scsiid; u_int saved_scsiid;
u_int cdb_byte; u_int cdb_byte;
int retval; int retval;
int was_paused;
int paused; int paused;
int wait; int wait;
int disconnected; int disconnected;
...@@ -4863,11 +4864,10 @@ ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag) ...@@ -4863,11 +4864,10 @@ ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag)
* behind our back and that we didn't "just" miss * behind our back and that we didn't "just" miss
* an interrupt that would affect this cmd. * an interrupt that would affect this cmd.
*/ */
was_paused = ahc_is_paused(ahc);
ahc_pause_and_flushwork(ahc); ahc_pause_and_flushwork(ahc);
paused = TRUE; paused = TRUE;
ahc_dump_card_state(ahc);
if ((pending_scb->flags & SCB_ACTIVE) == 0) { if ((pending_scb->flags & SCB_ACTIVE) == 0) {
printf("%s:%d:%d:%d: Command already completed\n", printf("%s:%d:%d:%d: Command already completed\n",
ahc_name(ahc), cmd->device->channel, cmd->device->id, ahc_name(ahc), cmd->device->channel, cmd->device->id,
...@@ -4875,6 +4875,10 @@ ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag) ...@@ -4875,6 +4875,10 @@ ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag)
goto no_cmd; goto no_cmd;
} }
printf("%s: At time of recovery, card was %spaused\n",
was_paused ? "" : "not ");
ahc_dump_card_state(ahc);
disconnected = TRUE; disconnected = TRUE;
if (flag == SCB_ABORT) { if (flag == SCB_ABORT) {
if (ahc_search_qinfifo(ahc, cmd->device->id, if (ahc_search_qinfifo(ahc, cmd->device->id,
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES. * POSSIBILITY OF SUCH DAMAGES.
* *
* $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#139 $ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#140 $
* *
*/ */
#ifndef _AIC7XXX_LINUX_H_ #ifndef _AIC7XXX_LINUX_H_
...@@ -305,7 +305,7 @@ ahc_scb_timer_reset(struct scb *scb, u_int usec) ...@@ -305,7 +305,7 @@ ahc_scb_timer_reset(struct scb *scb, u_int usec)
#define AHC_SCSI_HAS_HOST_LOCK 0 #define AHC_SCSI_HAS_HOST_LOCK 0
#endif #endif
#define AIC7XXX_DRIVER_VERSION "6.2.32" #define AIC7XXX_DRIVER_VERSION "6.2.33"
/**************************** Front End Queues ********************************/ /**************************** Front End Queues ********************************/
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment