On Wednesday 27 June 2012 17:33:45 Alexander Motin wrote:
> On 06/27/12 18:31, Hans Petter Selasky wrote:
> > On Wednesday 27 June 2012 17:28:30 Alexander Motin wrote:
> >> On 06/27/12 18:17, Hans Petter Selasky wrote:
> >>> On Wednesday 27 June 2012 17:08:29 Alexander Motin wrote:
> >>>> umass problem
> >>> 
> >>> Hi,
> >>> 
> >>> Are you verifying the received data length for the SCSI commands
> >>> reading out various data?
> >> 
> >> Mentioned revision beyond others adds check for the sense data length in
> >> case of error. It won't even look into the sense data if reported amount
> >> (sense_len - sense_resid) is zero or less then needed. I have no idea
> >> how USB calculates resid, but it may be a problem in this case. I think
> >> it could be useful to get USB packets trace to see whether it is device
> >> doesn't return any sense data, or umass improperly interprets them in
> >> this case for some reason.
> > 
> > Hi,
> > 
> > The residue is part of the 13 status bytes in the SCSI BOT protocol. If
> > this field is zero, the umass driver will compute the residue from the
> > actual data transferred as a workaround.
> 
> Can't there be an opposite bug -- residue field is equal to the transfer
> size in which case CAM will think there is no sense data?

Hi,

Then you need to check using "usbdump -i usbusX -s 65536 -vvvv" what is 
actually going on there.

Usually the USB device does not zero-pad any SCSI data.

Code looks like this:

                residue = UGETDW(sc->csw.dCSWDataResidue);

                if ((!residue) || (sc->sc_quirks & IGNORE_RESIDUE)) {
                        residue = (sc->sc_transfer.data_len -
                            sc->sc_transfer.actlen);
                }
                if (residue > sc->sc_transfer.data_len) {
                        DPRINTF(sc, UDMASS_BBB, "truncating residue from %d "
                            "to %d bytes\n", residue, sc-
>sc_transfer.data_len);
                        residue = sc->sc_transfer.data_len;
                }

--HPS
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to