aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/xen-netback/netback.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
-rw-r--r--drivers/net/xen-netback/netback.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index 828fdab4f1a4..919b6509455c 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -1380,9 +1380,8 @@ static int checksum_setup(struct xenvif *vif, struct sk_buff *skb)
1380 1380
1381static bool tx_credit_exceeded(struct xenvif *vif, unsigned size) 1381static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
1382{ 1382{
1383 unsigned long now = jiffies; 1383 u64 now = get_jiffies_64();
1384 unsigned long next_credit = 1384 u64 next_credit = vif->credit_window_start +
1385 vif->credit_timeout.expires +
1386 msecs_to_jiffies(vif->credit_usec / 1000); 1385 msecs_to_jiffies(vif->credit_usec / 1000);
1387 1386
1388 /* Timer could already be pending in rare cases. */ 1387 /* Timer could already be pending in rare cases. */
@@ -1390,8 +1389,8 @@ static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
1390 return true; 1389 return true;
1391 1390
1392 /* Passed the point where we can replenish credit? */ 1391 /* Passed the point where we can replenish credit? */
1393 if (time_after_eq(now, next_credit)) { 1392 if (time_after_eq64(now, next_credit)) {
1394 vif->credit_timeout.expires = now; 1393 vif->credit_window_start = now;
1395 tx_add_credit(vif); 1394 tx_add_credit(vif);
1396 } 1395 }
1397 1396
@@ -1403,6 +1402,7 @@ static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
1403 tx_credit_callback; 1402 tx_credit_callback;
1404 mod_timer(&vif->credit_timeout, 1403 mod_timer(&vif->credit_timeout,
1405 next_credit); 1404 next_credit);
1405 vif->credit_window_start = next_credit;
1406 1406
1407 return true; 1407 return true;
1408 } 1408 }