Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp600449yba; Wed, 24 Apr 2019 06:41:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqzdpzwxGqtDiECWyhcQRZF/Sccv0J1OsbvZk5nL118Gwx2sH33yb4oWjMekWUBr+8i0Uyc5 X-Received: by 2002:a62:205c:: with SMTP id g89mr32843576pfg.34.1556113287444; Wed, 24 Apr 2019 06:41:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556113287; cv=none; d=google.com; s=arc-20160816; b=o4C+GDzKh321GIn+FTz1MprvbQBgqWm4aOZ8U6fBrN8AKtSNjoZnSsuPAjskyKJ3Ei q3PwaM3PJ3svNkA2lSz1lRewzD5pNGmZUeLL3tKSPtuL55GazpSdMecQfN1BWjulbcdz 0fqQAI/kWfT50+mbW8OS/sz3PZuVF7QZGTSy8Tx1UbaI/ioBEoxHSQj7UindKE+fVXiN TsTQMwTQKJtH+pr5DkBtJWBXXcA5Her3du4cZJAmzFxWCQGYupy6qv2zktUpWpwbESly vyMgeuiAHkNmXCbFONX6x1ZFFtV4M+V9D/kZ+faexPv9BKGsT6ohkTTZ/M9QlTZ2oJQd KQHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=fnL+YmX/XbCiVsUWKe8Jx/Ih6xj+vx1CQQsBHSIi6EE=; b=z2chwN5V4fX0fsoRYdS062hUi1caUMA/3ud1D3htqkeVCZMaE0YE69Zdo5tiZyf7e/ VlWMX5Rr57RHGYlGQBNZUlwsBOcq7ngr1R9cpBPQvlXJtLA+Azny18sGYdiGxqLzZjXB xXDpmQ0D4zO0214e4wZj85Uzvb0IZld2HTzrYI5/fBb5f+IDg9oAG6onjeoTteVOzaN2 MoA4XulBfyWw2SNEaN/09OpNc6zYLa7N4M00xJwx+AKWdleEgIpO/D9hKQoIRKIRgb2y 3+iPNV/UyDrAws2kx0lDaO57PdRX82YzTVu8tlXsB76C9L0b6yGu7qRJfOhOtKx7PzuH 4jBw== 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 c67si3741358pfa.271.2019.04.24.06.41.11; Wed, 24 Apr 2019 06:41:27 -0700 (PDT) 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 S1729105AbfDXLHF (ORCPT + 99 others); Wed, 24 Apr 2019 07:07:05 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:37522 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728675AbfDXLG5 (ORCPT ); Wed, 24 Apr 2019 07:06:57 -0400 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 9D82660DA852F5F1A3AC; Wed, 24 Apr 2019 19:06:51 +0800 (CST) Received: from localhost.localdomain (10.67.212.132) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.439.0; Wed, 24 Apr 2019 19:06:41 +0800 From: Huazhong Tan To: CC: , , , , , , Yunsheng Lin , Peng Li , Huazhong Tan Subject: [PATCH V2 net-next 02/12] net: hns3: fix for TX clean num when cleaning TX BD Date: Wed, 24 Apr 2019 19:05:21 +0800 Message-ID: <1556103931-64031-3-git-send-email-tanhuazhong@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1556103931-64031-1-git-send-email-tanhuazhong@huawei.com> References: <1556103931-64031-1-git-send-email-tanhuazhong@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.212.132] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yunsheng Lin hns3_desc_unused() returns how many BD have been cleaned, but new buffer has not been attached to them. The register of HNS3_RING_RX_RING_FBDNUM_REG returns how many BD need allocating new buffer to or need to cleaned. So the remaining BD need to be clean is HNS3_RING_RX_RING_FBDNUM_REG - hns3_desc_unused(). Also, new buffer can not attach to the pending BD when the last BD is not handled, because memcpy has not been done on the first pending BD. This patch fixes by subtracting the pending BD num from unused_count after 'HNS3_RING_RX_RING_FBDNUM_REG - unused_count' is used to calculate the BD bum need to be clean. Fixes: e55970950556 ("net: hns3: Add handling of GRO Pkts not fully RX'ed in NAPI poll") Signed-off-by: Yunsheng Lin Signed-off-by: Peng Li Signed-off-by: Huazhong Tan --- drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 9fdc87e..6695b94 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -2874,7 +2874,7 @@ int hns3_clean_rx_ring( { #define RCB_NOF_ALLOC_RX_BUFF_ONCE 16 int recv_pkts, recv_bds, clean_count, err; - int unused_count = hns3_desc_unused(ring) - ring->pending_buf; + int unused_count = hns3_desc_unused(ring); struct sk_buff *skb = ring->skb; int num; @@ -2883,6 +2883,7 @@ int hns3_clean_rx_ring( recv_pkts = 0, recv_bds = 0, clean_count = 0; num -= unused_count; + unused_count -= ring->pending_buf; while (recv_pkts < budget && recv_bds < num) { /* Reuse or realloc buffers */ -- 2.7.4