All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hayes Wang <hayeswang@realtek.com>
To: <netdev@vger.kernel.org>
Cc: <nic_swsd@realtek.com>, <linux-kernel@vger.kernel.org>,
	<linux-usb@vger.kernel.org>
Subject: [PATCH net-next v3 1/2] r8152: add RTL8152_EARLY_AGG_TIMEOUT_SUPER
Date: Thu, 13 Mar 2014 20:05:41 +0800	[thread overview]
Message-ID: <1394712342-15778-2-Taiwan-albertk@realtek.com> (raw)
In-Reply-To: <1394712342-15778-1-Taiwan-albertk@realtek.com>

For slow CPU, the frequent bulk transfer would cause poor throughput.
One solution is to increase the timeout of the aggregation. It let
the hw could complete the bulk transfer later and fill more packets
into the buffer. Besides, it could reduce the frequency of the bulk
transfer efficiently and improve the performance.

However, the optimization value of the timeout depends on the
capability of the hardware, especially the CPU. For example, according
to the experiment, the timeout 164 us is better than the default
value for the chromebook with the ARM CPU.

Now add RTL8152_EARLY_AGG_TIMEOUT_SUPER to let someone could choose
desired timeout value if he wants to get the best performance.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
 drivers/net/usb/Kconfig | 12 ++++++++++++
 drivers/net/usb/r8152.c |  6 ++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/net/usb/Kconfig b/drivers/net/usb/Kconfig
index 7e7269f..a8639b8 100644
--- a/drivers/net/usb/Kconfig
+++ b/drivers/net/usb/Kconfig
@@ -102,6 +102,18 @@ config USB_RTL8152
 	  To compile this driver as a module, choose M here: the
 	  module will be called r8152.
 
+	menu "Aggregation Settings"
+		depends on USB_RTL8152
+
+	config RTL8152_EARLY_AGG_TIMEOUT_SUPER
+		int "rx early agg timeout for super speed (unit: us)"
+		default 85
+		help
+		  This is the rx early agg timeout for USB super speed.
+		  The vaild value is 1 ~ 525 us.
+
+	endmenu
+
 config USB_USBNET
 	tristate "Multi-purpose USB Networking Framework"
 	select MII
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index aa1d5b2..756c0a6 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -316,7 +316,9 @@
 #define PCUT_STATUS		0x0001
 
 /* USB_RX_EARLY_AGG */
-#define EARLY_AGG_SUPPER	0x0e832981
+#define EARLY_AGG_SUPER	((((rx_buf_sz - 1522) / 4) << 16) | \
+	(u32)(CONFIG_RTL8152_EARLY_AGG_TIMEOUT_SUPER <= 0 ? 85 * 125 : \
+	min(CONFIG_RTL8152_EARLY_AGG_TIMEOUT_SUPER * 125, 0xffff)))
 #define EARLY_AGG_HIGH		0x0e837a12
 #define EARLY_AGG_SLOW		0x0e83ffff
 
@@ -1978,7 +1980,7 @@ static void r8153_set_rx_agg(struct r8152 *tp)
 			ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH,
 					RX_THR_SUPPER);
 			ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_EARLY_AGG,
-					EARLY_AGG_SUPPER);
+					EARLY_AGG_SUPER);
 		} else {
 			ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH,
 					RX_THR_HIGH);
-- 
1.8.4.2


  reply	other threads:[~2014-03-13 12:06 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-04 12:00 [PATCH net-next 00/12] r8152: new features Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 01/12] r8152: deal with the empty line and space Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 02/12] r8152: replace tp->netdev with netdev Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 03/12] r8152: remove rtl8152_get_stats Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 04/12] r8152: replace spin_lock_irqsave and spin_unlock_irqrestore Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 05/12] r8152: check tx agg list before spin lock Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 06/12] r8152: up the priority of the transmission Hayes Wang
2014-03-04 12:00 ` [PATCH net-next 07/12] r8152: support rx checksum Hayes Wang
2014-03-04 21:32   ` David Miller
2014-03-04 12:01 ` [PATCH net-next 08/12] r8152: support TSO Hayes Wang
2014-03-04 12:11   ` David Laight
2014-03-04 13:11     ` hayeswang
2014-03-04 14:35       ` David Laight
2014-03-04 14:35         ` David Laight
2014-03-04 15:02         ` Eric Dumazet
2014-03-04 15:14           ` David Laight
2014-03-04 15:14             ` David Laight
2014-03-04 16:11   ` Eric Dumazet
2014-03-04 16:52   ` Eric Dumazet
2014-03-04 12:01 ` [PATCH net-next 09/12] r8152: support IPv6 Hayes Wang
2014-03-04 16:58   ` Eric Dumazet
2014-03-04 12:01 ` [PATCH net-next 10/12] r8152: reduce the numbers of the bulks Hayes Wang
2014-03-04 12:01 ` [PATCH net-next 11/12] r8152: add additional parameter for non x86 platform Hayes Wang
2014-03-04 12:01 ` [PATCH net-next 12/12] r8152: modify the tx timeout funcfion Hayes Wang
2014-03-25 20:12   ` Grant Grundler
2014-03-25 20:12     ` Grant Grundler
2014-03-26  9:54     ` hayeswang
2014-03-05  6:49 ` [PATCH net-next v2 00/13] r8152: new features Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 01/13] r8152: deal with the empty line and space Hayes Wang
2014-03-05  6:49     ` Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 02/13] r8152: replace tp->netdev with netdev Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 03/13] r8152: remove rtl8152_get_stats Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 04/13] r8152: replace spin_lock_irqsave and spin_unlock_irqrestore Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 05/13] r8152: check tx agg list before spin lock Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 06/13] r8152: up the priority of the transmission Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 07/13] r8152: calculate the dropped packets for rx Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 08/13] r8152: support rx checksum Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 09/13] r8152: support TSO Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 10/13] r8152: support IPv6 Hayes Wang
2014-03-09 19:47     ` Ben Hutchings
2014-03-09 19:47       ` Ben Hutchings
2014-03-09 22:56       ` David Miller
2014-03-09 22:56         ` David Miller
2014-03-05  6:49   ` [PATCH net-next v2 11/13] r8152: reduce the numbers of the bulks Hayes Wang
2014-03-05  6:49   ` [PATCH net-next v2 12/13] r8152: add additional parameter for non x86 platform Hayes Wang
2014-03-06  5:05     ` David Miller
2014-03-05  6:49   ` [PATCH net-next v2 13/13] r8152: modify the tx timeout funcfion Hayes Wang
2014-03-06  7:07 ` [PATCH net-next 0/3] r8152: cleanups Hayes Wang
2014-03-06  7:07   ` Hayes Wang
2014-03-06  7:07   ` [PATCH net-next 1/3] r8152: deal with the empty line and space Hayes Wang
2014-03-06  7:07   ` [PATCH net-next 2/3] r8152: replace tp->netdev with netdev Hayes Wang
2014-03-06  7:07   ` [PATCH net-next 3/3] r8152: remove rtl8152_get_stats Hayes Wang
2014-03-06 18:17   ` [PATCH net-next 0/3] r8152: cleanups David Miller
2014-03-07  3:04 ` [PATCH net-next 0/7] r8152: tx/rx improvement Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 1/7] r8152: replace spin_lock_irqsave and spin_unlock_irqrestore Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 2/7] r8152: check tx agg list before spin lock Hayes Wang
2014-03-07  3:04     ` Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 3/7] r8152: up the priority of the transmission Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 4/7] r8152: calculate the dropped packets for rx Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 5/7] r8152: support rx checksum Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 6/7] r8152: support TSO Hayes Wang
2014-03-07  3:04   ` [PATCH net-next 7/7] r8152: support IPv6 Hayes Wang
2014-03-07 21:27   ` [PATCH net-next 0/7] r8152: tx/rx improvement David Miller
2014-03-10  3:45     ` hayeswang
2014-03-10  6:22 ` [PATCH net-next] r8152: add skb_cow_head Hayes Wang
2014-03-10  6:22   ` Hayes Wang
2014-03-10 20:31   ` David Miller
2014-03-11  2:20 ` [PATCH net-next v2] " Hayes Wang
2014-03-11  2:20   ` Hayes Wang
2014-03-11  2:25   ` David Miller
2014-03-12 12:39 ` [PATCH net-next 0/2] parameter modification Hayes Wang
2014-03-12 12:39   ` [PATCH net-next 1/2] r8152: add CONFIG_RTL8152_EARLY_AGG_SUPER Hayes Wang
2014-03-12 13:40     ` Bjørn Mork
2014-03-12 12:39   ` [PATCH net-next 2/2] r8152: reduce the numbers of the bulks Hayes Wang
2014-03-13  3:34 ` [PATCH net-next v2 0/2] parameter modification Hayes Wang
2014-03-13  3:34   ` [PATCH net-next v2 1/2] r8152: add RTL8152_EARLY_AGG_TIMEOUT_SUPER Hayes Wang
2014-03-13  9:28     ` David Laight
2014-03-13  3:34   ` [PATCH net-next v2 2/2] r8152: reduce the numbers of the bulks Hayes Wang
2014-03-13 12:05 ` [PATCH net-next v3 0/2] parameter modification Hayes Wang
2014-03-13 12:05   ` Hayes Wang [this message]
2014-03-13 13:12     ` [PATCH net-next v3 1/2] r8152: add RTL8152_EARLY_AGG_TIMEOUT_SUPER David Laight
2014-03-13 17:22       ` David Miller
2014-03-14  2:37         ` [PATCH net-next v3 1/2] r8152: addRTL8152_EARLY_AGG_TIMEOUT_SUPER hayeswang
2014-03-14  4:07           ` David Miller
2014-03-14  7:24             ` [PATCH net-next v3 1/2] r8152:addRTL8152_EARLY_AGG_TIMEOUT_SUPER hayeswang
2014-03-14  7:24               ` hayeswang
2014-03-14 18:43               ` David Miller
2014-03-17  6:01                 ` [PATCH net-next v3 1/2]r8152:addRTL8152_EARLY_AGG_TIMEOUT_SUPER hayeswang
2014-03-14 23:42               ` [PATCH net-next v3 1/2] r8152:addRTL8152_EARLY_AGG_TIMEOUT_SUPER Francois Romieu
2014-03-17  6:03                 ` hayeswang
2014-03-13 12:05   ` [PATCH net-next v3 2/2] r8152: reduce the numbers of the bulks Hayes Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1394712342-15778-2-Taiwan-albertk@realtek.com \
    --to=hayeswang@realtek.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nic_swsd@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.