hi all:
for iso transactions, we use below function to calculate trbs
       addr = (u64) (urb->transfer_dma + urb->iso_frame_desc[i].offset);
        td_len = urb->iso_frame_desc[i].length;
        num_trbs = DIV_ROUND_UP(td_len + (addr & (TRB_MAX_BUFF_SIZE - 1)),
                        TRB_MAX_BUFF_SIZE);

Could we use below method to calculate it instead?
       addr = (u64) (urb->transfer_dma + urb->iso_frame_desc[i].offset);
        td_len = urb->iso_frame_desc[i].length;
-        num_trbs = DIV_ROUND_UP(td_len + (addr & (TRB_MAX_BUFF_SIZE - 1)),
                        TRB_MAX_BUFF_SIZE);
+       num_trbs = DIV_ROUND_UP(td_len ,TRB_MAX_BUFF_SIZE);

Why the trb calculation for iso is related to dma address?

Appreciate your kind help in advance,
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to