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.cb/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