USB: centralize -EREMOTEIO handling
This patch (as969) continues the ongoing changes to the way HCDs report URB statuses. The programming interface has been simplified by making usbcore responsible for clearing urb->hcpriv and for setting -EREMOTEIO status when an URB with the URB_SHORT_NOT_OK flag ends up as a short transfer. By moving the work out of the HCDs, this removes a fair amount of repeated code. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> CC: David Brownell <david-b@pacbell.net> CC: Olav Kongas <ok@artecdesign.ee> CC: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> CC: Tony Olech <tony.olech@elandigitalsystems.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
ee7d1f3f0c
commit
b0d9efba3e
@@ -1099,8 +1099,7 @@ top:
|
||||
*
|
||||
* partially filling a buffer optionally blocks queue advances
|
||||
* (so completion handlers can clean up the queue) but we don't
|
||||
* need to emulate such data-in-flight. so we only show part
|
||||
* of the URB_SHORT_NOT_OK effect: completion status.
|
||||
* need to emulate such data-in-flight.
|
||||
*/
|
||||
if (is_short) {
|
||||
if (host_len == dev_len) {
|
||||
@@ -1111,10 +1110,7 @@ top:
|
||||
if (dev_len > host_len)
|
||||
maybe_set_status (urb, -EOVERFLOW);
|
||||
else
|
||||
maybe_set_status (urb,
|
||||
(urb->transfer_flags
|
||||
& URB_SHORT_NOT_OK)
|
||||
? -EREMOTEIO : 0);
|
||||
maybe_set_status (urb, 0);
|
||||
} else if (!to_host) {
|
||||
maybe_set_status (urb, 0);
|
||||
if (host_len > dev_len)
|
||||
@@ -1516,7 +1512,6 @@ restart:
|
||||
continue;
|
||||
|
||||
return_urb:
|
||||
urb->hcpriv = NULL;
|
||||
list_del (&urbp->urbp_list);
|
||||
kfree (urbp);
|
||||
if (ep)
|
||||
|
Reference in New Issue
Block a user