On Fri, 21 Sep 2018, yoma sophian wrote:
> hi all:
> in iso_stream_schedule of ehci-sched.c, why we have to add the "-" in
> (-(++ehci->random_frame)) to calculate the start uframe?
> thanks for ur help in advance.
>
> if (stream->ps.phase == NO_FRAME) {
> int done = 0;
> struct ehci_tt *tt = find_tt(stream->ps.udev);
>
> if (IS_ERR(tt)) {
> status = PTR_ERR(tt);
> goto fail;
> }
> compute_tt_budget(ehci->tt_budget, tt);
>
> start = ((-(++ehci->random_frame)) << 3) & (period -
> 1);
> ^^ Here it is.
We don't _have_ to do it. It is a small optimization; an attempt to
avoid schedule collisions between interrupt transactions and
isochronous transactions. The effect of the "-" is that the code tries
frames in backward order when it is scheduling isochronous URBs -- as
opposed to trying frames in forward order when scheduling periodic
URBs.
It isn't important.
Alan Stern