Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp314248imu; Wed, 12 Dec 2018 17:36:52 -0800 (PST) X-Google-Smtp-Source: AFSGD/VGuqO3cFBwhw5uT6uMnLgeduSgQnhCVaSbezmf1T4iQFfb2HkscJrbW82N4AKdC5Bm6EtA X-Received: by 2002:a63:7a5b:: with SMTP id j27mr20280298pgn.112.1544665012797; Wed, 12 Dec 2018 17:36:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544665012; cv=none; d=google.com; s=arc-20160816; b=b/KoixJY33EX6SvcPHw0L4RE8OpIcrCL2J/OMKVnQgcwmqGjlM/79BEYwegK4FWaSA xV1je0DcSS3iwV6vsXOuAcf9qdSR0k5kllPGWbtqLal11HCB1SbKiZtQgveGdasKcSrA Q5kErcXk3iQcrwGaIOQiucaR06njZ38h0xIJPR6/PBD0af8e56ummPnOUaj/dIENIh35 49LtK9Exk0BVTTgMOrUW52RuROJBwK8DAcE9FbE7hgwvWsG148IReNFYlBvc1+vWsb1Y niLSGrOprClLIBfF+fKytMpU8vttZxMj+yO4ucew+PkW5bo/M0QhsMi12HUPBeepvZeP KmJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from; bh=mqrew9NM2YbVNtLEUQqP1m+QgCOjIiKZY/+emH0g0a4=; b=B3EHcXGOjy80ApVqZWwwGQfCK6DoALpMCOqRJ8S4B04yArlzrc6Ai562jVWjaIPvvV vrMxuTR0PrhcP2P/ZQQM5k7ssFxCYopHzH/F/cVtIjjUE8n8aWl9V1EMFuj9KGze8g0q EQRRLjG9unTtveCsOb1oJcUyfPnRwR5EiNoSnmrZW00qy6Lbxcfo5lGBJNMR3Y8/XieU zpDRAZKJknBCAom92qrFo+epq1Elst0+hVg3/daR2BMD046y+ckkRCnrdsGEYOC4MwJ3 EV5IA9svkj/yfiB17Eqrx7O0HACNsPb+U8PVEXDHZ+1m42i6woLo3VXRemjzd4VyliGa 2zKw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b14si348361pgj.20.2018.12.12.17.36.31; Wed, 12 Dec 2018 17:36:52 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726526AbeLMBeX (ORCPT + 99 others); Wed, 12 Dec 2018 20:34:23 -0500 Received: from szxga07-in.huawei.com ([45.249.212.35]:38785 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726372AbeLMBeW (ORCPT ); Wed, 12 Dec 2018 20:34:22 -0500 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id DB99FFA74D1E3; Thu, 13 Dec 2018 09:34:17 +0800 (CST) Received: from localhost.localdomain (10.175.34.53) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.408.0; Thu, 13 Dec 2018 09:34:11 +0800 From: Xue Chaojing To: CC: , , , , , , , , Subject: [PATCH 1/1] net-next/hinic:optmize rx refill buffer mechanism Date: Wed, 12 Dec 2018 17:40:23 +0000 Message-ID: <20181212174023.20416-1-xuechaojing@huawei.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.34.53] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is no need to schedule a different tasklet for refill, This patch remove it. Suggested-by: Neil Horman Signed-off-by: Xue Chaojing --- drivers/net/ethernet/huawei/hinic/hinic_rx.c | 23 +++++--------------- drivers/net/ethernet/huawei/hinic/hinic_rx.h | 2 -- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/drivers/net/ethernet/huawei/hinic/hinic_rx.c b/drivers/net/ethernet/huawei/hinic/hinic_rx.c index f86f2e693224..0098b206e7e9 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_rx.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_rx.c @@ -43,6 +43,7 @@ #define RX_IRQ_NO_LLI_TIMER 0 #define RX_IRQ_NO_CREDIT 0 #define RX_IRQ_NO_RESEND_TIMER 0 +#define HINIC_RX_BUFFER_WRITE 16 /** * hinic_rxq_clean_stats - Clean the statistics of specific queue @@ -229,7 +230,6 @@ static int rx_alloc_pkts(struct hinic_rxq *rxq) wmb(); /* write all the wqes before update PI */ hinic_rq_update(rxq->rq, prod_idx); - tasklet_schedule(&rxq->rx_task); } return i; @@ -258,17 +258,6 @@ static void free_all_rx_skbs(struct hinic_rxq *rxq) } } -/** - * rx_alloc_task - tasklet for queue allocation - * @data: rx queue - **/ -static void rx_alloc_task(unsigned long data) -{ - struct hinic_rxq *rxq = (struct hinic_rxq *)data; - - (void)rx_alloc_pkts(rxq); -} - /** * rx_recv_jumbo_pkt - Rx handler for jumbo pkt * @rxq: rx queue @@ -333,6 +322,7 @@ static int rxq_recv(struct hinic_rxq *rxq, int budget) struct hinic_qp *qp = container_of(rxq->rq, struct hinic_qp, rq); u64 pkt_len = 0, rx_bytes = 0; struct hinic_rq_wqe *rq_wqe; + unsigned int free_wqebbs; int num_wqes, pkts = 0; struct hinic_sge sge; struct sk_buff *skb; @@ -376,8 +366,9 @@ static int rxq_recv(struct hinic_rxq *rxq, int budget) rx_bytes += pkt_len; } - if (pkts) - tasklet_schedule(&rxq->rx_task); /* rx_alloc_pkts */ + free_wqebbs = hinic_get_rq_free_wqebbs(rxq->rq); + if (free_wqebbs > HINIC_RX_BUFFER_WRITE) + rx_alloc_pkts(rxq); u64_stats_update_begin(&rxq->rxq_stats.syncp); rxq->rxq_stats.pkts += pkts; @@ -494,8 +485,6 @@ int hinic_init_rxq(struct hinic_rxq *rxq, struct hinic_rq *rq, sprintf(rxq->irq_name, "hinic_rxq%d", qp->q_id); - tasklet_init(&rxq->rx_task, rx_alloc_task, (unsigned long)rxq); - pkts = rx_alloc_pkts(rxq); if (!pkts) { err = -ENOMEM; @@ -512,7 +501,6 @@ int hinic_init_rxq(struct hinic_rxq *rxq, struct hinic_rq *rq, err_req_rx_irq: err_rx_pkts: - tasklet_kill(&rxq->rx_task); free_all_rx_skbs(rxq); devm_kfree(&netdev->dev, rxq->irq_name); return err; @@ -528,7 +516,6 @@ void hinic_clean_rxq(struct hinic_rxq *rxq) rx_free_irq(rxq); - tasklet_kill(&rxq->rx_task); free_all_rx_skbs(rxq); devm_kfree(&netdev->dev, rxq->irq_name); } diff --git a/drivers/net/ethernet/huawei/hinic/hinic_rx.h b/drivers/net/ethernet/huawei/hinic/hinic_rx.h index ab3fabab91b2..f8ed3fa6c8ee 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_rx.h +++ b/drivers/net/ethernet/huawei/hinic/hinic_rx.h @@ -42,8 +42,6 @@ struct hinic_rxq { char *irq_name; - struct tasklet_struct rx_task; - struct napi_struct napi; }; -- 2.17.1