Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp996441iob; Fri, 13 May 2022 19:02:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxu2qthqiR36f19NM1rfp6yDpIHQgWapJ2b1e299dJQreMecrwFQ1eHTu2JWo+zsnRPwuPb X-Received: by 2002:adf:fb03:0:b0:20a:e253:b8c7 with SMTP id c3-20020adffb03000000b0020ae253b8c7mr5940334wrr.119.1652493720747; Fri, 13 May 2022 19:02:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652493720; cv=none; d=google.com; s=arc-20160816; b=nwnpCBvBFSc6xukJ4kf/bQ6zfG6JedD24Yi9zMbpmzuD6ZHW9kuNwE+B/G0l1QKx5s x2qJ3r72u47VzWfx2S9e+qq+Xcx7/zAnwgUMnZCOkQnNPKVqF6gKLHYiQdmKoQD1Tm/c CIllV+NcYYn/42l+3Zx/UrFoO16+pDl5sqAJxqMAxwblMfcvc5i0CNSJ4ONOzp6WGJQp 7pDYXQVBsexnNhdUf5B+U5aQ1EiE2PbAhLB/iSlevjrYxbcf43/2ccn0gf87J8ITWi9S CkR4cxF7aAucfyLiDCFAscs53NdDJ/glVyyjitp58S7e6bIbdsymh8alKvs0MXT13wP5 8UBQ== 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=HI9mBS9l4DbuYuQPKe4bpeUb0MauQBtyZzWjqiTREmM=; b=tBACq+xDAfKBip/K3K+exbnJVYTzymRugTCvHVl4rAZ5KoS53QyzYuzHTnRn4jYx/+ 2e64AvTRc/qbDIhLstdWz6ueV7xiW5wAQS+6Zi8aTOEJmy9ZRh1WcwBd3G+Kf774WYjq Xm7hCU79Azzmgw/GfDZkHDsdlG0mUOt+XVk4VF7D0YCk/DmOk1iaqni3Hr5pVEaH+avn 74rDWCUoTzkYo2cm0c/iV0wYOjQrbBa5pZKEYxAfUjBNOc5DomSNn7JulFQTHFVokZGT eJ2NCaxUX4xK36Jhtzp4fA25Xp/FSQrbnix5s4Czdd4XRz21/ftAIwYQYjm00gPQB2dg FARA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=xjA9sHDZ; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id a4-20020a056000100400b00207a2958852si3203567wrx.406.2022.05.13.19.02.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 May 2022 19:02:00 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=xjA9sHDZ; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9FF07478A12; Fri, 13 May 2022 17:23:38 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1381178AbiEMObG (ORCPT + 99 others); Fri, 13 May 2022 10:31:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380814AbiEMO1a (ORCPT ); Fri, 13 May 2022 10:27:30 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64CED5FF3E; Fri, 13 May 2022 07:27:09 -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 ams.source.kernel.org (Postfix) with ESMTPS id 80A03B82C9D; Fri, 13 May 2022 14:27:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC569C34100; Fri, 13 May 2022 14:27:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652452027; bh=yeIUaTo40bRsvVBRbw4eJP2tcUsRcsuqDSy+cRWCDGU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xjA9sHDZfgZu+M91h2i2ZTP0OJM3iHA+rR5xOrgGlWRtilfh1+7aGEgZKiDAU8rus W8nVHDE17S2/X0QVy6nS6g7+yp0bMdmJ/RZXr40rO32JD9E7fibwgaXN+ZUFH2nfXA m4KFv8thCD87TQ6PC+M5GcMGVp6B6qVCMXjhUyew= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andreas Larsson , Marc Kleine-Budde Subject: [PATCH 5.4 07/18] can: grcan: only use the NAPI poll budget for RX Date: Fri, 13 May 2022 16:23:33 +0200 Message-Id: <20220513142229.371295939@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220513142229.153291230@linuxfoundation.org> References: <20220513142229.153291230@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=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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: Andreas Larsson commit 2873d4d52f7c52d60b316ba6c47bd7122b5a9861 upstream. The previous split budget between TX and RX made it return not using the entire budget but at the same time not having calling called napi_complete. This sometimes led to the poll to not be called, and at the same time having TX and RX interrupts disabled resulting in the driver getting stuck. Fixes: 6cec9b07fe6a ("can: grcan: Add device driver for GRCAN and GRHCAN cores") Link: https://lore.kernel.org/all/20220429084656.29788-4-andreas@gaisler.com Cc: stable@vger.kernel.org Signed-off-by: Andreas Larsson Signed-off-by: Marc Kleine-Budde Signed-off-by: Greg Kroah-Hartman --- drivers/net/can/grcan.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) --- a/drivers/net/can/grcan.c +++ b/drivers/net/can/grcan.c @@ -1137,7 +1137,7 @@ static int grcan_close(struct net_device return 0; } -static int grcan_transmit_catch_up(struct net_device *dev, int budget) +static void grcan_transmit_catch_up(struct net_device *dev) { struct grcan_priv *priv = netdev_priv(dev); unsigned long flags; @@ -1145,7 +1145,7 @@ static int grcan_transmit_catch_up(struc spin_lock_irqsave(&priv->lock, flags); - work_done = catch_up_echo_skb(dev, budget, true); + work_done = catch_up_echo_skb(dev, -1, true); if (work_done) { if (!priv->resetting && !priv->closing && !(priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)) @@ -1159,8 +1159,6 @@ static int grcan_transmit_catch_up(struc } spin_unlock_irqrestore(&priv->lock, flags); - - return work_done; } static int grcan_receive(struct net_device *dev, int budget) @@ -1242,19 +1240,13 @@ static int grcan_poll(struct napi_struct struct net_device *dev = priv->dev; struct grcan_registers __iomem *regs = priv->regs; unsigned long flags; - int tx_work_done, rx_work_done; - int rx_budget = budget / 2; - int tx_budget = budget - rx_budget; + int work_done; - /* Half of the budget for receiveing messages */ - rx_work_done = grcan_receive(dev, rx_budget); + work_done = grcan_receive(dev, budget); - /* Half of the budget for transmitting messages as that can trigger echo - * frames being received - */ - tx_work_done = grcan_transmit_catch_up(dev, tx_budget); + grcan_transmit_catch_up(dev); - if (rx_work_done < rx_budget && tx_work_done < tx_budget) { + if (work_done < budget) { napi_complete(napi); /* Guarantee no interference with a running reset that otherwise @@ -1271,7 +1263,7 @@ static int grcan_poll(struct napi_struct spin_unlock_irqrestore(&priv->lock, flags); } - return rx_work_done + tx_work_done; + return work_done; } /* Work tx bug by waiting while for the risky situation to clear. If that fails,