From: vichy
> hi David and All:
> >> > Because the trb buffers can't cross a 64k physical address boundary.
> >>
> >> Is it only specific to iso scheduling or bulk also need to take care?
> >> from your kind explanation, the trb buffer for Bulk also need to take
> >> care crossing 64k physical boundary.
> >> But i don't find it for bulk transfer.
> >> Below is excerpted from xhci_queue_bulk_tx
> >> while (running_total < urb->transfer_buffer_length) {
> >> num_trbs++;
> >> running_total += TRB_MAX_BUFF_SIZE;
> >> }
> >
> > Hmmm... that looks like a division by a power of 2!
> I am not quite understand what you mean "a division by a power of 2"
> Would you please give me more hint? ^^
That code is approximately equal to:
num_trbs += urb->transfer_buffer_length / TRB_MAX_BUFF_SIZE;
running_total += urb->transfer_buffer_length & ~(TRB_MAX_BUFF_SIZE-1);
David
N�����r��y����b�X��ǧv�^�){.n�+����{������^n�r���z���h�����&���G���h�(�階�ݢj"���m������z�ޖ���f���h���~�m�