Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp1066479pxy; Thu, 22 Apr 2021 22:23:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8jIMzlOJCOS5f0/nNYyKT5GnsICDy5sYyVL8AUFmH9OYSVjW8f6m6e7r2vNOE6oGOmQLh X-Received: by 2002:a17:902:b68c:b029:eb:6c82:60da with SMTP id c12-20020a170902b68cb02900eb6c8260damr2415377pls.25.1619155398393; Thu, 22 Apr 2021 22:23:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619155398; cv=none; d=google.com; s=arc-20160816; b=r4ZRYExtq7jgVtri6B14G90qLVNhqypRBfRgs7fFIrEA1u+0wfDW5ObWXK22h1aPT/ gEUprFzxe1rlRr3DRX9Dlk+/yFs1DJFuq0lSJOGpPdGdLMV2KtT8I3v/XbTppUwvY7AK b05n7Vfap6lOCHJp8FfcKZV1GkuTPGg72oZ77ATCDtq2SPc3pHD1A0H4RgTRxMZvgPVQ vlK9A0w0EY94/LVZM8BKUPPM8bpTSDwszB/iCDh8hjSjlL9PrjltHpOXfTrhV+0hSb7S GPbM25bkq3fgBDxB00FDf0/iASzyd1lqJ+uRCFXv2ycaUWtcjO/uirFBCFvGD0u1hlos 37Qw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cVCvFP7FkhaoSFqQuRF6Qi4Ni9yogvujik129mGGQRY=; b=jF3XGEKgzPhtiIyuiw0mB4NkNcn7PY1aUNasrxfUYWkdNtfA9/4/5qWZHCvL/dexIn jlyWuVlMtEgLzRJbyBlEaa9Vcb955co62PvtO3w4YVEwjTyIg39UaMYSbZaY7u+6rlib a2STEgsnTSektCBk5PETOJVI4Lv3G8Q48XZERV7Q1dgGsvGaP089o0gwufcFyRJw5Fs6 Fjm88g86DJPpJzjyt9s+C1I4qV0N/4mEjklYakqjrS3rFiS2t4rrPCxxP0KxfnbQr+A2 bLgeSLkEPbxEaE2Y+mxaeHjlhelrkURBMsek13RuxekKE1UdTJWsmPkCxRkDLvBVWzZ2 45Qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=b8DQMctC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id mj9si5583436pjb.161.2021.04.22.22.23.06; Thu, 22 Apr 2021 22:23:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=b8DQMctC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240724AbhDWFWk (ORCPT + 99 others); Fri, 23 Apr 2021 01:22:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240602AbhDWFWF (ORCPT ); Fri, 23 Apr 2021 01:22:05 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF37FC06138D; Thu, 22 Apr 2021 22:21:29 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id o16so11066563plg.5; Thu, 22 Apr 2021 22:21:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cVCvFP7FkhaoSFqQuRF6Qi4Ni9yogvujik129mGGQRY=; b=b8DQMctCJXEHiD048Y5scEAzRTZ7QYvWF0SxauygF7xjyqpaGVHJSji2oR+CngdSj/ vvS7D2kVSZtdUKViEdS0uSACqA5QM0IpxROAN41YOz8O9yNm4+RSTCa2GYpdTTZnGvA/ NrCPPzaCIkTwUEL+ftiCUwGmNEvco9FLYkjBz7WLg19cJk/cENK55WipKFnstSh1vyhm ldz7VUzgN1E782MgEVp44U7FVEY7gY2anAgw5F0BC7BUwMmHOuXyAkA3zUC0HUa58uxH MQo0nC9HZTuh+PjehkK4X4hHwiVBoTDa3ADj/945jPJatpfXrlT72yao2WwYMjrZRHn4 OeSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cVCvFP7FkhaoSFqQuRF6Qi4Ni9yogvujik129mGGQRY=; b=l+qbO7OMdFVJbdkLrWgIa9nbXET2ztOtCk+wawoLyr5TiDcEG8L5ZNz04xkXQ/3v3L TkISxKPuI31aMmLugVy9YmZsGaJtzHaTOMpGiYs1okxeFAB0Ta/zHJYHkPxDOsaK0IDo 3Ow2MONBOQ5UVJiC9wSXfTFlVY0DrjerQyRD33G/LB6yKcsWbbelJYQhFkPDm9zHGZOo KZsmr618otCzbMZzmazxwSb/wMCeWBCMdhZ2jow2XYJTiKoPE/BJuKaJGfg27Tcj0YqS Dc2PM6DLMK5YG2dotbqfpZ+hFqUPjYN03iQ/4xrSwdT46OtPfcAEwEMApvv934StUWyC Zcsw== X-Gm-Message-State: AOAM530CcQ+0s4FqKLDkxukGpQivtqcljlfzNkylCsow9msYnJ57JqKg zJAMgP5Jux3scNaD1Pg5Hew= X-Received: by 2002:a17:90a:4f41:: with SMTP id w1mr3896776pjl.231.1619155289404; Thu, 22 Apr 2021 22:21:29 -0700 (PDT) Received: from z640-arch.lan ([2602:61:7344:f100::678]) by smtp.gmail.com with ESMTPSA id y24sm6238825pjp.26.2021.04.22.22.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Apr 2021 22:21:29 -0700 (PDT) From: Ilya Lipnitskiy To: Felix Fietkau , John Crispin , Sean Wang , Mark Lee , "David S. Miller" , Jakub Kicinski , Matthias Brugger , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Cc: Ilya Lipnitskiy Subject: [PATCH net-next v2 13/15] net: ethernet: mtk_eth_soc: rework NAPI callbacks Date: Thu, 22 Apr 2021 22:21:06 -0700 Message-Id: <20210423052108.423853-14-ilya.lipnitskiy@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210423052108.423853-1-ilya.lipnitskiy@gmail.com> References: <20210423052108.423853-1-ilya.lipnitskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use napi_complete_done to communicate total TX and RX work done to NAPI. Count total RX work up instead of remaining work down for clarity. Remove unneeded local variables for clarity. Use do {} while instead of goto for clarity. Suggested-by: Jakub Kicinski Signed-off-by: Ilya Lipnitskiy --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 54 +++++++++------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index e1792ccaedc3..8faf8fb1c83a 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -1496,7 +1496,6 @@ static void mtk_handle_status_irq(struct mtk_eth *eth) static int mtk_napi_tx(struct napi_struct *napi, int budget) { struct mtk_eth *eth = container_of(napi, struct mtk_eth, tx_napi); - u32 status, mask; int tx_done = 0; if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) @@ -1505,21 +1504,19 @@ static int mtk_napi_tx(struct napi_struct *napi, int budget) tx_done = mtk_poll_tx(eth, budget); if (unlikely(netif_msg_intr(eth))) { - status = mtk_r32(eth, eth->tx_int_status_reg); - mask = mtk_r32(eth, eth->tx_int_mask_reg); dev_info(eth->dev, - "done tx %d, intr 0x%08x/0x%x\n", - tx_done, status, mask); + "done tx %d, intr 0x%08x/0x%x\n", tx_done, + mtk_r32(eth, eth->tx_int_status_reg), + mtk_r32(eth, eth->tx_int_mask_reg)); } if (tx_done == budget) return budget; - status = mtk_r32(eth, eth->tx_int_status_reg); - if (status & MTK_TX_DONE_INT) + if (mtk_r32(eth, eth->tx_int_status_reg) & MTK_TX_DONE_INT) return budget; - if (napi_complete(napi)) + if (napi_complete_done(napi, tx_done)) mtk_tx_irq_enable(eth, MTK_TX_DONE_INT); return tx_done; @@ -1528,36 +1525,33 @@ static int mtk_napi_tx(struct napi_struct *napi, int budget) static int mtk_napi_rx(struct napi_struct *napi, int budget) { struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi); - u32 status, mask; - int rx_done = 0; - int remain_budget = budget; + int rx_done_total = 0; mtk_handle_status_irq(eth); -poll_again: - mtk_w32(eth, MTK_RX_DONE_INT, MTK_PDMA_INT_STATUS); - rx_done = mtk_poll_rx(napi, remain_budget, eth); + do { + int rx_done; - if (unlikely(netif_msg_intr(eth))) { - status = mtk_r32(eth, MTK_PDMA_INT_STATUS); - mask = mtk_r32(eth, MTK_PDMA_INT_MASK); - dev_info(eth->dev, - "done rx %d, intr 0x%08x/0x%x\n", - rx_done, status, mask); - } - if (rx_done == remain_budget) - return budget; + mtk_w32(eth, MTK_RX_DONE_INT, MTK_PDMA_INT_STATUS); + rx_done = mtk_poll_rx(napi, budget - rx_done_total, eth); + rx_done_total += rx_done; - status = mtk_r32(eth, MTK_PDMA_INT_STATUS); - if (status & MTK_RX_DONE_INT) { - remain_budget -= rx_done; - goto poll_again; - } + if (unlikely(netif_msg_intr(eth))) { + dev_info(eth->dev, + "done rx %d, intr 0x%08x/0x%x\n", rx_done, + mtk_r32(eth, MTK_PDMA_INT_STATUS), + mtk_r32(eth, MTK_PDMA_INT_MASK)); + } + + if (rx_done_total == budget) + return budget; + + } while (mtk_r32(eth, MTK_PDMA_INT_STATUS) & MTK_RX_DONE_INT); - if (napi_complete(napi)) + if (napi_complete_done(napi, rx_done_total)) mtk_rx_irq_enable(eth, MTK_RX_DONE_INT); - return rx_done + budget - remain_budget; + return rx_done_total; } static int mtk_tx_alloc(struct mtk_eth *eth) -- 2.31.1