aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/xen-netback/common.h2
-rw-r--r--drivers/net/xen-netback/interface.c2
-rw-r--r--drivers/net/xen-netback/netback.c34
3 files changed, 1 insertions, 37 deletions
diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h
index bef37be402b8..0355f8767e3b 100644
--- a/drivers/net/xen-netback/common.h
+++ b/drivers/net/xen-netback/common.h
@@ -137,8 +137,6 @@ struct xenvif {
u16 dealloc_ring[MAX_PENDING_REQS];
struct task_struct *dealloc_task;
wait_queue_head_t dealloc_wq;
- struct timer_list dealloc_delay;
- bool dealloc_delay_timed_out;
/* Use kthread for guest RX */
struct task_struct *task;
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index a6a8c1579eb9..23bb2f4b18fe 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -407,7 +407,6 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
.desc = i };
vif->grant_tx_handle[i] = NETBACK_INVALID_HANDLE;
}
- init_timer(&vif->dealloc_delay);
/*
* Initialise a dummy MAC address. We choose the numerically
@@ -556,7 +555,6 @@ void xenvif_disconnect(struct xenvif *vif)
}
if (vif->dealloc_task) {
- del_timer_sync(&vif->dealloc_delay);
kthread_stop(vif->dealloc_task);
vif->dealloc_task = NULL;
}
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index 5a8c4a43c522..1f595e51791e 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -133,11 +133,6 @@ static inline pending_ring_idx_t pending_index(unsigned i)
return i & (MAX_PENDING_REQS-1);
}
-static inline pending_ring_idx_t nr_free_slots(struct xen_netif_tx_back_ring *ring)
-{
- return ring->nr_ents - (ring->sring->req_prod - ring->rsp_prod_pvt);
-}
-
bool xenvif_rx_ring_slots_available(struct xenvif *vif, int needed)
{
RING_IDX prod, cons;
@@ -1718,36 +1713,9 @@ static inline int tx_work_todo(struct xenvif *vif)
return 0;
}
-static void xenvif_dealloc_delay(unsigned long data)
-{
- struct xenvif *vif = (struct xenvif *)data;
-
- vif->dealloc_delay_timed_out = true;
- wake_up(&vif->dealloc_wq);
-}
-
static inline bool tx_dealloc_work_todo(struct xenvif *vif)
{
- if (vif->dealloc_cons != vif->dealloc_prod) {
- if ((nr_free_slots(&vif->tx) > 2 * XEN_NETBK_LEGACY_SLOTS_MAX) &&
- (vif->dealloc_prod - vif->dealloc_cons < MAX_PENDING_REQS / 4) &&
- !vif->dealloc_delay_timed_out) {
- if (!timer_pending(&vif->dealloc_delay)) {
- vif->dealloc_delay.function =
- xenvif_dealloc_delay;
- vif->dealloc_delay.data = (unsigned long)vif;
- mod_timer(&vif->dealloc_delay,
- jiffies + msecs_to_jiffies(1));
-
- }
- return false;
- }
- del_timer_sync(&vif->dealloc_delay);
- vif->dealloc_delay_timed_out = false;
- return true;
- }
-
- return false;
+ return vif->dealloc_cons != vif->dealloc_prod;
}
void xenvif_unmap_frontend_rings(struct xenvif *vif)

Privacy Policy