home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.periphs.scsi:5487 comp.unix.bsd:8951
- Newsgroups: comp.periphs.scsi,comp.unix.bsd
- Path: sparky!uunet!stanford.edu!ames!pasteur!cory.Berkeley.EDU!sim
- From: sim@cory.Berkeley.EDU (Peng-Toh Sim)
- Subject: Re: Buslogic SCSI controllers
- Message-ID: <1992Nov16.204938.11966@pasteur.Berkeley.EDU>
- Keywords: scsi,Adaptec,1542B,wahtever,customer , service,support
- Sender: nntp@pasteur.Berkeley.EDU (NNTP Poster)
- Nntp-Posting-Host: cory.berkeley.edu
- Organization: University of California, at Berkeley
- References: <BxK6o8.16o@brunel.ac.uk> <1992Nov12.155817.15875@gumby.dsd.trw.com> <Bxrw7o.K4n@csi.compuserve.com>
- Distribution: usa
- Date: Mon, 16 Nov 1992 20:49:38 GMT
- Lines: 46
-
- Hi
-
- I'm using a BusTek 542B (don't know the new name for this) under
- 386BSD using the default 1542B device driver that comes with
- 386BSD. Is this board supposed to be a total AHA 1542B clone?
- Well, I'm programming this thing using a AHA 1542B technical reference.
- According to the manual, a CCB command 04H is a Scatter/Gather with
- residual data length returned. The Data Length should contain the
- number of bytes in the Data Segment list (which is NOT equal to
- the actual number of bytes of for the operation requested.)
- Suppose I have a file on tape of length 512 (tape block size
- on Archive Viper 2150S), and I request a read of 8192 bytes
- using read() from a user program. This becomes a 04H operation
- with two segments of 4096 bytes (memory pages) and the Data Length
- is 12. According to the manual, the opeation should succeed and
- set the Data length to the "difference between the original Data Length
- ...and the actual number of bytes transferred across the SCSI bus...For
- Operation Code 04H, the original Data Length is the sum of all
- segment Data Lengths" (residual data length).
- In this case, the sum of segment Data
- lengths is 8192, so 8192-512 should be put into the Data Length
- field of the CCB. BUT, instead, I get a value of 12, ie.
- which means it does not look at the data lengths in the segments.
- This "12" means both segments "failed" and read no data.
- If the file on the tape was 4096 bytes instead, the
- a residue length data of 6 is returned, saying the first segment
- is succeeded but the second failed.
- This is clearly NOT what the manual says (I know, wrong manual :)
- Furthermore, if a read of 512 bytes of done after this, it will
- still not pick up the remaining 512 bytes because the tape
- drive thinks the data is already read. So there is no
- workaround and it makes the Scatter/Gather operation useless for tape
- drives because you always lose the end unless you use segments
- of exactly tape block size lengths.
- So, who screwed up? BusLogic? Or did *their* manual specify
- the latter operation which is incompatible with the AHA 1542B?
- If so, it is not so compatible after all. In any case, I think
- this is a bug. Or does the AHA1542B work the same way?
-
- Many people have programmed these boards before, so what
- do you think?
- Thanks.
-
- PT
- sim@cory.berkeley.edu
-
-