lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 13 Apr 2015 23:24:58 +0200 From: Arnd Bergmann <arnd@...db.de> To: Thomas Gleixner <tglx@...utronix.de> Cc: LKML <linux-kernel@...r.kernel.org>, Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...nel.org>, "David S. Miller" <davem@...emloft.net>, dingtianhong <dingtianhong@...wei.com>, Zhangfei Gao <zhangfei.gao@...aro.org>, Dan Carpenter <dan.carpenter@...cle.com>, netdev@...r.kernel.org Subject: Re: [patch 4/5] net: hip04: Make tx coalesce timer actually work On Monday 13 April 2015 21:02:23 Thomas Gleixner wrote: > The code sets the expiry value of the timer to a relative value and > starts it with hrtimer_start_expires. That's fine, but that only works > once. The timer is started in relative mode, so the expiry value gets > overwritten with the absolut expiry time (now + expiry). > > So once the timer expired, a new call to hrtimer_start_expires results > in an immidiately expired timer, because the expiry value is > already in the past. > > Use the proper mechanisms to (re)start the timer in the intended way. > > Signed-off-by: Thomas Gleixner <tglx@...utronix.de> > Cc: "David S. Miller" <davem@...emloft.net> > Cc: dingtianhong <dingtianhong@...wei.com> > Cc: Arnd Bergmann <arnd@...db.de> > Cc: Zhangfei Gao <zhangfei.gao@...aro.org> > Cc: Dan Carpenter <dan.carpenter@...cle.com> > Cc: netdev@...r.kernel.org Thanks a lot for the fix. The mistake was clearly mine, as I had sent a patch to introduce the tx coalesce timer without access to hardware or a way to test that what I did was correct. There are other known problems in the version of the driver that got merged, and I believe that someone is now looking at them. What I think we really want here is a way for user space to configure both the minimum and maximum coalesce timer separately rather than assuming half the time is what we want. Arnd > @@ -413,6 +413,15 @@ out: > return count; > } > > +static void hip04_start_tx_timer(struct hip04_priv *priv) > +{ > + ktime_t t; > + > + /* allow timer to fire after half the time at the earliest */ > + t = ktime_set(0, priv->tx_coalesce_usecs * NSEC_PER_USEC / 2); > + hrtimer_start(&priv->tx_coalesce_timer, t, HRTIMER_MODE_REL); > +} Question: this looks to me like it sets both the minimum and maximum time to priv->tx_coalesce_usecs/2, when the intention was to set the minimum to priv->tx_coalesce_usecs/2 and the maximum to priv->tx_coalesce_usecs. Am I missing something subtle here, or did you just misread my original intention from the botched code? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists