From: Mathias Nyman
> On 10/01/2014 05:50 PM, vichy wrote:
> > hi Mathias:
> >
> >>
> >> In xhci-ring.c,  static int xhci_queue_isoc_tx():
> >>
> >> /* Calculate TRB length */
> >>   trb_buff_len = TRB_MAX_BUFF_SIZE - (addr & ((1 << TRB_MAX_BUFF_SHIFT) - 
> >> 1));
> >>
> >> where  addr = start_addr + urb->iso_frame_desc[i].offset;
> >>
> >> this limits the trb_buff_len to stop the trb buffer at TRB_MAX_BUFF_SIZE 
> >> boundary
> > Yes, you are right.
> > the above is make sure trb buffer will not cross over
> > TRB_MAX_BUFF_SIZE boundary.
> > But it still possible to cross the page boundary for ISO trb, right?
> > (suppose page boundary is 4KB, TRB_MAX_BUFF_SIZE is 64KB)
> >
> > appreciate your kind help,
> >
> 
> Hi
> 
> As I understood it, it is ok to cross page boundaries as long as the buffer 
> is physically contiguous.
> As our dma case should be.
> xhci specification section 3.2.8 says that:
> 
> "Note that no constraints are placed on the TRB Length fields in a 
> Scatter/Gather list. Classically
> all the
> buffers pointed to by a scatter gather list were required to be “page size” 
> in length except for the
> first and
> last (as illustrated by the example above). The xHCI does not require this 
> constraint. Any buffer
> pointed to
> by a Normal, Data Stage, or Isoch TRB in a TD may be any size between 0 and 
> 64K bytes in size. For
> instance, if when an OS translates a virtual memory buffer into a list of 
> physical pages, some of the
> entries
> in the list reference multiple contiguous pages, the flexible Length fields 
> of TRBs allow a 1:1
> mapping of list
> entries to TRBs, i.e. a multi-page list entry does not need to be defined as 
> multiple page sized
> TRBs."
> "

The ohci hardware requires that scatter-gather boundaries occur on USB message 
boundaries.

The xhi hardware doesn't have that constraint, but has the different 
constraints:
1) A buffer must not cross a 64k address boundary.
2) A LINK TRB (at the end of the ring) must only occur at a USB message boundary
   (actually it is a slightly tighter constraint).
In combination those two are a PITA.

        David

N�����r��y����b�X��ǧv�^�)޺{.n�+����{������^n�r���z���h�����&���G���h�(�階�ݢj"���m������z�ޖ���f���h���~�m�

Reply via email to