The problem you reported has also been reported by someone else; see

http://bugme.osdl.org/show_bug.cgi?id=3223

Briefly, this is a bug in your device, not in the kernel.  Until 2.6.8 the 
usb-storage driver ignored such bugs, but now it pays attention to them.
(The bug report you found (id 2092) was a completely different, unrelated 
problem.)

Below is an updated patch, providing a workaround that should work for 
your device.

Alan Stern


===== drivers/usb/storage/transport.c 1.145 vs edited =====
--- 1.145/drivers/usb/storage/transport.c       Tue Aug  3 10:17:59 2004
+++ edited/drivers/usb/storage/transport.c      Thu Aug 19 10:59:52 2004
@@ -1054,8 +1054,10 @@
 
        /* try to compute the actual residue, based on how much data
         * was really transferred and what the device tells us */
-       residue = min(residue, transfer_length);
-       srb->resid = max(srb->resid, (int) residue);
+       if (!(us->flags & US_FL_IGNORE_RESIDUE)) {
+               residue = min(residue, transfer_length);
+               srb->resid = max(srb->resid, (int) residue);
+       }
 
        /* based on the status code, we report good or bad */
        switch (bcs->Status) {
===== drivers/usb/storage/unusual_devs.h 1.144 vs edited =====
--- 1.144/drivers/usb/storage/unusual_devs.h    Fri Aug  6 03:59:29 2004
+++ edited/drivers/usb/storage/unusual_devs.h   Thu Aug 19 11:13:20 2004
@@ -265,6 +265,13 @@
                US_SC_8070, US_PR_BULK, NULL,
                US_FL_FIX_INQUIRY ),
 
+/* Reported by Iacopo Spalletti <[EMAIL PROTECTED]> */
+UNUSUAL_DEV(  0x052b, 0x1807, 0x0100, 0x0100, 
+               "Tekom Technologies, Inc",
+               "300_CAMERA", 
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_IGNORE_RESIDUE ),
+
 /* This entry is needed because the device reports Sub=ff */
 UNUSUAL_DEV(  0x054c, 0x0010, 0x0106, 0x0450, 
                "Sony",
@@ -801,7 +808,14 @@
                "Solid state disk",
                US_SC_DEVICE, US_PR_DEVICE, NULL,
                US_FL_FIX_INQUIRY ),
-               
+
+/* Reported by Rastislav Stanik <[EMAIL PROTECTED]> */
+UNUSUAL_DEV( 0x0ea0, 0x6828, 0x0110, 0x0110,
+               "USB",
+               "Flash Disk",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_IGNORE_RESIDUE ),
+
 /* Reported by Kevin Cernekee <[EMAIL PROTECTED]>
  * Tested on hardware version 1.10.
  * Entry is needed only for the initializer function override.
===== drivers/usb/storage/usb.h 1.60 vs edited =====
--- 1.60/drivers/usb/storage/usb.h      Tue Jul 20 19:30:35 2004
+++ edited/drivers/usb/storage/usb.h    Thu Aug 19 10:59:52 2004
@@ -73,6 +73,7 @@
 #define US_FL_SCM_MULT_TARG   0x00000020 /* supports multiple targets      */
 #define US_FL_FIX_INQUIRY     0x00000040 /* INQUIRY response needs faking   */
 #define US_FL_FIX_CAPACITY    0x00000080 /* READ CAPACITY response too big  */
+#define US_FL_IGNORE_RESIDUE  0x00000100 /* reported residue is wrong      */
 
 /* Dynamic flag definitions: used in set_bit() etc. */
 #define US_FLIDX_URB_ACTIVE    18  /* 0x00040000  current_urb is in use  */



-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to