All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] xen-netback: add the scenario which now beyond the range time_after_eq().
@ 2013-10-16 17:22 Jason Luan
  2013-10-17  8:26 ` Jan Beulich
  2013-10-17  8:26 ` [Xen-devel] " Jan Beulich
  0 siblings, 2 replies; 59+ messages in thread
From: Jason Luan @ 2013-10-16 17:22 UTC (permalink / raw)
  To: xen-devel, netdev
  Cc: annie.li, wei.liu2, ian.campbell, Jason Luan, david.vrabel

time_after_eq() only works if the delta is < MAX_ULONG/2.

If netfront sends at a very low rate, the time between subsequent calls
to tx_credit_exceeded() may exceed MAX_ULONG/2 and the test for
timer_after_eq() will be incorrect.  Credit will not be replenished and
the guest may become unable to send (e.g., if prior to the long gap, all
credit was exhausted).

We should add the scenario which now beyond next_credit+MAX_UNLONG/2. Because
the fact now must be not before than expire, time_before(now, expire) == true
will verify the scenario.
    time_after_eq(now, next_credit) || time_before (now, expire)
    ==
    !time_in_range_open(now, expire, next_credit)

Signed-off-by: Jason Luan <jianhai.luan@oracle.com>
---
 drivers/net/xen-netback/netback.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index f3e591c..31eedaf 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -1194,8 +1194,11 @@ static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
 	if (timer_pending(&vif->credit_timeout))
 		return true;
 
-	/* Passed the point where we can replenish credit? */
-	if (time_after_eq(now, next_credit)) {
+	/* Credit should be replenished when now does not fall into the
+	 * range from expires to next_credit, and time_in_range_open()
+	 * is used to verify whether this case happens.
+	 */
+	if (!time_in_range_open(now, vif->credit_timeout.expires, next_credit)) {
 		vif->credit_timeout.expires = now;
 		tx_add_credit(vif);
 	}
-- 
1.7.6.5

^ permalink raw reply related	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2013-10-24 11:35 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-16 17:22 [PATCH net] xen-netback: add the scenario which now beyond the range time_after_eq() Jason Luan
2013-10-17  8:26 ` Jan Beulich
2013-10-17  8:26 ` [Xen-devel] " Jan Beulich
2013-10-17  9:02   ` jianhai luan
2013-10-17  9:04     ` jianhai luan
2013-10-17  9:04     ` [Xen-devel] " jianhai luan
2013-10-17  9:15     ` David Vrabel
2013-10-17 10:19       ` jianhai luan
2013-10-17 10:19       ` [Xen-devel] " jianhai luan
2013-10-17 10:31         ` David Vrabel
2013-10-17 10:31         ` [Xen-devel] " David Vrabel
2013-10-17 13:59           ` jianhai luan
2013-10-17 14:06             ` Wei Liu
2013-10-17 14:06             ` [Xen-devel] " Wei Liu
2013-10-17 15:23               ` jianhai luan
2013-10-17 15:23               ` [Xen-devel] " jianhai luan
2013-10-17 15:25                 ` David Vrabel
2013-10-17 15:41                   ` jianhai luan
2013-10-18  6:48                     ` annie li
2013-10-18  6:48                     ` [Xen-devel] " annie li
2013-10-17 15:41                   ` jianhai luan
2013-10-17 15:25                 ` David Vrabel
2013-10-17 13:59           ` jianhai luan
2013-10-17  9:15     ` David Vrabel
2013-10-17  9:26     ` [Xen-devel] " Jan Beulich
2013-10-17  9:59       ` jianhai luan
2013-10-17  9:59       ` jianhai luan
2013-10-17 16:38       ` [Xen-devel] " annie li
2013-10-17 16:41         ` Wei Liu
2013-10-17 16:41         ` [Xen-devel] " Wei Liu
2013-10-18  1:59           ` annie li
2013-10-18  1:59           ` [Xen-devel] " annie li
2013-10-18  7:43         ` Jan Beulich
2013-10-18  7:43         ` [Xen-devel] " Jan Beulich
2013-10-18  8:14           ` annie li
2013-10-18  8:14           ` [Xen-devel] " annie li
2013-10-18  8:26             ` Jan Beulich
2013-10-18  8:40               ` David Laight
2013-10-18  8:40               ` [Xen-devel] " David Laight
2013-10-18 11:24                 ` Wei Liu
2013-10-23  8:02                   ` jianhai luan
2013-10-23 16:07                     ` Jan Beulich
2013-10-24 10:04                       ` David Laight
2013-10-24 10:04                       ` David Laight
2013-10-24 11:34                       ` [Xen-devel] " jianhai luan
2013-10-24 11:34                       ` jianhai luan
2013-10-23 16:07                     ` Jan Beulich
2013-10-23  8:02                   ` jianhai luan
2013-10-18 11:24                 ` Wei Liu
2013-10-18  8:55               ` [Xen-devel] " annie li
2013-10-18  8:55               ` annie li
2013-10-18  8:26             ` Jan Beulich
2013-10-17 16:38       ` annie li
2013-10-17  9:26     ` Jan Beulich
2013-10-17  9:02   ` jianhai luan
2013-10-17 16:21   ` annie li
2013-10-17 16:21   ` [Xen-devel] " annie li
2013-10-18  7:41     ` Jan Beulich
2013-10-18  7:41     ` Jan Beulich

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.