Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp807465iob; Fri, 13 May 2022 13:10:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEZY6czNHj9euLwYPeViNd6ttwLS9xjhhn4VqtadkKfZEQRyTn6FoQqdoPieecDoNQxkyJ X-Received: by 2002:a5d:630d:0:b0:20a:e1a3:8018 with SMTP id i13-20020a5d630d000000b0020ae1a38018mr5238045wru.489.1652472620472; Fri, 13 May 2022 13:10:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652472620; cv=none; d=google.com; s=arc-20160816; b=DXpksV8EqI/JBgLPEp8BxSJJVvx8+4PGcOk+L/PP8FVK3usqWCt7uoAxhouAWk9Hbq t2tt4afJ2aqQ2VAHyUkC2sOCJTujIGx30oepzEkMlnW3Ku1XQnhmRoRl4MS4Wd9Y1pt0 6viKzfPFX4h5OOHUWi4Ls6E2JBhILwiEdpA0vrptC1SOTQGFbFn+Vbu2WZ5q5q50FIu3 rztYNhoohIQCYCtCHksUEPk9T+e+CIhflcGTM1hhFIqBhHDHNDlGZX1scE2lbrerkfhV CGskJH6u1bKFEk8vWLEfg5Jxrtp1BcOOSW/OIWOH9p5Zo6G8iA1eBBmVreQin6sYjWSj YEuA== 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=ZdcFuOJyWvXaB4hxfYz5eMAzGI5KYw0HCxB3cGeaUlI=; b=NPCRAygcopWU95pdcM94kq1ucmiq3P7b96Bdhj1nijdPwi2bLfGaaqSJJrk1k4OSPR jKtj212GDAlr5mdIg0NU1fK2wD9Yts5br8Tq5QVC5Nh/Y3uTZH3wfuyiuIR4jdNuE7js H25y52sohqh68v+7mL4Ua2QDJXEPiytJUNpaswVSWiqRPgHlBo05j7EG4zQW3VCIsu/Q AMZIyA5Tf4xxjw8q+kNtLtdvN5ddQ7iMKggAERluNBRdzGiQyoENKWLbRtmSe0SkdySG mGFG+zDw8UMYrNmo6DwSqHB7kmfAbprz7ud/jRRM2+H+NUhOArcBTYZyU/YiVAyF78h8 hQ9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=gUNMzpal; 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 v18-20020a056000163200b0020408aa302dsi3565924wrb.363.2022.05.13.13.09.51; Fri, 13 May 2022 13:10:20 -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=gUNMzpal; 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 S1380083AbiEMO3B (ORCPT + 99 others); Fri, 13 May 2022 10:29:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1381060AbiEMO03 (ORCPT ); Fri, 13 May 2022 10:26:29 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EA95060AB2; Fri, 13 May 2022 07:26: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 954D5B83068; Fri, 13 May 2022 14:26:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E0E62C34117; Fri, 13 May 2022 14:26:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652451967; bh=QF88le2UwZdYFdKhakOikXNGtWetoJ79BBE9pUZFl9c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gUNMzpalOt5WUmBxrykZjzFIl8hjiH/ZJi3uTyVG1Q/x2EM007d1OCJEDD+1fleoW Ji7rO1b8AP3n8RM6WrgkI6+6dshidjZWRb9MhMQ/A3zsrLSqhBhCF6iWCj+20Zbg47 fJisTTBIJuYpvgSREsNfRw8EzjsVGp9nPaHp+hm8= 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 4.19 06/15] can: grcan: only use the NAPI poll budget for RX Date: Fri, 13 May 2022 16:23:28 +0200 Message-Id: <20220513142228.083549373@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220513142227.897535454@linuxfoundation.org> References: <20220513142227.897535454@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.7 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: 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 @@ -1141,7 +1141,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; @@ -1149,7 +1149,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)) @@ -1163,8 +1163,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) @@ -1246,19 +1244,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 @@ -1275,7 +1267,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,