[PATCH v2 1/2] usb: xhci-mtk: relax TT periodic bandwidth allocation
Greg Kroah-Hartman
gregkh at linuxfoundation.org
Thu Aug 18 10:48:15 PDT 2022
On Fri, Aug 05, 2022 at 02:03:27PM +0800, Chunfeng Yun wrote:
> Currently uses the worst case byte budgets on FS/LS bus bandwidth,
> for example, for an isochronos IN endpoint with 192 bytes budget, it
> will consume the whole 5 uframes(188 * 5) while the actual FS bus
> budget should be just 192 bytes. It cause that many usb audio headsets
> with 3 interfaces (audio input, audio output, and HID) cannot be
> configured.
> To improve it, changes to use "approximate" best case budget for FS/LS
> bandwidth management. For the same endpoint from the above example,
> the approximate best case budget is now reduced to (188 * 2) bytes.
>
> Signed-off-by: Chunfeng Yun <chunfeng.yun at mediatek.com>
> ---
> v2: change commit message
> ---
> drivers/usb/host/xhci-mtk-sch.c | 11 ++---------
> 1 file changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/usb/host/xhci-mtk-sch.c
> b/drivers/usb/host/xhci-mtk-sch.c
> index 06a6b19acaae..a17bc584ee99 100644
> --- a/drivers/usb/host/xhci-mtk-sch.c
> +++ b/drivers/usb/host/xhci-mtk-sch.c
> @@ -425,7 +425,6 @@ static int check_fs_bus_bw(struct mu3h_sch_ep_info
> *sch_ep, int offset)
>
> static int check_sch_tt(struct mu3h_sch_ep_info *sch_ep, u32 offset)
> {
> - u32 extra_cs_count;
> u32 start_ss, last_ss;
> u32 start_cs, last_cs;
>
> @@ -461,18 +460,12 @@ static int check_sch_tt(struct mu3h_sch_ep_info
> *sch_ep, u32 offset)
> if (last_cs > 7)
> return -ESCH_CS_OVERFLOW;
>
> - if (sch_ep->ep_type == ISOC_IN_EP)
> - extra_cs_count = (last_cs == 7) ? 1 : 2;
> - else /* ep_type : INTR IN / INTR OUT */
> - extra_cs_count = 1;
> -
> - cs_count += extra_cs_count;
> if (cs_count > 7)
> cs_count = 7; /* HW limit */
>
> sch_ep->cs_count = cs_count;
> - /* one for ss, the other for idle */
> - sch_ep->num_budget_microframes = cs_count + 2;
> + /* ss, idle are ignored */
> + sch_ep->num_budget_microframes = cs_count;
>
> /*
> * if interval=1, maxp >752, num_budge_micoframe is larger
> --
> 2.18.0
>
This doesn't apply to my tree without fuzz, and when I force it, I get a
build error. Can you please rebase against 6.0-rc1 and resend?
thanks,
greg k-h
More information about the Linux-mediatek
mailing list