From patchwork Mon Aug 31 23:35:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1354653 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=1o0LAynk; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BgRRJ1y3tz9sVS for ; Tue, 1 Sep 2020 09:36:12 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726131AbgHaXgK (ORCPT ); Mon, 31 Aug 2020 19:36:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725814AbgHaXgI (ORCPT ); Mon, 31 Aug 2020 19:36:08 -0400 Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD540C061573 for ; Mon, 31 Aug 2020 16:36:07 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id z15so4005681plo.7 for ; Mon, 31 Aug 2020 16:36:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0GsUkwyyePTcF4PM1YP9+SkZY0LA0X782tp1AILmXhQ=; b=1o0LAynkMylle0iW3W5y+KgNFUF1LTHikHIp9gpg5GqtQtmXaE297QqKnFHcZ8Ot+i YJUk0816ckvQCb0a1DspN9+A/HK+fzNgf4XY3BA/cwNdYTWyMh6wlJYNU1kMs7ujwp/Z hCpwFEl3Gj0Lzawpaj+SjrxUlabaCjRizd7n0uePfnA1VUEQY5/hODleFVl5nAfQZljL mRFgSIQJzpp4E+GFLwBS6/qTwO+sFuuvStBCMzMmSmsZUn0cTukXtDo3zVKickqyXUbz 8Q5VrUxRkmZOS6xLMrYaJlyM2H+NiUmdGeVCmivkI0069n1JHTEW4uQ6WqhH7zpVhlIW 7XKw== 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; bh=0GsUkwyyePTcF4PM1YP9+SkZY0LA0X782tp1AILmXhQ=; b=ZwBT8wzavamDmWUB1kCYAb/3/QDRjCz4m4xF5t3/gPEPfijCAujMC6GppdHnaC67lw bmc4wEr9OZ59xuKWPBVt0O13wYnoNsb7a4bXrV0o14HD+zPi2n+y3K0vQZ+23rJcbMrp tncAWVjX6QUEHD4PzTbsqn4dwUO2YvP7O5Vn2DAyprLcgB+ppKmZqYaC630U7o7wdmL+ 8nkwWZO++hR6mM/KbfzluEzMuE7aiZhzb6HgRtB9xNcNFG4PhpfejWvQuYBpZkf/Rxdj kGia0lmq2pFfEz5zeBDeNw3Xrl/1fuMQyVGOPI+w5OnIL2wfwiOahHvtF4UxNqx9AxWi BwAA== X-Gm-Message-State: AOAM532e1eHxyWozR7BbJ6ySdAEGofCvF5+G+5yAP5ie2l0YKDfyiPK4 tQcBoeS21zrB2lJ1dKieXosFpaf9QzVvnw== X-Google-Smtp-Source: ABdhPJxsuZU+07/2FJcqyS+96AbxZOhlhuEvss63ZxxM6Jr2Rb7ez6Hy2i8MyXrTf5ooKAByHXRAiQ== X-Received: by 2002:a17:90a:8d05:: with SMTP id c5mr1505754pjo.222.1598916967144; Mon, 31 Aug 2020 16:36:07 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id 65sm9082651pfx.104.2020.08.31.16.36.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Aug 2020 16:36:06 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson , Neel Patel Subject: [PATCH net-next 1/5] ionic: clean up page handling code Date: Mon, 31 Aug 2020 16:35:54 -0700 Message-Id: <20200831233558.71417-2-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200831233558.71417-1-snelson@pensando.io> References: <20200831233558.71417-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The internal page handling can be cleaned up by passing our local page struct rather than dma addresses, and by putting more of the mgmt code into the alloc and free routines. Signed-off-by: Neel Patel Signed-off-by: Shannon Nelson --- .../net/ethernet/pensando/ionic/ionic_txrx.c | 73 +++++++++++-------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c index c3291decd4c3..efc02b366e73 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c @@ -100,6 +100,8 @@ static struct sk_buff *ionic_rx_frags(struct ionic_queue *q, frag_len = min(len, (u16)PAGE_SIZE); len -= frag_len; + dma_sync_single_for_cpu(dev, dma_unmap_addr(page_info, dma_addr), + len, DMA_FROM_DEVICE); dma_unmap_page(dev, dma_unmap_addr(page_info, dma_addr), PAGE_SIZE, DMA_FROM_DEVICE); skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, @@ -266,40 +268,49 @@ void ionic_rx_flush(struct ionic_cq *cq) work_done, IONIC_INTR_CRED_RESET_COALESCE); } -static struct page *ionic_rx_page_alloc(struct ionic_queue *q, - dma_addr_t *dma_addr) +static int ionic_rx_page_alloc(struct ionic_queue *q, + struct ionic_page_info *page_info) { struct ionic_lif *lif = q->lif; struct ionic_rx_stats *stats; struct net_device *netdev; struct device *dev; - struct page *page; netdev = lif->netdev; dev = lif->ionic->dev; stats = q_to_rx_stats(q); - page = alloc_page(GFP_ATOMIC); - if (unlikely(!page)) { - net_err_ratelimited("%s: Page alloc failed on %s!\n", + + if (unlikely(!page_info)) { + net_err_ratelimited("%s: %s invalid page_info in alloc\n", + netdev->name, q->name); + return -EINVAL; + } + + page_info->page = dev_alloc_page(); + if (unlikely(!page_info->page)) { + net_err_ratelimited("%s: %s page alloc failed\n", netdev->name, q->name); stats->alloc_err++; - return NULL; + return -ENOMEM; } - *dma_addr = dma_map_page(dev, page, 0, PAGE_SIZE, DMA_FROM_DEVICE); - if (unlikely(dma_mapping_error(dev, *dma_addr))) { - __free_page(page); - net_err_ratelimited("%s: DMA single map failed on %s!\n", + page_info->dma_addr = dma_map_page(dev, page_info->page, 0, PAGE_SIZE, + DMA_FROM_DEVICE); + if (unlikely(dma_mapping_error(dev, page_info->dma_addr))) { + put_page(page_info->page); + page_info->dma_addr = 0; + page_info->page = NULL; + net_err_ratelimited("%s: %s dma map failed\n", netdev->name, q->name); stats->dma_map_err++; - return NULL; + return -EIO; } - return page; + return 0; } -static void ionic_rx_page_free(struct ionic_queue *q, struct page *page, - dma_addr_t dma_addr) +static void ionic_rx_page_free(struct ionic_queue *q, + struct ionic_page_info *page_info) { struct ionic_lif *lif = q->lif; struct net_device *netdev; @@ -308,15 +319,23 @@ static void ionic_rx_page_free(struct ionic_queue *q, struct page *page, netdev = lif->netdev; dev = lif->ionic->dev; - if (unlikely(!page)) { - net_err_ratelimited("%s: Trying to free unallocated buffer on %s!\n", + if (unlikely(!page_info)) { + net_err_ratelimited("%s: %s invalid page_info in free\n", netdev->name, q->name); return; } - dma_unmap_page(dev, dma_addr, PAGE_SIZE, DMA_FROM_DEVICE); + if (unlikely(!page_info->page)) { + net_err_ratelimited("%s: %s invalid page in free\n", + netdev->name, q->name); + return; + } - __free_page(page); + dma_unmap_page(dev, page_info->dma_addr, PAGE_SIZE, DMA_FROM_DEVICE); + + put_page(page_info->page); + page_info->dma_addr = 0; + page_info->page = NULL; } void ionic_rx_fill(struct ionic_queue *q) @@ -352,8 +371,7 @@ void ionic_rx_fill(struct ionic_queue *q) desc->opcode = (nfrags > 1) ? IONIC_RXQ_DESC_OPCODE_SG : IONIC_RXQ_DESC_OPCODE_SIMPLE; desc_info->npages = nfrags; - page_info->page = ionic_rx_page_alloc(q, &page_info->dma_addr); - if (unlikely(!page_info->page)) { + if (unlikely(ionic_rx_page_alloc(q, page_info))) { desc->addr = 0; desc->len = 0; return; @@ -370,8 +388,7 @@ void ionic_rx_fill(struct ionic_queue *q) continue; sg_elem = &sg_desc->elems[j]; - page_info->page = ionic_rx_page_alloc(q, &page_info->dma_addr); - if (unlikely(!page_info->page)) { + if (unlikely(ionic_rx_page_alloc(q, page_info))) { sg_elem->addr = 0; sg_elem->len = 0; return; @@ -409,14 +426,8 @@ void ionic_rx_empty(struct ionic_queue *q) desc->addr = 0; desc->len = 0; - for (i = 0; i < desc_info->npages; i++) { - if (likely(desc_info->pages[i].page)) { - ionic_rx_page_free(q, desc_info->pages[i].page, - desc_info->pages[i].dma_addr); - desc_info->pages[i].page = NULL; - desc_info->pages[i].dma_addr = 0; - } - } + for (i = 0; i < desc_info->npages; i++) + ionic_rx_page_free(q, &desc_info->pages[i]); desc_info->cb_arg = NULL; idx = (idx + 1) & (q->num_descs - 1); From patchwork Mon Aug 31 23:35:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1354654 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=Bel4hS0y; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BgRRL4Hm7z9sTS for ; Tue, 1 Sep 2020 09:36:14 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726192AbgHaXgL (ORCPT ); Mon, 31 Aug 2020 19:36:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726068AbgHaXgJ (ORCPT ); Mon, 31 Aug 2020 19:36:09 -0400 Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1FC0C061575 for ; Mon, 31 Aug 2020 16:36:08 -0700 (PDT) Received: by mail-pj1-x1034.google.com with SMTP id np15so683220pjb.0 for ; Mon, 31 Aug 2020 16:36:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VhyCl3TFZWppqzE6e3zLdA7+NywekEPhIa79WgzIgnQ=; b=Bel4hS0ynfUMmynFQcG3/20GTN/sWW4ZtNKiFYK+8XwfnioSGco/hASVymMW1DMZit JKHswuIhAyLOnX4iY9F6xPzos9yhIzM3I1K5AgrfqAdOKHwjMv54FdsG8z9ynUUlwvb/ AkjWXkgfqsN8dXUHcE8I0mTkuyDcWCURoYbZuiDiPUJfaPgZhIG56yRyc1BOtj6niYQF cYoOdjMMdjD0JoaLfoCd/2QA/Bz/AeynkgUD6PrZosd8vabSWR9UMh5jt4+/GmNQSKqK cmqaio6aj9pj4tBONq8y8gjzguZaKJqHY5bu4p8LXgE5VQYb1AhszDnQwvx6IpshGWYe 9X9A== 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; bh=VhyCl3TFZWppqzE6e3zLdA7+NywekEPhIa79WgzIgnQ=; b=auh4kuZaRPXVZs+8JiuQgQRnlDXRMFEyD+WCG5VpdUGZ447k/D/XKeFY+AKOie713J dyQzJboWvDNk6xbyi1yhfYxVdWDf/ciE9P+NScxzDS6VTQH6eKH6+9ZSCJiRfsE2n3Rv gOTnTUAVXc45nTzoq41OMSAG9LEmNm0w6ikuLwmA+wuLPSLGZmqr3RJBpdFzmEdb4MdH +rZSOL+yEHRQrceQ6Tjp0W/+8Q2kMTxHzvKJuFPSxfALx82gttL57NYSWUHh4KblD2Ut aLYGJ5VPk1Jtl0YcI2gsGWIyeSG1ryo+Ow0K4LbyVbU1X7x+iLwrwJJ3qicNhpbDCBMF euOw== X-Gm-Message-State: AOAM533ltJVxUizZmfQzl4610FVZkYJfHBB6Cz835DxyIxBK/TLXK7LT KwbfTF4DO3VZIaW8XYoOixVwcWCzJadzFQ== X-Google-Smtp-Source: ABdhPJxmwRYwmSlEFJHe22SP2YdQL/4sGFuTs0X7VeL35sl+9LQyBloSTRquefwt7YgzhWhaNexkww== X-Received: by 2002:a17:90b:34e:: with SMTP id fh14mr1582125pjb.186.1598916968124; Mon, 31 Aug 2020 16:36:08 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id 65sm9082651pfx.104.2020.08.31.16.36.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Aug 2020 16:36:07 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH net-next 2/5] ionic: smaller coalesce default Date: Mon, 31 Aug 2020 16:35:55 -0700 Message-Id: <20200831233558.71417-3-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200831233558.71417-1-snelson@pensando.io> References: <20200831233558.71417-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We've found that a smaller default value for interrupt coalescing works better for latency without hurting general operations. Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic_dev.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_dev.h b/drivers/net/ethernet/pensando/ionic/ionic_dev.h index 9e2ac2b8a082..2b2eb5f2a0e5 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_dev.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_dev.h @@ -16,7 +16,7 @@ #define IONIC_DEF_TXRX_DESC 4096 #define IONIC_LIFS_MAX 1024 #define IONIC_WATCHDOG_SECS 5 -#define IONIC_ITR_COAL_USEC_DEFAULT 64 +#define IONIC_ITR_COAL_USEC_DEFAULT 8 #define IONIC_DEV_CMD_REG_VERSION 1 #define IONIC_DEV_INFO_REG_COUNT 32 From patchwork Mon Aug 31 23:35:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1354655 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=GFNTQ5nW; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BgRRQ5WbHz9sTS for ; Tue, 1 Sep 2020 09:36:18 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726301AbgHaXgR (ORCPT ); Mon, 31 Aug 2020 19:36:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726224AbgHaXgL (ORCPT ); Mon, 31 Aug 2020 19:36:11 -0400 Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 662A1C061573 for ; Mon, 31 Aug 2020 16:36:11 -0700 (PDT) Received: by mail-pj1-x1042.google.com with SMTP id mm21so745104pjb.4 for ; Mon, 31 Aug 2020 16:36:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=KgXZdM7W7kfk4TYvsCyI2TxUr5gp7VRTxKkVQMYG7rg=; b=GFNTQ5nWCeAnNRo7TklxIznWBbdTCe6+m1s/zI35dbu/5EoCREoX6qKZU4zbdrAhU4 2FMCosRopYDqjZHVGLTAxXdEGkzYfb76tzw8y2SyuOh9OApzc6EAauoqc30mrYV6Yx0+ bRDY7KV+THYIOptmUKbJp2Xtlz/LGQj15yD4qujH46Pw1QLA7ZNOe7Q4vUwlyqzWvmsw w9UsXX84DMlcwJaC+hfNVJMpJ1c53j5S6OSQT3NoklIbAO9jaeCYUptpMmsNWu2IAE3A S7tEr+crBg9R2bwBnULidzzC4/2sxN2vx3kf7cw3/9wrmXfA1rwwuinJiKnsVrS9h7NN 40FA== 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; bh=KgXZdM7W7kfk4TYvsCyI2TxUr5gp7VRTxKkVQMYG7rg=; b=qhMU6v/aEgsw8KZJj2XUaNKJTFI5nWF03MW92Ztx6Dtf2nix/nXIKZcPFoP4av3bMi SfIbH9H04KpwR2yTVsfJF6SfK1MRUX8pHw7IE1+ho4+FBSy3vdf0MoZG7oj7DCaib2Uo H/uAJ9buvNCsa/oQ9x+ZoWvJwnbu8Nl4/5IzayAUUsk4/tmJZcOIdjHkuxX2xGbfAls7 1tSrjUeSgftrNK+aae6fWqxVbPyb0hbQOOzh0/yX7fAYBsdRYocBPPoiAzR9K5bPgfMf 2/F7MZL9H+DwOL5spAyuw6vdaNgEQ3A7vaJe5KLI+8w8TmFyrNx1Dv3mR0l1EqqPRh7i QeAw== X-Gm-Message-State: AOAM531lEeYrg9wOLAoQ6zi1o+uSphrQN9azujfs5UlLh5tvdCFRjlPE 7Lso3pwRLx+W0wWIL/zGLcDgYrhjNtX2JA== X-Google-Smtp-Source: ABdhPJwlpmpD8qgy6On0kMjdq/9QVGxjhTplOfKgBHnen9cQBlTFEMtlx+UENSCm4upD3rFD8fRqQA== X-Received: by 2002:a17:90a:e64b:: with SMTP id ep11mr1566091pjb.10.1598916969188; Mon, 31 Aug 2020 16:36:09 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id 65sm9082651pfx.104.2020.08.31.16.36.08 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Aug 2020 16:36:08 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH net-next 3/5] ionic: struct reorder for faster access Date: Mon, 31 Aug 2020 16:35:56 -0700 Message-Id: <20200831233558.71417-4-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200831233558.71417-1-snelson@pensando.io> References: <20200831233558.71417-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Move a few active struct fields to the front of the struct for a little better cache use and performance. Signed-off-by: Shannon Nelson --- .../net/ethernet/pensando/ionic/ionic_dev.h | 18 +++++++++--------- .../net/ethernet/pensando/ionic/ionic_lif.h | 14 +++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_dev.h b/drivers/net/ethernet/pensando/ionic/ionic_dev.h index 2b2eb5f2a0e5..87debc512755 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_dev.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_dev.h @@ -199,16 +199,17 @@ struct ionic_desc_info { struct ionic_queue { struct device *dev; - u64 dbell_count; - u64 drop; - u64 stop; - u64 wake; struct ionic_lif *lif; struct ionic_desc_info *info; - struct ionic_dev *idev; u16 head_idx; u16 tail_idx; unsigned int index; + unsigned int num_descs; + u64 dbell_count; + u64 stop; + u64 wake; + u64 drop; + struct ionic_dev *idev; unsigned int type; unsigned int hw_index; unsigned int hw_type; @@ -226,7 +227,6 @@ struct ionic_queue { }; dma_addr_t base_pa; dma_addr_t sg_base_pa; - unsigned int num_descs; unsigned int desc_size; unsigned int sg_desc_size; unsigned int pid; @@ -246,8 +246,6 @@ struct ionic_intr_info { }; struct ionic_cq { - void *base; - dma_addr_t base_pa; struct ionic_lif *lif; struct ionic_cq_info *info; struct ionic_queue *bound_q; @@ -255,8 +253,10 @@ struct ionic_cq { u16 tail_idx; bool done_color; unsigned int num_descs; - u64 compl_count; unsigned int desc_size; + u64 compl_count; + void *base; + dma_addr_t base_pa; }; struct ionic; diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.h b/drivers/net/ethernet/pensando/ionic/ionic_lif.h index e1e6ff1a0918..11ea9e0c6a4a 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.h @@ -16,32 +16,32 @@ #define IONIC_TX_BUDGET_DEFAULT 256 struct ionic_tx_stats { - u64 dma_map_err; u64 pkts; u64 bytes; - u64 clean; - u64 linearize; u64 csum_none; u64 csum; - u64 crc32_csum; u64 tso; u64 tso_bytes; u64 frags; u64 vlan_inserted; + u64 clean; + u64 linearize; + u64 crc32_csum; u64 sg_cntr[IONIC_MAX_NUM_SG_CNTR]; + u64 dma_map_err; }; struct ionic_rx_stats { - u64 dma_map_err; - u64 alloc_err; u64 pkts; u64 bytes; u64 csum_none; u64 csum_complete; - u64 csum_error; u64 buffers_posted; u64 dropped; u64 vlan_stripped; + u64 csum_error; + u64 dma_map_err; + u64 alloc_err; }; #define IONIC_QCQ_F_INITED BIT(0) From patchwork Mon Aug 31 23:35:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1354657 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=JRYGBKzY; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BgRRV4qdkz9sTS for ; Tue, 1 Sep 2020 09:36:22 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726406AbgHaXgV (ORCPT ); Mon, 31 Aug 2020 19:36:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726068AbgHaXgO (ORCPT ); Mon, 31 Aug 2020 19:36:14 -0400 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AE96C061755 for ; Mon, 31 Aug 2020 16:36:13 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id g29so1621269pgl.2 for ; Mon, 31 Aug 2020 16:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=V7QfDockLLbnm32/uHygO4bTj+4k1jhtJya2L/zQsc8=; b=JRYGBKzY2wpf+8KZBkjIYZdXEXVVOmNEGiLeIGO54kAFaDF27PaYavinTnBOYkZoa6 3Xgyf+8XwkNkCOxWYY29kxk0KF5SLV5mKv7Wr2naNUTscwn3IrHOH2m3yima2DhcqhvN qCt38a+bbz9U7IDiDuOIP/m/+dl5J0ZKUQH5hdtC1U3tLk/w9sr3yjcJRxvVU+M7H8G1 z7RFTAaKab7yoNIUS8cauefiX5+NighbA/ruCVRzeL5xbeTIhDU8327qrMeJcDwuLLIG r5gRsxg7P0W1vZyZd2JyzCcEhzQL22fxlAF+HPv8NfVHS95F+7ewmAHhC7Gjqxrz7vrU H3YA== 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; bh=V7QfDockLLbnm32/uHygO4bTj+4k1jhtJya2L/zQsc8=; b=WXuvvqnHKhP0EEGxU9vNqTTDu5ov932l4bIDdKLSQOT52kp07uwLIGp3/DFlP9qlfa uYiBapMfMJXjWBtPmtZxJYlv/OCosxLeP2VovT+00Q8Ilmba3luxqu0lW5TjPZKIsC3f WhxVAxgMZdflku6BFWfA5zEv1kIEqYTRnbJ8c5TPpVG73I+VNBuEK9bK00wplQV+N3u8 0KzBagxiG17ybWzTQDB0TjGgXxLEsJSMGHp3kC0UEZBZvYOhjhj6LRs6ru5LdTGNKRTB nb/lIqvk1IMOUaGY8V/lOCPNSrcOgq5nIRDzM3ShjsEfKFOZNJG7ZKgr3fDGcblTsrod Mzjw== X-Gm-Message-State: AOAM531+d8rx41MjrnMXZDYuQ3h5wOVVI36MbO8BMyeFnY7P1It2Qk/h Cez+sIUGUvpmbsuubaaeVPET7GkBzVmVCw== X-Google-Smtp-Source: ABdhPJzJkFdGLs6AgmhMOFRh1I5W70NqKdodwEfevJ4HFmX9tbSsodllOHwvoeEenqmKe/z4FVMH4A== X-Received: by 2002:a63:c343:: with SMTP id e3mr2931097pgd.288.1598916971623; Mon, 31 Aug 2020 16:36:11 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id 65sm9082651pfx.104.2020.08.31.16.36.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Aug 2020 16:36:11 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson , Neel Patel Subject: [PATCH net-next 4/5] ionic: clean up desc_info and cq_info structs Date: Mon, 31 Aug 2020 16:35:57 -0700 Message-Id: <20200831233558.71417-5-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200831233558.71417-1-snelson@pensando.io> References: <20200831233558.71417-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Remove some unnecessary struct fields and related code. Signed-off-by: Neel Patel Signed-off-by: Shannon Nelson --- .../net/ethernet/pensando/ionic/ionic_dev.c | 33 ++----------------- .../net/ethernet/pensando/ionic/ionic_dev.h | 6 ---- .../net/ethernet/pensando/ionic/ionic_txrx.c | 8 +++-- 3 files changed, 8 insertions(+), 39 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_dev.c b/drivers/net/ethernet/pensando/ionic/ionic_dev.c index 3645673b4b18..6068f51a11d9 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_dev.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_dev.c @@ -467,9 +467,7 @@ int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq, struct ionic_intr_info *intr, unsigned int num_descs, size_t desc_size) { - struct ionic_cq_info *cur; unsigned int ring_size; - unsigned int i; if (desc_size == 0 || !is_power_of_2(num_descs)) return -EINVAL; @@ -485,19 +483,6 @@ int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq, cq->tail_idx = 0; cq->done_color = 1; - cur = cq->info; - - for (i = 0; i < num_descs; i++) { - if (i + 1 == num_descs) { - cur->next = cq->info; - cur->last = true; - } else { - cur->next = cur + 1; - } - cur->index = i; - cur++; - } - return 0; } @@ -551,9 +536,7 @@ int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev, unsigned int num_descs, size_t desc_size, size_t sg_desc_size, unsigned int pid) { - struct ionic_desc_info *cur; unsigned int ring_size; - unsigned int i; if (desc_size == 0 || !is_power_of_2(num_descs)) return -EINVAL; @@ -574,18 +557,6 @@ int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev, snprintf(q->name, sizeof(q->name), "L%d-%s%u", lif->index, name, index); - cur = q->info; - - for (i = 0; i < num_descs; i++) { - if (i + 1 == num_descs) - cur->next = q->info; - else - cur->next = cur + 1; - cur->index = i; - cur->left = num_descs - i; - cur++; - } - return 0; } @@ -652,6 +623,7 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, struct ionic_desc_info *desc_info; ionic_desc_cb cb; void *cb_arg; + u16 index; /* check for empty queue */ if (q->tail_idx == q->head_idx) @@ -665,6 +637,7 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, do { desc_info = &q->info[q->tail_idx]; + index = q->tail_idx; q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); cb = desc_info->cb; @@ -675,5 +648,5 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, if (cb) cb(q, desc_info, cq_info, cb_arg); - } while (desc_info->index != stop_index); + } while (index != stop_index); } diff --git a/drivers/net/ethernet/pensando/ionic/ionic_dev.h b/drivers/net/ethernet/pensando/ionic/ionic_dev.h index 87debc512755..21c3ce9ee446 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_dev.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_dev.h @@ -156,9 +156,6 @@ struct ionic_cq_info { struct ionic_admin_comp *admincq; struct ionic_notifyq_event *notifyq; }; - struct ionic_cq_info *next; - unsigned int index; - bool last; }; struct ionic_queue; @@ -186,9 +183,6 @@ struct ionic_desc_info { struct ionic_txq_sg_desc *txq_sg_desc; struct ionic_rxq_sg_desc *rxq_sgl_desc; }; - struct ionic_desc_info *next; - unsigned int index; - unsigned int left; unsigned int npages; struct ionic_page_info pages[IONIC_RX_MAX_SG_ELEMS + 1]; ionic_desc_cb cb; diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c index efc02b366e73..8ba14792616f 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c @@ -240,10 +240,10 @@ static bool ionic_rx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) if (q->tail_idx == q->head_idx) return false; - desc_info = &q->info[q->tail_idx]; - if (desc_info->index != le16_to_cpu(comp->comp_index)) + if (q->tail_idx != le16_to_cpu(comp->comp_index)) return false; + desc_info = &q->info[q->tail_idx]; q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); /* clean the related q entry, only one per qc completion */ @@ -637,6 +637,7 @@ static bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) struct ionic_txq_comp *comp = cq_info->cq_desc; struct ionic_queue *q = cq->bound_q; struct ionic_desc_info *desc_info; + u16 index; if (!color_match(comp->color, cq->done_color)) return false; @@ -646,11 +647,12 @@ static bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) */ do { desc_info = &q->info[q->tail_idx]; + index = q->tail_idx; q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); ionic_tx_clean(q, desc_info, cq_info, desc_info->cb_arg); desc_info->cb = NULL; desc_info->cb_arg = NULL; - } while (desc_info->index != le16_to_cpu(comp->comp_index)); + } while (index != le16_to_cpu(comp->comp_index)); return true; } From patchwork Mon Aug 31 23:35:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1354656 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=uidExLpp; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BgRRS48Qkz9sTS for ; Tue, 1 Sep 2020 09:36:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726326AbgHaXgT (ORCPT ); Mon, 31 Aug 2020 19:36:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725929AbgHaXgO (ORCPT ); Mon, 31 Aug 2020 19:36:14 -0400 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 028B5C061575 for ; Mon, 31 Aug 2020 16:36:13 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id c142so1588715pfb.7 for ; Mon, 31 Aug 2020 16:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DFYo8QIYjtFOqJXeDBuNjkJ3G9hImanULIk67aS8k5A=; b=uidExLppvfcyV8m/yiPsgP21OKNkM5EpHyMmyW/OpqjrcAjfJcLBWKTm/WPJl311/G SELJ1JcR5u0lyojnWJeoH92xOoYPuDdhW2TRqxwGR3bgrribYw9D+t/p0rmffnbVXzWd //1IOinjLcxcKJtXvD29oh2q3A5QKfDQPTgH6/cvnmBwGdRNnYKyjz2XsmzVHT164q1j G2KnkwYvuh/oFpRFcI9JXjOrl3V5pcagugNKSYSr3xW8DkCU2mGQtbM68JZFHcHthoG8 VIm+4qjMERy87sW3IW0tiM0XeP+xekYfNcg6mVJPrVl8sYt+0DmKCzX6VPSmzTOLzlZ6 UnKw== 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; bh=DFYo8QIYjtFOqJXeDBuNjkJ3G9hImanULIk67aS8k5A=; b=py9IFp550IpcaDkTXEoGEkx+iRg+44utlcrJ/4Du5iLhwGbthuIeHXjUvrr636qH7V 3KOJk8oOCXr/i+0oZxXOkEBUiALL8xfPZnXuHOLJlBmRrvuYMNfemGMIGnQjDNR5V3xS gchoNawSHnj1woxVnUtualTEvGQb9Qd5csKx1UOzb7WQS134NXXt+16Yx/vW48JiHkfD qrFslpbjSab2rfeU2vbAksHqZNOw8p0gQrRrsHjKTV9W1X4PvARgwMQ98/mmdKOc3sFg nU5YZjg4cJwrO0S5kK4yLwoz13kCU5zoTf5mb6wpOclu8lOXpuuWIO+oqF2Aq9dfHt4b TC7A== X-Gm-Message-State: AOAM532MvlbdtOgTi6O1g64eDUDELUbTBsq+vcd/sEm4e+m0SjSazNW4 +SvjSiYBNTHWlGg7oFDZbF/bXL8lMLS+tg== X-Google-Smtp-Source: ABdhPJzvnyQagwRK4bjJL8rFlOrp6SNj7xqWTcbhRZ/rZbTus/6e92Z7VJlEY5ZBLm6XaTfUdV4FWA== X-Received: by 2002:a63:ca4e:: with SMTP id o14mr3182799pgi.213.1598916972958; Mon, 31 Aug 2020 16:36:12 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id 65sm9082651pfx.104.2020.08.31.16.36.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Aug 2020 16:36:11 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson , Neel Patel Subject: [PATCH net-next 5/5] ionic: clean adminq service routine Date: Mon, 31 Aug 2020 16:35:58 -0700 Message-Id: <20200831233558.71417-6-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200831233558.71417-1-snelson@pensando.io> References: <20200831233558.71417-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The only thing calling ionic_napi any more is the adminq processing, so combine and simplify. Signed-off-by: Neel Patel Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic.h | 3 -- .../net/ethernet/pensando/ionic/ionic_lif.c | 44 +++++++++++-------- .../net/ethernet/pensando/ionic/ionic_main.c | 26 ----------- 3 files changed, 25 insertions(+), 48 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic.h b/drivers/net/ethernet/pensando/ionic/ionic.h index f699ed19eb4f..084a924431d5 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic.h +++ b/drivers/net/ethernet/pensando/ionic/ionic.h @@ -64,9 +64,6 @@ struct ionic_admin_ctx { union ionic_adminq_comp comp; }; -int ionic_napi(struct napi_struct *napi, int budget, ionic_cq_cb cb, - ionic_cq_done_cb done_cb, void *done_arg); - int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx); int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_wait); int ionic_set_dma_mask(struct ionic *ionic); diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index eeaa73650986..ee683cb142a8 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -800,21 +800,6 @@ static bool ionic_notifyq_service(struct ionic_cq *cq, return true; } -static int ionic_notifyq_clean(struct ionic_lif *lif, int budget) -{ - struct ionic_dev *idev = &lif->ionic->idev; - struct ionic_cq *cq = &lif->notifyqcq->cq; - u32 work_done; - - work_done = ionic_cq_service(cq, budget, ionic_notifyq_service, - NULL, NULL); - if (work_done) - ionic_intr_credits(idev->intr_ctrl, cq->bound_intr->index, - work_done, IONIC_INTR_CRED_RESET_COALESCE); - - return work_done; -} - static bool ionic_adminq_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) { @@ -830,15 +815,36 @@ static bool ionic_adminq_service(struct ionic_cq *cq, static int ionic_adminq_napi(struct napi_struct *napi, int budget) { + struct ionic_intr_info *intr = napi_to_cq(napi)->bound_intr; struct ionic_lif *lif = napi_to_cq(napi)->lif; + struct ionic_dev *idev = &lif->ionic->idev; + unsigned int flags = 0; int n_work = 0; int a_work = 0; + int work_done; + + if (lif->notifyqcq && lif->notifyqcq->flags & IONIC_QCQ_F_INITED) + n_work = ionic_cq_service(&lif->notifyqcq->cq, budget, + ionic_notifyq_service, NULL, NULL); - if (likely(lif->notifyqcq && lif->notifyqcq->flags & IONIC_QCQ_F_INITED)) - n_work = ionic_notifyq_clean(lif, budget); - a_work = ionic_napi(napi, budget, ionic_adminq_service, NULL, NULL); + if (lif->adminqcq && lif->adminqcq->flags & IONIC_QCQ_F_INITED) + a_work = ionic_cq_service(&lif->adminqcq->cq, budget, + ionic_adminq_service, NULL, NULL); + + work_done = max(n_work, a_work); + if (work_done < budget && napi_complete_done(napi, work_done)) { + flags |= IONIC_INTR_CRED_UNMASK; + DEBUG_STATS_INTR_REARM(intr); + } - return max(n_work, a_work); + if (work_done || flags) { + flags |= IONIC_INTR_CRED_RESET_COALESCE; + ionic_intr_credits(idev->intr_ctrl, + intr->index, + n_work + a_work, flags); + } + + return work_done; } void ionic_get_stats64(struct net_device *netdev, diff --git a/drivers/net/ethernet/pensando/ionic/ionic_main.c b/drivers/net/ethernet/pensando/ionic/ionic_main.c index 2b72a51be1d0..cfb90bf605fe 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_main.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_main.c @@ -305,32 +305,6 @@ int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) return ionic_adminq_check_err(lif, ctx, (remaining == 0)); } -int ionic_napi(struct napi_struct *napi, int budget, ionic_cq_cb cb, - ionic_cq_done_cb done_cb, void *done_arg) -{ - struct ionic_qcq *qcq = napi_to_qcq(napi); - struct ionic_cq *cq = &qcq->cq; - u32 work_done, flags = 0; - - work_done = ionic_cq_service(cq, budget, cb, done_cb, done_arg); - - if (work_done < budget && napi_complete_done(napi, work_done)) { - flags |= IONIC_INTR_CRED_UNMASK; - DEBUG_STATS_INTR_REARM(cq->bound_intr); - } - - if (work_done || flags) { - flags |= IONIC_INTR_CRED_RESET_COALESCE; - ionic_intr_credits(cq->lif->ionic->idev.intr_ctrl, - cq->bound_intr->index, - work_done, flags); - } - - DEBUG_STATS_NAPI_POLL(qcq, work_done); - - return work_done; -} - static void ionic_dev_cmd_clean(struct ionic *ionic) { union ionic_dev_cmd_regs *regs = ionic->idev.dev_cmd_regs;