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�