Thread (1 message) 1 message, 1 author, 2016-09-07

Re: [Intel-wired-lan] [PATCH 249/249] net:ethernet:intel:igb_main.c: Add Throttling disable option in order to decrease latency usually required by RT applications.

From: Duyck, Alexander H <hidden>
Date: 2016-09-07 14:52:50
Also in: intel-wired-lan, lkml

On Tue, 2016-09-06 at 14:46 +0000, Amir Yihie wrote:
quoted hunk
From e433f5bedd49a65b7337d025f3f204f0f21ad5e5 Mon Sep 17 00:00:00
2001
From: amiry <redacted>
Date: Tue, 6 Sep 2016 14:58:38 +0300
Subject: [PATCH 249/249] net:ethernet:intel:igb_main.c: Add
Throttling disable
 option in order to decrease latency usually required by RT
applications.

Add an option to Disable Throttling algorithm , which will result
with minimum latency on received frames .
mainly targets for RT application that look for low larceny and less
cares about throughput .
How to use :
On insmod , add parameter : InterruptThrottleRate=0

This patch is currently against a linux 4.1.27-rt31 kernel.

Signed-off-by: Amir Yihie <redacted>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c
b/drivers/net/ethernet/intel/igb/igb_main.c
index 7dfbcde..9480850 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -251,6 +251,14 @@ static int debug = -1;
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 
+/* Interrupt Throttle Rate (interrupts/sec)
+ *
+ * Valid Range: 0=off, 3=dynamic conservative
+ */
+static int InterruptThrottleRate = 3;
+module_param(InterruptThrottleRate, int, 0);
+MODULE_PARM_DESC(InterruptThrottleRate, "InterruptThrottleRate
(0=off, 3=dynamic conservative)");
+
This is creating redundant functionality.  The same can be done via the
ethtool command "ethtool -C <iface> rx-usecs 0".  Is there some reason
why you couldn't use ethtool?
quoted hunk
 struct igb_reg_info {
        u32 ofs;
        char *name;
@@ -2966,6 +2974,9 @@ static int igb_sw_init(struct igb_adapter
*adapter)
        adapter->rx_itr_setting = IGB_DEFAULT_ITR;
        adapter->tx_itr_setting = IGB_DEFAULT_ITR;
 
+       if (InterruptThrottleRate == 0)
+               adapter->rx_itr_setting = InterruptThrottleRate;
+
        /* set default work limits */
        adapter->tx_work_limit = IGB_DEFAULT_TX_WORK;
If you are going to use InterruptThrottleRate you might as well use it
fully instead of making it a boolean value with 0 having one meaning
and the default of 3 being another.

Thanks.

- Alex
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help