Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3268012iob; Mon, 16 May 2022 17:39:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyF9DG3y75Ql4iKtffYbyua4eA1iUsyoICCb6jQQE4b66H5qPxAnzM+Q56QMQm8k5c4NwxK X-Received: by 2002:a17:90a:6342:b0:1df:763d:4eca with SMTP id v2-20020a17090a634200b001df763d4ecamr3856105pjs.85.1652747946185; Mon, 16 May 2022 17:39:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652747946; cv=none; d=google.com; s=arc-20160816; b=mNC3ecMYS1JR2p/BqPujVCjbPWPYH29/kJ+mu1lrc8ODtursh7zvwhSTvyViAB/eDs kdHBrAO5202f1BVAEtcOumxiiz6yPQONJkdxdboFihW1TfTNUCit2DWKNfdsOMuokfxz 7SjW0dUrMtpni9H8UssUXW7DrGMPiipB6xYnhJ/DxW3shxjTTnS+dJlTtc+LkB03YHWL ncK5X2GwA2N62Z4VGG9/c6a0qMGGha8v/fa1i2H7sdHEXMSo+mksulDNsc76b9F4lEW5 ruL2GwhanNCAcSaPHKt77MhoEaifHIEupQBfr7E6QSTjD4mNc68UdbH23RNLMNl2dw7/ l4AA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=blFV+zv7sUfqlMyCSsUV859ILpljyZqdJ3oTofmUbEg=; b=tHRO4WgUjLMdqdbIGqgLQwkbjePhNDZiicAaECH7VF2Z2wYgtKRVfeuFRTRilp3Dgj oltwQj+8TChr+kyAR/oG7ltTkL1+3FXkMr+PjGSih8HsRzJxbeWh6JILe9mMTM7Reb9y zIGIurgeBui2/a1GDflOKcMmLsij2xzOcH4JneN27mNb4VBHkygZsi+Xi0pJo4ntsIi7 3GSEpdJcUVU15UgWxkaSRg99nLmcSxpg+oKhM1wSc6KdtC4fSglhtf7GHSQtqswJ5KLT CzWwpLxUJP19qlmHvQcm8gExLgmgzjpb0q/gjV4jbLtaPWtgpEn6I4Ag5Nm1mo0OtWMp qfYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="NxFe8m/G"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b18-20020a056a00115200b0050d8d2e882bsi15143994pfm.373.2022.05.16.17.38.55; Mon, 16 May 2022 17:39:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="NxFe8m/G"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243959AbiEPUOC (ORCPT + 99 others); Mon, 16 May 2022 16:14:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348512AbiEPT6m (ORCPT ); Mon, 16 May 2022 15:58:42 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48844496AF; Mon, 16 May 2022 12:50:44 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 70EB660A14; Mon, 16 May 2022 19:50:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7346DC385AA; Mon, 16 May 2022 19:50:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652730643; bh=AfvNImvSajbT2lRm2lCrt5R+aKpmDHKgaIumFgk1JSE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NxFe8m/GYKlMGkLzwkix6WgYa2/QXvgEXo3eMBl5gbLjBz9zoDSqhe8Yi9E8NV1iy hWY0ZqkNOQncoCJWfE+OOi2k49S8S4OAKS8/NTaV6Cmm+H3KODdIvnsFAjSpa8ZOxN W1WfdfWWhm8OHsVGpkXcYNElIIFq/X6Agr4rDeWc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Chunfeng Yun Subject: [PATCH 5.15 065/102] usb: xhci-mtk: fix fs isocs transfer error Date: Mon, 16 May 2022 21:36:39 +0200 Message-Id: <20220516193625.863220429@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220516193623.989270214@linuxfoundation.org> References: <20220516193623.989270214@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chunfeng Yun commit c237566b78ad8c72bc0431c5d6171db8d12e6f94 upstream. Due to the scheduler allocates the optimal bandwidth for FS ISOC endpoints, this may be not enough actually and causes data transfer error, so come up with an estimate that is no less than the worst case bandwidth used for any one mframe, but may be an over-estimate. Fixes: 451d3912586a ("usb: xhci-mtk: update fs bus bandwidth by bw_budget_table") Cc: stable@vger.kernel.org Signed-off-by: Chunfeng Yun Link: https://lore.kernel.org/r/20220512064931.31670-1-chunfeng.yun@mediatek.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/xhci-mtk-sch.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) --- a/drivers/usb/host/xhci-mtk-sch.c +++ b/drivers/usb/host/xhci-mtk-sch.c @@ -465,7 +465,7 @@ static int check_fs_bus_bw(struct mu3h_s */ for (j = 0; j < sch_ep->num_budget_microframes; j++) { k = XHCI_MTK_BW_INDEX(base + j); - tmp = tt->fs_bus_bw[k] + sch_ep->bw_budget_table[j]; + tmp = tt->fs_bus_bw[k] + sch_ep->bw_cost_per_microframe; if (tmp > FS_PAYLOAD_MAX) return -ESCH_BW_OVERFLOW; } @@ -539,19 +539,17 @@ static int check_sch_tt(struct mu3h_sch_ static void update_sch_tt(struct mu3h_sch_ep_info *sch_ep, bool used) { struct mu3h_sch_tt *tt = sch_ep->sch_tt; + int bw_updated; u32 base; - int i, j, k; + int i, j; + + bw_updated = sch_ep->bw_cost_per_microframe * (used ? 1 : -1); for (i = 0; i < sch_ep->num_esit; i++) { base = sch_ep->offset + i * sch_ep->esit; - for (j = 0; j < sch_ep->num_budget_microframes; j++) { - k = XHCI_MTK_BW_INDEX(base + j); - if (used) - tt->fs_bus_bw[k] += sch_ep->bw_budget_table[j]; - else - tt->fs_bus_bw[k] -= sch_ep->bw_budget_table[j]; - } + for (j = 0; j < sch_ep->num_budget_microframes; j++) + tt->fs_bus_bw[XHCI_MTK_BW_INDEX(base + j)] += bw_updated; } if (used)