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