aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/xen-netback/interface.c
diff options
context:
space:
mode:
authorZoltan Kiss <zoltan.kiss@citrix.com>2014-03-06 16:48:31 -0500
committerDavid S. Miller <davem@davemloft.net>2014-03-07 15:57:21 -0500
commite9275f5e2df1b2098a8cc405d87b88b9affd73e6 (patch)
tree05898b0d8dab616b2936783964cae4f77b06af84 /drivers/net/xen-netback/interface.c
parent093507885ae5dc0288af07fbb922d2f85b3a88a6 (diff)
xen-netback: Aggregate TX unmap operations
Unmapping causes TLB flushing, therefore we should make it in the largest possible batches. However we shouldn't starve the guest for too long. So if the guest has space for at least two big packets and we don't have at least a quarter ring to unmap, delay it for at most 1 milisec. Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r--drivers/net/xen-netback/interface.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index 9cc9f638f442..83a71ac5b93a 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -408,6 +408,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
408 .desc = i }; 408 .desc = i };
409 vif->grant_tx_handle[i] = NETBACK_INVALID_HANDLE; 409 vif->grant_tx_handle[i] = NETBACK_INVALID_HANDLE;
410 } 410 }
411 init_timer(&vif->dealloc_delay);
411 412
412 /* 413 /*
413 * Initialise a dummy MAC address. We choose the numerically 414 * Initialise a dummy MAC address. We choose the numerically
@@ -556,6 +557,7 @@ void xenvif_disconnect(struct xenvif *vif)
556 } 557 }
557 558
558 if (vif->dealloc_task) { 559 if (vif->dealloc_task) {
560 del_timer_sync(&vif->dealloc_delay);
559 kthread_stop(vif->dealloc_task); 561 kthread_stop(vif->dealloc_task);
560 vif->dealloc_task = NULL; 562 vif->dealloc_task = NULL;
561 } 563 }