aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/storage/transport.c3
-rw-r--r--drivers/usb/storage/unusual_devs.h11
-rw-r--r--include/linux/usb_usual.h4
3 files changed, 16 insertions, 2 deletions
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index 5780ed15f1ad..bdd4334bed5a 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -1009,7 +1009,8 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
1009 US_DEBUGP("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", 1009 US_DEBUGP("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n",
1010 le32_to_cpu(bcs->Signature), bcs->Tag, 1010 le32_to_cpu(bcs->Signature), bcs->Tag,
1011 residue, bcs->Status); 1011 residue, bcs->Status);
1012 if (bcs->Tag != us->tag || bcs->Status > US_BULK_STAT_PHASE) { 1012 if (!(bcs->Tag == us->tag || (us->flags & US_FL_BULK_IGNORE_TAG)) ||
1013 bcs->Status > US_BULK_STAT_PHASE) {
1013 US_DEBUGP("Bulk logical error\n"); 1014 US_DEBUGP("Bulk logical error\n");
1014 return USB_STOR_TRANSPORT_ERROR; 1015 return USB_STOR_TRANSPORT_ERROR;
1015 } 1016 }
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 99679a8cfa02..e5219a56947c 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -1589,6 +1589,17 @@ UNUSUAL_DEV( 0x22b8, 0x4810, 0x0001, 0x0001,
1589 US_SC_DEVICE, US_PR_DEVICE, NULL, 1589 US_SC_DEVICE, US_PR_DEVICE, NULL,
1590 US_FL_FIX_CAPACITY), 1590 US_FL_FIX_CAPACITY),
1591 1591
1592/*
1593 * Patch by Constantin Baranov <const@tltsu.ru>
1594 * Report by Andreas Koenecke.
1595 * Motorola ROKR Z6.
1596 */
1597UNUSUAL_DEV( 0x22b8, 0x6426, 0x0101, 0x0101,
1598 "Motorola",
1599 "MSnc.",
1600 US_SC_DEVICE, US_PR_DEVICE, NULL,
1601 US_FL_FIX_INQUIRY | US_FL_FIX_CAPACITY | US_FL_BULK_IGNORE_TAG),
1602
1592/* Reported by Radovan Garabik <garabik@kassiopeia.juls.savba.sk> */ 1603/* Reported by Radovan Garabik <garabik@kassiopeia.juls.savba.sk> */
1593UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x9999, 1604UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x9999,
1594 "MPIO", 1605 "MPIO",
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h
index cee0623b3c7b..0a40dfa44c9f 100644
--- a/include/linux/usb_usual.h
+++ b/include/linux/usb_usual.h
@@ -50,7 +50,9 @@
50 US_FLAG(CAPACITY_HEURISTICS, 0x00001000) \ 50 US_FLAG(CAPACITY_HEURISTICS, 0x00001000) \
51 /* sometimes sizes is too big */ \ 51 /* sometimes sizes is too big */ \
52 US_FLAG(MAX_SECTORS_MIN,0x00002000) \ 52 US_FLAG(MAX_SECTORS_MIN,0x00002000) \
53 /* Sets max_sectors to arch min */ 53 /* Sets max_sectors to arch min */ \
54 US_FLAG(BULK_IGNORE_TAG,0x00004000) \
55 /* Ignore tag mismatch in bulk operations */
54 56
55 57
56#define US_FLAG(name, value) US_FL_##name = value , 58#define US_FLAG(name, value) US_FL_##name = value ,