Received: by 2002:a05:7412:f584:b0:e2:908c:2ebd with SMTP id eh4csp2251772rdb; Tue, 5 Sep 2023 21:20:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF57gSWGb89pU3eHxybRzca5IuljEzPJxbirZrXohIg8phbJq8Cs2Yi+m2HsLTiVMx6dhXl X-Received: by 2002:a17:906:8478:b0:9a1:fda6:2e27 with SMTP id hx24-20020a170906847800b009a1fda62e27mr1378659ejc.55.1693974015518; Tue, 05 Sep 2023 21:20:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693974015; cv=none; d=google.com; s=arc-20160816; b=TDf7w6Jr5drz+luaNPaOK2P/e7d+3YtfZ6UzI3MPy+nXGRpROurwumdku1o4Mzjc7J dYN4VUO7we7sfEqp0wkS1jh+986hhcP2knRyvcW0h9Pgs7QPHSeZoDQeq0y/F2Ynh44r OmrmqFdgHNNq1EqKA9rSKPabA7rfa2E9HyU/NPmQ/yHItH+Ex/RBFk0s0mkdCfsB/BJz spxPtShzrIKqs8ERBksmf8C+ORqmWF56+YS7ZNWebdxOv6rxlMehQTeQZ59a0snFTNsa Z6p2zWK8RkwfOXQ+iyAsW+Zi5iyP1DyX0WodgMsksFymjPgKDbToswsVI1p1vqG3LG5R KPDw== 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 :message-id:date:subject:cc:to:from:authenticated-by; bh=6e3ZfBKVT8B55SIVKfHy264ypf7psSarS0RSazK5xvs=; fh=asqeH3O/QnyRb7t/jKhooxi2j9EYs9s/QOPv512F3oU=; b=NU7GIKqugmISZbeVyIPKcVCdrZgCDL/xEHqFnlYk6zc6dBr+/iVXsSIvdPcENajK1g +3fmdvv/8PMQb2ICjjCSmSBu1yRHGZXH+aWXIKXx9fu+h+ixBz7N814Z/KzTR+Zc0Ao4 0XWW5RXpFrUcCPqsYhcsJpDJbWQm7MYLfEyce9IgwivFUB5dKwnTyLJ8mT6XVITMKoqC 82xNUIF6tZkJ7hFWLKTD44dKTMEuxtdTr5Q5XT8kk58sJGtHyq56drNMnxwnf8tvPUyn ucu8hKKUdRFk4csYzur74pkz9VrpM14+Cu3N6dtNKpO9aKzhZT7+32a283ATzWsTUk/m AFkw== 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:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e12-20020a170906374c00b0099ce23c3a71si8338486ejc.1041.2023.09.05.21.19.35; Tue, 05 Sep 2023 21:20:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234020AbjIFDMo (ORCPT + 99 others); Tue, 5 Sep 2023 23:12:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229767AbjIFDMm (ORCPT ); Tue, 5 Sep 2023 23:12:42 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E0DBB199; Tue, 5 Sep 2023 20:12:34 -0700 (PDT) Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.77 with qID 3863Bp3R2030400, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.81/5.90) with ESMTPS id 3863Bp3R2030400 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 6 Sep 2023 11:11:51 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Wed, 6 Sep 2023 11:12:13 +0800 Received: from fc38.localdomain (172.22.228.98) by RTEXMBS04.realtek.com.tw (172.21.6.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Wed, 6 Sep 2023 11:12:12 +0800 From: Hayes Wang To: , CC: , , , , Hayes Wang Subject: [PATCH net v2] r8152: avoid the driver drops a lot of packets Date: Wed, 6 Sep 2023 11:11:48 +0800 Message-ID: <20230906031148.16774-421-nic_swsd@realtek.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [172.22.228.98] X-ClientProxiedBy: RTEXH36506.realtek.com.tw (172.21.6.27) To RTEXMBS04.realtek.com.tw (172.21.6.97) X-KSE-ServerInfo: RTEXMBS04.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_PASS,T_SPF_HELO_TEMPERROR autolearn=ham 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 Stop submitting rx, if the driver queue more than 256 packets. If the hardware is more fast than the software, the driver would start queuing the packets. And, the driver starts dropping the packets, if it queues more than 1000 packets. Increase the weight of NAPI could improve the situation. However, the weight has been changed to 64, so we have to stop submitting rx when the driver queues too many packets. Then, the device may send the pause frame to slow down the receiving, when the FIFO of the device is full. Fixes: cf74eb5a5bc8 ("eth: r8152: try to use a normal budget") Signed-off-by: Hayes Wang --- v2: Add WARN_ON_ONCE() and debug message for the skb_queue_len(&tp->rx_queue). drivers/net/usb/r8152.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 332c853ca99b..4a62e420a7be 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -2484,10 +2484,6 @@ static int rx_bottom(struct r8152 *tp, int budget) unsigned int pkt_len, rx_frag_head_sz; struct sk_buff *skb; - /* limit the skb numbers for rx_queue */ - if (unlikely(skb_queue_len(&tp->rx_queue) >= 1000)) - break; - pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK; if (pkt_len < ETH_ZLEN) break; @@ -2556,9 +2552,14 @@ static int rx_bottom(struct r8152 *tp, int budget) } submit: - if (!ret) { + if (!ret && likely(skb_queue_len(&tp->rx_queue) < 256)) { ret = r8152_submit_rx(tp, agg, GFP_ATOMIC); } else { + WARN_ON_ONCE(skb_queue_len(&tp->rx_queue) >= 1000); + if (net_ratelimit()) + netif_dbg(tp, rx_err, tp->netdev, + "submit_rx=%d, rx_queue=%u\n", + ret, skb_queue_len(&tp->rx_queue)); urb->actual_length = 0; list_add_tail(&agg->list, next); } -- 2.41.0