Re: [PATCH v6] usb: xhci-mtk: fix unreleased bandwidth data

Chunfeng Yun
2021-01-26T17:14:55Z

Hi Ikjoon,

Can I put this patch into my patch series about bandwidth scheduler?
the series also include "[RFC PATCH v3 1/5] usb: xhci-mtk: improve
bandwidth scheduling with multi-TT", put them together will help to fix
dependence issue, meanwhile I try to build xhci-mtk-sch.c into
xhci-mtk.ko instead of xhci-hcd.ko.

Thanks a lot

On Wed, 2021-01-13 at 18:05 +0800, Ikjoon Jang wrote:
> xhci-mtk needs XHCI_MTK_HOST quirk functions in add_endpoint() and
> drop_endpoint() to handle its own sw bandwidth management.
>
> It stores bandwidth data into an internal table every time
> add_endpoint() is called, and drops those in drop_endpoint().
> But when bandwidth allocation fails at one endpoint, all earlier
> allocation from the same interface could still remain at the table.
>
> This patch moves bandwidth management codes to check_bandwidth() and
> reset_bandwidth() path. To do so, this patch also adds those functions
> to xhci_driver_overrides and lets mtk-xhci to release all failed
> endpoints in reset_bandwidth() path.
>
> Fixes: 08e469de87a2 ("usb: xhci-mtk: supports bandwidth scheduling with multi-TT")
> Signed-off-by: Ikjoon Jang <ikjn@chromium.org>
>
> ---
>
> Changes in v6:
> - use xhci overrides instead of quirk functions for
> {check|reset}_bandwidth().
>
> Changes in v5:
> - Fix a wrong commit id in Fixes tag
>
> Changes in v4:
> - bugfix in v3, check_bandwidth() return uninitialized value
> when no new endpoints were added.
> - change Fixes tag to keep dependency
>
> Changes in v3:
> - drop unrelated code cleanups
> - change Fixes tag to keep dependency
>
> Changes in v2:
> - fix a 0-day warning from unused variable
> - split one big patch into three patches
> - fix wrong offset in mediatek hw flags
>
> drivers/usb/host/xhci-mtk-sch.c | 123 ++++++++++++++++++++++----------
> drivers/usb/host/xhci-mtk.c | 2 +
> drivers/usb/host/xhci-mtk.h | 13 ++++
> drivers/usb/host/xhci.c | 8 ++-
> drivers/usb/host/xhci.h | 4 ++
> 5 files changed, 111 insertions(+), 39 deletions(-)