Hi, On Wed, Mar 20, 2013 at 12:51 AM, Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> wrote: > On Thu, Mar 07, 2013 at 03:38:46PM +0530, Vivek Gautam wrote: >> Hi Sarah, >> >> >> While going through the code for Handling Transfer Events >> (drivers/usb/host/xhci-ring.c), i hit upon this problem. >> As defined in "drivers/usb/host/xhci.h" >> >> /* Normal TRB fields */ >> /* transfer_len bitmasks - bits 0:16 */ >> #define TRB_LEN(p) ((p) & 0x1ffff) >> >> And the same macro i could see being used while Handling Trasfer >> events "handle_tx_event()", and further in >> process_ctrl_td(), process_isoc_td(), and process_bulk_intr_td(). >> >> However, as per XHCI specs (Rev 1.0, 5/21/10) section 6.4.2.1 for >> Transfer event TRBs, the transfer length is bits 0:23 >> thereby something like below could be valid: >> >> /* Transfer event TRB length bit mask */ >> /* bits 0:23 */ >> #define EVENT_TRB_LEN(p) ((p) & 0xffffff) >> >> This difference is confusing somewhat. >> I hope the current code must be pretty much fine, and there could be >> something that i might be stupidly missing. > > Nope, you've caught an honest-to-goodness bug. :) Hmm. > > Would you like to submit a patch to fix this? It should be pretty easy > to look at the context in xhci-ring.c and figure out whether the > function is queueing a TRB (and thus should use the TRB_LEN macro) or > handling a event TRB (and should be using the new EVENT_TRB_LEN macro). > Sure, will send a patch for this. > Sarah Sharp -- Thanks & Regards Vivek -- 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