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�����٥