Hi Matthew,

I had to disable the tag value check for my external usb case. Is that a
common problem?

I've attached a patch that adds a fixup flag for wrong tag values into
unusual_dev.h, I'm not sure if I filled all fields properly.

<<<< /proc/bus/usb/devices
[snip]
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=04ce ProdID=0002 Rev= 2.60
S:  Manufacturer=ScanLogic USBIDE
S:  Product=ScanLogic USBIDE
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50
Driver=usb-storage
<<<<<
Brand name: Serotech FHD-252

Patch against 2.4.18-pre7 attached.

--
        Manfred
diff -u 2.4/drivers/usb/storage/transport.c build-2.4/drivers/usb/storage/transport.c
--- 2.4/drivers/usb/storage/transport.c Sat Feb  2 14:22:07 2002
+++ build-2.4/drivers/usb/storage/transport.c   Sat Feb  2 14:14:21 2002
@@ -1157,7 +1157,7 @@
                  le32_to_cpu(bcs.Signature), bcs.Tag, 
                  bcs.Residue, bcs.Status);
        if (bcs.Signature != cpu_to_le32(US_BULK_CS_SIGN) || 
-           bcs.Tag != bcb.Tag || 
+           (!(us->flags & US_FL_IGNORE_TAG) && bcs.Tag != bcb.Tag) ||
            bcs.Status > US_BULK_STAT_PHASE || partial != 13) {
                US_DEBUGP("Bulk logical error\n");
                return USB_STOR_TRANSPORT_ERROR;
diff -u 2.4/drivers/usb/storage/unusual_devs.h 
build-2.4/drivers/usb/storage/unusual_devs.h
--- 2.4/drivers/usb/storage/unusual_devs.h      Sat Feb  2 14:22:07 2002
+++ build-2.4/drivers/usb/storage/unusual_devs.h        Sat Feb  2 14:19:08 2002
@@ -99,6 +99,15 @@
                "SL11R-IDE",
                US_SC_SCSI, US_PR_BULK, NULL,
                US_FL_FIX_INQUIRY),
+/*
+ * Reported by Manfred Spraul
+ * Tested with Firmware rev 2.50 and 2.60
+ */
+UNUSUAL_DEV(  0x04ce, 0x0002, 0x0000, 0xffff,
+               "ScanLogic",
+               "USBIDE",
+               US_SC_8070, US_PR_BULK, NULL,
+               US_FL_IGNORE_TAG),
 
 /* Reported by Kriston Fincher <[EMAIL PROTECTED]>
  * Patch submitted by Sean Millichamp <[EMAIL PROTECTED]>
diff -u 2.4/drivers/usb/storage/usb.h build-2.4/drivers/usb/storage/usb.h
--- 2.4/drivers/usb/storage/usb.h       Sat Aug 11 16:15:26 2001
+++ build-2.4/drivers/usb/storage/usb.h Sat Feb  2 14:16:31 2002
@@ -101,6 +101,7 @@
 #define US_FL_IGNORE_SER      0x00000010 /* Ignore the serial number given  */
 #define US_FL_SCM_MULT_TARG   0x00000020 /* supports multiple targets */
 #define US_FL_FIX_INQUIRY     0x00000040 /* INQUIRY response needs fixing */
+#define US_FL_IGNORE_TAG      0x00000080 /* ignore Tag value returned in CSW */
 
 #define USB_STOR_STRING_LEN 32
 

Reply via email to