RE: Question about calculate trbs in xhci

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥





[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux