Date: Sat, 30 Mar 1996 19:21:56 -0800 (PST) From: "Justin T. Gibbs" <gibbs> To: CVS-committers, cvs-all, cvs-sys Subject: cvs commit: src/sys/dev/aic7xxx aic7xxx.seq aic7xxx_asm.c aic7xxx_reg.h src/sys/scsi scsi_base.c scsiconf.h src/sys/i386/eisa aic7770.c src/sys/i386/isa bt5xx-445.c src/sys/i386/scsi aic7xxx.c aic7xxx.h src/sys/pci aic7870.c ncr.c src/sys/sys queue.h Message-ID: <199603310321.TAA08774@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
gibbs 96/03/30 19:21:52 Modified: sys/dev/aic7xxx aic7xxx.seq aic7xxx_asm.c aic7xxx_reg.h Log: aic7xxx.seq: Fix support for the aic7850 by looking only at the relavent bits of the QINCNT. The 7850 puts random garbage in the high bits and all my attempts to determine the cause of this failed. This approach does seem to work around the problem. Don't trust SCSIPERR to tell us when there is a parity error. On some revs of the 7870 and the 7880, this bit follows the parity of the current byte. Instead of using a SEQINT to tell the kernel, re-enable the standard parity error interrupt since it seems to pause the sequencer right at the time of the error which is the effect we were looking for anyway. aic7xxx_reg.h: Remove PARITY_ERROR seqeuncer interrupt type, its no longer used. Define QCOUNTMASK as the SRAM location for the mask to use on the QINCNT register. QCOUNTMASK is determined by the number of SCBs supported by the device we're working on. aic7xxx_asm.c Properly check the return value of fopen, and define the arg list in getopt correctly. Submitted by: Pete Bentley <pete@demon.net> Revision Changes Path 1.32 +3 -11 src/sys/dev/aic7xxx/aic7xxx.seq 1.12 +4 -4 src/sys/dev/aic7xxx/aic7xxx_asm.c 1.7 +6 -8 src/sys/dev/aic7xxx/aic7xxx_reg.h Modified: sys/i386/eisa aic7770.c Log: Don't set the number of SCBs here. aic7xxx.c determines the number of SCBs by walking them. Revision Changes Path 1.26 +1 -7 src/sys/i386/eisa/aic7770.c Modified: sys/i386/isa bt5xx-445.c Log: Override the unit number passed into us in the isa_device structure with the current unit in bt_unit. We do this as a kludge to make the unit nubmer work properly between the pci/eisa/isa bt boards that are in the system. Revision Changes Path 1.3 +8 -1 src/sys/i386/isa/bt5xx-445.c Modified: sys/i386/scsi aic7xxx.c aic7xxx.h Log: Fix support for the aic7850 by looking only at the relavent bits of the QINCNT. The 7850 puts random garbage in the high bits and all my attempts to determine the cause of this failed. This approach does seem to work around the problem. Go back to relying on the SCSIPERR interrupt instead of having the sequencer interrupt at the beginning of ITloop after a parity error occured. Determine the number of SCBs on a card automatically and base the qcntmask on the number of SCBs. Add entries for 11.4MHz, 8.8MHz, 8.0MHz, and 7.2MHz to ULTRA portion of the syncrate table. They seem to work fine on the 2940UW I have here and will allow more non-ultra devices (like my tape drive) to run sync while the adapter is in ULTRA mode. Return XS_SELTIMEOUT instead of XS_TIMEOUT for selection timeouts. I was getting sick of waiting for the SCSI code to retry each non-existant unit multiple times during boot and XS_SELTIMEOUT bypasses all retries. Use new SLIST queue macros. This was inspired by NetBSD using TAILQs in their SCSI drivers. For optimum cache hits, the free scb list should be LIFO which is what the old and new code does. NetBSD implemented a FIFO queue for some reason. Spaces -> tabs. Revision Changes Path 1.60 +214 -171 src/sys/i386/scsi/aic7xxx.c 1.23 +4 -29 src/sys/i386/scsi/aic7xxx.h Modified: sys/pci aic7870.c ncr.c Log: ncr.c: Use new XS_SELTIMEOUT error code for selection timeouts. aic7870.c: Move SCB walking code to aic7xxx.c and make it work for all card types. The flag AHC_EXTSCB is no longer needed since the SCBs are walked in all cases now. Revision Changes Path 1.28 +2 -29 src/sys/pci/aic7870.c 1.69 +9 -4 src/sys/pci/ncr.c Modified: sys/scsi scsi_base.c scsiconf.h Log: Implement the XS_SELTIMEOUT error code. This causes the SCSI code to not retry again and should be used when a device times out during selection (ie is not on the bus). This should speed up the boot sequence. Revision Changes Path 1.37 +2 -1 src/sys/scsi/scsi_base.c 1.41 +3 -2 src/sys/scsi/scsiconf.h Modified: sys/sys queue.h Log: Implement the SLIST and the STAILQ macros. This gives a program all the aesthetics of using the 4.4 queue macros without paying undo space or time in scenartios where a singly-linked list works fine. From queue.h: /* * A singly-linked list is headed by a single forward pointer. The elements * are singly linked for minimum space and pointer manipulation overhead at * the expense of O(n) removal for arbitrary elements. New elements can be * added to the list after an existing element or at the head of the list. * Elements being removed from the head of the list should use the explicit * macro for this purpose for optimum efficiency. A singly-linked list may * only be traversed in the forward direction. Singly-linked lists are ideal * for applications with large datasets and few or no removals or for * implementing a LIFO queue. * * A singly-linked tail queue is headed by a pair of pointers, one to the * head of the list and the other to the tail of the list. The elements are * singly linked for minimum space and pointer manipulation overhead at the * expense of O(n) removal for arbitrary elements. New elements can be added * to the list after an existing element, at the head of the list, or at the * end of the list. Elements being removed from the head of the tail queue * should use the explicit macro for this purpose for optimum efficiency. * A singly-linked tail queue may only be traversed in the forward direction. * Singly-linked tail queues are ideal for applications with large datasets * and few or no removals or for implementing a FIFO queue. */ Revision Changes Path 1.8 +131 -3 src/sys/sys/queue.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603310321.TAA08774>