On 9/8/20 6:59 PM, Frank Wunderlich wrote:
[...]
> +static u32 xhci_td_remainder(struct xhci_ctrl *ctrl, int transferred,
> +                          int trb_buff_len, unsigned int td_total_len,
> +                          int maxp, bool more_trbs_coming)
>  {
> -     int packets_transferred;
> +     u32 total_packet_count;
> +
> +     if (ctrl->hci_version < 0x100)
> +             return ((td_total_len - transferred) >> 10);

Here and ...

>       /* One TRB with a zero-length data packet. */
> -     if (num_trbs_left == 0 || (running_total == 0 && trb_buff_len == 0))
> +     if (!more_trbs_coming || (transferred == 0 && trb_buff_len == 0) ||
> +         trb_buff_len == td_total_len)
>               return 0;
>  
> -     /*
> -      * All the TRB queueing functions don't count the current TRB in
> -      * running_total.
> -      */
> -     packets_transferred = (running_total + trb_buff_len) / maxpacketsize;
> +     total_packet_count = DIV_ROUND_UP(td_total_len, maxp);
>  
> -     if ((total_packet_count - packets_transferred) > 31)
> -             return 31 << 17;
> -     return (total_packet_count - packets_transferred) << 17;
> +     /* Queueing functions don't count the current TRB into transferred */
> +     return (total_packet_count - ((transferred + trb_buff_len) / maxp));

... here. The outer parenthesis are not needed, can you check them in
other functions too and send a subsequent cleanup patch ?

I applied the patcheset to u-boot-usb/next , thanks.

Reply via email to