From patchwork Wed Jan 25 14:13:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 719688 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3v7n8F2CXJz9s2s for ; Thu, 26 Jan 2017 01:13:17 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qZRBka04"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751978AbdAYONP (ORCPT ); Wed, 25 Jan 2017 09:13:15 -0500 Received: from mail-pg0-f68.google.com ([74.125.83.68]:33840 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751866AbdAYONN (ORCPT ); Wed, 25 Jan 2017 09:13:13 -0500 Received: by mail-pg0-f68.google.com with SMTP id 3so2070780pgj.1; Wed, 25 Jan 2017 06:13:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version:content-transfer-encoding; bh=KoZUrNcMwraSwzygudI2ZX9ugmIta4tTzprUeDERUk0=; b=qZRBka04qxs1HiXPuzvdwjnMp/lVivVtqNTr70xQWaADHurb8zjnyOmproUHzODJM5 1s6NiTDhHYYsDuojjb0DNMQBSFtiwTQsZ1C0hLnIUytwY6LMA2oy764nUShdw9lg4emy LPJX8Yy2Y5o01ym9D5hES4jHVyBo1rhm1qtjVhG/JNyEtd6QIQG+yb3XlBwR49zu1HL6 rZDmVd8DCDEZa3AZlIauOuZCkHHA35A4zri4xQ9pUW99iQllEngeQwKIlt+zPtcpR06Y p6mg39B/8i3fBr5VoYjcqK6Zh1y8Ode36a9YN13kT6MzF8k9OCXaxSyJBlU3dfjG4vMk dNnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version:content-transfer-encoding; bh=KoZUrNcMwraSwzygudI2ZX9ugmIta4tTzprUeDERUk0=; b=ZYAL3bkI3pH4NSdtZC1Ko3FnekWh02EHJdZMx2FLigtkWqxf4mTiKqF3d/w6z7t+5h ebp9MFJMdT1dCuK6yg27MJo1xVeNDcRN0bZT+FW+AQ/T6iMBDi4Dj/EpjxkNVFVC6cME NleZJttmQjjAsDQRDM9GMaUUvEbBxDkY29JI0pyPXjQLX2PnPaPcZi89i37fu8sh3cRx zup3Q8dgTXaFr1I7ntqYfm3CsL3xjztf3ooQKDyF8J+Me+9eM30IelUJLsjkAV2GUpDf LRk3lRXG9hrRoin6JYHv8jLTi5wTHQgOYbIuh07lBqvPDIxB+J3Fku47CPTxUoIYkeg2 JARg== X-Gm-Message-State: AIkVDXK0eqBOJdPF0P2Sc35Y0v5GomisfASna1tM32ENvRXgN9Byi9JbLOLvq+n+iiQw+Q== X-Received: by 10.84.131.2 with SMTP id 2mr4071736pld.45.1485353592979; Wed, 25 Jan 2017 06:13:12 -0800 (PST) Received: from [192.168.86.171] (c-73-231-122-98.hsd1.ca.comcast.net. [73.231.122.98]) by smtp.googlemail.com with ESMTPSA id m21sm1689284pgh.4.2017.01.25.06.13.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2017 06:13:12 -0800 (PST) Message-ID: <1485353591.5145.8.camel@edumazet-glaptop3.roam.corp.google.com> Subject: Re: NAPI on USB network drivers From: Eric Dumazet To: Hayes Wang Cc: Oliver Neukum , "netdev@vger.kernel.org" , "linux-usb@vger.kernel.org" Date: Wed, 25 Jan 2017 06:13:11 -0800 In-Reply-To: <0835B3720019904CB8F7AA43166CEEB201A134A7@RTITMBSV06.realtek.com.tw> References: <1485336881.16604.2.camel@suse.com> <0835B3720019904CB8F7AA43166CEEB201A134A7@RTITMBSV06.realtek.com.tw> X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Wed, 2017-01-25 at 09:39 +0000, Hayes Wang wrote: > Oliver Neukum [mailto:oneukum@suse.com] > > Sent: Wednesday, January 25, 2017 5:35 PM > [...] > > looking at r8152 I noticed that it uses NAPI. I never considered > > this for the generic USB networking code as you cannot disable > > interrupts for USB. Is it still worth it? What are the benefits? > > You could use napi_gro_receive() and it influences the performance. You also could use napi_complete_done() instead of napi_complete(), as it allows users to tune the performance vs latency for GRO. Looking at this driver, I do not see any limitation on the number of skbs that can be pushed into tp->rx_queue. I wonder if this queue can end up consuming all memory of a host under stress. diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index e1466b4d2b6c727148a884672bbd9593bf04b3ac..221df4a931b5c1073f1922d0fa0bbff158c73b7d 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1840,7 +1840,10 @@ static int rx_bottom(struct r8152 *tp, int budget) stats->rx_packets++; stats->rx_bytes += pkt_len; } else { - __skb_queue_tail(&tp->rx_queue, skb); + if (unlikely(skb_queue_len(&tp->rx_queue) >= 1000)) + kfree_skb(skb); + else + __skb_queue_tail(&tp->rx_queue, skb); } find_next_rx: