On Sat, Feb 21, 2015 at 1:18 AM, Aleksander Morgado <aleksander@xxxxxxxxxxxxx> wrote: > The current logic, though, doesn't seem to contemplate the case where a TD has a > TDR in the data stage which actually reports 0 bytes (i.e. transfer event len > equal to transfer buffer len). The logic is currently handling this case in the > following way: > > Transfer event len = 64, COMP_SHORT_TX (data) > |---------> URB actual length = 64 - 64 = 0 > Transfer event len = 0, COMP_SHORT_SUCCESS (status) > |---------> URB actual length set to transfer buffer length = 64 <------ > > In this case, the logic shouldn't update the URB actual length during the status > stage; instead it should leave the URB actual length that was computed during > the data stage, even if it's 0: > > Transfer event len = 63, COMP_SHORT_TX (data) So much for re-reading the patch 10 times before sending it... The "Transfer event len" in this previous line should be 64, not 63. > |---------> URB actual length = 64 - 64 = 0 > Transfer event len = 0, COMP_SHORT_SUCCESS (status) > |---------> URB actual length not modified = 0 <------ -- Aleksander https://aleksander.es -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html