Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp6026359iob; Tue, 10 May 2022 08:45:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw4bG6rsSLkSHzW7SF3o0GOY50HvbBEBLA5N2i4oowzwk8O8WfrGPbkEx5lKc9ejdYgSnT6 X-Received: by 2002:a63:8741:0:b0:3c6:a7d9:5d05 with SMTP id i62-20020a638741000000b003c6a7d95d05mr10361169pge.313.1652197518119; Tue, 10 May 2022 08:45:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652197518; cv=none; d=google.com; s=arc-20160816; b=MgwAlNPAPZmabaEnQzm25NFFYGR2KggbTVOuOc7XP7uQkWKvsmcZQdQuPGn6b7kyG9 ys4hRZ/WwNCLqL7dwdUxM23RFb5f9KqnTmPbdkmPDOqtMF4hvrlhp0YAofVzL3cL8kee GM0XyDrPzp8W0bCj7TJKVKWPwlsLrH6MC3GfDijbrYXivCMykvraACIC/W/EC0ywZFCT A24YoeokgYisT0BJTlRZjbli3oZFSqmEihy3sPDPfjL+fyfDpBwYOwJVFvyFFCHEX4qS RWmFLJ4GbYoSTsgO9991p6jcpWdnMT1XJ65fxPyk9DjY4UVkm0tMQNBR8NZVAZJqzAID ALcg== 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=hyweSp9FKzufyO85xA9n+0jaje6yIdOOisp8tdkqdgk=; b=zbF8EY5I18fK+6GKZYYxTms9TFLL2RhkhpqTeMtiskcmfLFf0mdAEzDD4OzizHnk4R RAouiVuPjTkwXRwmxAa8Rmadb7T/EE5V1soru4tb1C5R4lHe6yYQDSLMxuzEIaZQeh5o RnuG8FtywZevtROS/cNpIwon8E+IxuOQFg8pDp22ZtOmVacR5d5cpNmxILHPibOxw+RB N1SURPr/oXQRE7E2bUf6Q3+LvRJll3CwmDfxWLfTp14P4+0p9nYaNPPYEU2jcufmaVwp 7ucmG0E3LoumW6V95Eub5J6x2AFNkk2iCN0ZKl3ShvUsf6ezeemChlYLlwDRiGmUuWfd 5qdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=vaDKLnTd; 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 qe18-20020a17090b4f9200b001dc87ef4ffdsi3341484pjb.8.2022.05.10.08.45.02; Tue, 10 May 2022 08:45:18 -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=vaDKLnTd; 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 S1343664AbiEJN7X (ORCPT + 99 others); Tue, 10 May 2022 09:59:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41166 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245176AbiEJNig (ORCPT ); Tue, 10 May 2022 09:38:36 -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 2AECD266E1A; Tue, 10 May 2022 06:28:05 -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 DF5E7B81DA8; Tue, 10 May 2022 13:28:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 389A7C385A6; Tue, 10 May 2022 13:28:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652189282; bh=sYcx22CNtW7hSY2tI7NBOUw3XnIwaKgfLUJasIi6tks=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vaDKLnTdkRFcbJtdi8IDBTHYsUajUM3FOGb/kboBtpO13EGryjtp5PxP9yyYQY8V0 ZI7CkcwD9rqP70Dwdk224gd2PgW+D9N92Drlqqx7Vj+EjzL7Av2Vo4lL3tHKXKcWBE yC6JyCOynv/0q2fEC7sI23gUWJIWOrpr6BpyRm2M= 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.10 30/70] can: grcan: only use the NAPI poll budget for RX Date: Tue, 10 May 2022 15:07:49 +0200 Message-Id: <20220510130733.750886197@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220510130732.861729621@linuxfoundation.org> References: <20220510130732.861729621@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,URIBL_BLOCKED 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 @@ -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 receiving 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,