lkml.org 
[lkml]   [2006]   [Jan]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [linux-usb-devel] Re: [PATCH] Adaptec USBXchange and USB2Xchange support
    So how do you address a multi-LUN target if you don't encode the LUN?

    Matt

    On Mon, Jan 30, 2006 at 07:04:15PM +0100, Ren? Rebe wrote:
    > Hi,
    >
    > finally - I got multi target (that is a SCSI device other than ID = 0 and more than than one) working
    > with the USB2Xchange. But it needs two ugly changes in transport.c:
    >
    > The first one is only encoding the ID, no LUN:
    >
    > --- ../linux-2.6.15/drivers/usb/storage/transport.c 2006-01-03 04:21:10.000000000 +0100
    > +++ drivers/usb/storage/transport.c 2006-01-30 18:49:25.172317000 +0100
    > @@ -983,7 +983,7 @@
    > bcb->Tag = ++us->tag;
    > bcb->Lun = srb->device->lun;
    > if (us->flags & US_FL_SCM_MULT_TARG)
    > - bcb->Lun |= srb->device->id << 4;
    > + bcb->Lun = srb->device->id;
    > bcb->Length = srb->cmd_len;
    >
    > /* copy the command payload */
    >
    > Would it be ok when special case that one only for the Adaptec device, for now?
    > Or define a whole new 2nd MULTI_TARG(2) quirk?
    >
    > And furthermore the device does not respond to request other than the attached targets,
    > this might be needed:
    >
    > @@ -1069,6 +1069,19 @@
    > US_DEBUGP("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n",
    > le32_to_cpu(bcs->Signature), bcs->Tag,
    > residue, bcs->Status);
    > +
    > + if (bcs->Status > US_BULK_STAT_FAIL) {
    > + /* Adaptec USB2XCHANGE */
    > + if (us->pusb_dev->descriptor.idVendor == 0x03f3 &&
    > + us->pusb_dev->descriptor.idProduct == 0x2003) {
    > +
    > + /* This device will send bcs->Status == 0x8a for unused targets and
    > + == 0x02 for SRB's that require SENSE. */
    > + bcs->Status = US_BULK_STAT_OK;
    > + fake_sense = 1;
    > + US_DEBUGP("Patched Bulk status to %d.\n", bcs->Status);
    > + }
    > + }
    > if (bcs->Tag != us->tag || bcs->Status > US_BULK_STAT_PHASE) {
    > US_DEBUGP("Bulk logical error\n");
    > return USB_STOR_TRANSPORT_ERROR;
    >
    > Yours,
    >
    > --
    > René Rebe - Rubensstr. 64 - 12157 Berlin (Europe / Germany)
    > http://www.exactcode.de | http://www.t2-project.org
    > +49 (0)30 255 897 45
    >
    >
    > -------------------------------------------------------
    > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
    > for problems? Stop! Download the new AJAX search engine that makes
    > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
    > http://sel.as-us.falkag.net/sel?cmd_______________________________________________
    > linux-usb-devel@lists.sourceforge.net
    > To unsubscribe, use the last form field at:
    > https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

    --
    Matthew Dharm Home: mdharm-usb@one-eyed-alien.net
    Maintainer, Linux USB Mass Storage Driver

    A female who groks UNIX? My universe is collapsing.
    -- Mike
    User Friendly, 10/11/1998
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2006-01-30 22:42    [W:0.028 / U:0.300 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site