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�

Reply via email to