Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4599147ioa; Wed, 27 Apr 2022 07:14:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzciDf0wCRd23JJzprpSbbEw9m8D8YT5lmIuJdDgNOiSidSyFXlosbD3Mz41hMxDY3jANwj X-Received: by 2002:a17:90b:1d0e:b0:1c9:b74e:494 with SMTP id on14-20020a17090b1d0e00b001c9b74e0494mr33054406pjb.238.1651068856151; Wed, 27 Apr 2022 07:14:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651068856; cv=none; d=google.com; s=arc-20160816; b=HF71d3GG2gtDmyA6D7oJoTfMztRaMGnCi5i6CZ8XiitDz+h7WhrR9Bgp2MU9ZrrT0d w0NXzmJlRabzpk4QzxKQYj2Coevx6T2xeiMNTSIXy7qZP0m5Kt9hWnW7yJxD47fFBiEF cPbTs7SsvsfIHtqjd4NqqfilXD5BTHYnIyZKYD7oD3s0I+TZbpPu962gFlskM3qVX8hK Mk74asnrsMNz0aCJbs2N0RG3fwgFKvP0CveGdAobZtQM7upHoyisfhIEVRuxLXUZXnVM uWURu6bsAvMEkdLzQG7bVdZb2aWiwcMx0KJCS5he5yzErPwrDQflA2GE5i/ekg+VMplW F6Sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:authorized-sender; bh=7dpd9zk++or8sFh3LFFIly5JsNUeSJMuAv5nLPz4lpY=; b=TuljcePyHB87xOULDiwamM9RB87AM3li1ZYV9dgbzapn9Uk1GQeJBhbUR1tM2w5rx/ tj/j32MzbNzjwSvhXbbjjEoRlF6deM6QxUlLo7xW8bytYzzbu/eZUYBybaZtkGzfbguZ I1+UUulrvTEq9XLBJteAu4+kkK5FNkZDMk56rMjRWzNkrDkUk8EEUpFxSq9gvNkgLLBV RZsee4uFFuCJINwWceUeu2bOO2z3pyctIrwBvQASyYxl1guCd5lkIxhyMoijYliydz0l S1rM7AM93BbntkKosJUaOKNsCtNI35lJFNrPkqhbJnDCvDNldhItjTvT8lzUPlf+8Axu fZ/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id d12-20020a170903230c00b00153be6474c2si1905088plh.531.2022.04.27.07.14.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 07:14:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 92CDD3BC463; Wed, 27 Apr 2022 06:43:55 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236300AbiD0Nq5 (ORCPT + 99 others); Wed, 27 Apr 2022 09:46:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35672 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236323AbiD0Nqs (ORCPT ); Wed, 27 Apr 2022 09:46:48 -0400 Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F05A93B56F0 for ; Wed, 27 Apr 2022 06:43:35 -0700 (PDT) X-Halon-ID: 07644750-c630-11ec-9627-0050569116f7 Authorized-sender: andreas@gaisler.com Received: from andreas.got.gaisler.com (h-98-128-223-123.na.cust.bahnhof.se [98.128.223.123]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id 07644750-c630-11ec-9627-0050569116f7; Wed, 27 Apr 2022 15:43:33 +0200 (CEST) From: Andreas Larsson To: linux-can@vger.kernel.org Cc: Wolfgang Grandegger , Marc Kleine-Budde , Oliver Hartkopp , linux-kernel@vger.kernel.org, software@gaisler.com Subject: [PATCH 3/3] can: grcan: Only use the napi poll budget for rx Date: Wed, 27 Apr 2022 15:43:07 +0200 Message-Id: <20220427134307.22981-4-andreas@gaisler.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220427134307.22981-1-andreas@gaisler.com> References: <20220427134307.22981-1-andreas@gaisler.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE autolearn=no 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 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 with tx and rx interrupts disabled. Signed-off-by: Andreas Larsson --- drivers/net/can/grcan.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c index 2f56d4bbb65c..cb98eadc3b93 100644 --- a/drivers/net/can/grcan.c +++ b/drivers/net/can/grcan.c @@ -1124,7 +1124,7 @@ static int grcan_close(struct net_device *dev) 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; @@ -1132,7 +1132,7 @@ static int grcan_transmit_catch_up(struct net_device *dev, int budget) 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)) @@ -1146,8 +1146,6 @@ static int grcan_transmit_catch_up(struct net_device *dev, int budget) } spin_unlock_irqrestore(&priv->lock, flags); - - return work_done; } static int grcan_receive(struct net_device *dev, int budget) @@ -1229,19 +1227,13 @@ static int grcan_poll(struct napi_struct *napi, int budget) 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 @@ -1258,7 +1250,7 @@ static int grcan_poll(struct napi_struct *napi, int budget) 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, -- 2.17.1