diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-03-23 15:05:16 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-14 14:12:20 -0400 |
commit | 70ffe6e14d7c5db84b92841471ce6fd0200010cd (patch) | |
tree | bc77a5b2a140cc00518aae2518d671e8911eddd7 /drivers/usb/gadget | |
parent | 7e1c0b86aca9d42fa4de3fdad17c57bb462fe1e2 (diff) |
[PATCH] USB: g_file_storage: Set short_not_ok for bulk-out transfers
I'm told that some UDC hardware may work better if it knows that
receiving a short packet should always cause an error. Accordingly,
this patch (as663) sets the short_not_ok flag for bulk-out transfers in
g_file_storage. Oddly enough, there are no circumstances where that
driver can legally receive a shorter-than-expected bulk-out packet.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r-- | drivers/usb/gadget/file_storage.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c index cf3be299e353..eb2821542b7c 100644 --- a/drivers/usb/gadget/file_storage.c +++ b/drivers/usb/gadget/file_storage.c | |||
@@ -1795,6 +1795,7 @@ static int do_write(struct fsg_dev *fsg) | |||
1795 | * the bulk-out maxpacket size */ | 1795 | * the bulk-out maxpacket size */ |
1796 | bh->outreq->length = bh->bulk_out_intended_length = | 1796 | bh->outreq->length = bh->bulk_out_intended_length = |
1797 | amount; | 1797 | amount; |
1798 | bh->outreq->short_not_ok = 1; | ||
1798 | start_transfer(fsg, fsg->bulk_out, bh->outreq, | 1799 | start_transfer(fsg, fsg->bulk_out, bh->outreq, |
1799 | &bh->outreq_busy, &bh->state); | 1800 | &bh->outreq_busy, &bh->state); |
1800 | fsg->next_buffhd_to_fill = bh->next; | 1801 | fsg->next_buffhd_to_fill = bh->next; |
@@ -2398,6 +2399,7 @@ static int throw_away_data(struct fsg_dev *fsg) | |||
2398 | * the bulk-out maxpacket size */ | 2399 | * the bulk-out maxpacket size */ |
2399 | bh->outreq->length = bh->bulk_out_intended_length = | 2400 | bh->outreq->length = bh->bulk_out_intended_length = |
2400 | amount; | 2401 | amount; |
2402 | bh->outreq->short_not_ok = 1; | ||
2401 | start_transfer(fsg, fsg->bulk_out, bh->outreq, | 2403 | start_transfer(fsg, fsg->bulk_out, bh->outreq, |
2402 | &bh->outreq_busy, &bh->state); | 2404 | &bh->outreq_busy, &bh->state); |
2403 | fsg->next_buffhd_to_fill = bh->next; | 2405 | fsg->next_buffhd_to_fill = bh->next; |
@@ -3029,6 +3031,7 @@ static int get_next_command(struct fsg_dev *fsg) | |||
3029 | 3031 | ||
3030 | /* Queue a request to read a Bulk-only CBW */ | 3032 | /* Queue a request to read a Bulk-only CBW */ |
3031 | set_bulk_out_req_length(fsg, bh, USB_BULK_CB_WRAP_LEN); | 3033 | set_bulk_out_req_length(fsg, bh, USB_BULK_CB_WRAP_LEN); |
3034 | bh->outreq->short_not_ok = 1; | ||
3032 | start_transfer(fsg, fsg->bulk_out, bh->outreq, | 3035 | start_transfer(fsg, fsg->bulk_out, bh->outreq, |
3033 | &bh->outreq_busy, &bh->state); | 3036 | &bh->outreq_busy, &bh->state); |
3034 | 3037 | ||