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.c34
1 files changed, 1 insertions, 33 deletions
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)
133 return i & (MAX_PENDING_REQS-1); 133 return i & (MAX_PENDING_REQS-1);
134} 134}
135 135
136static inline pending_ring_idx_t nr_free_slots(struct xen_netif_tx_back_ring *ring)
137{
138 return ring->nr_ents - (ring->sring->req_prod - ring->rsp_prod_pvt);
139}
140
141bool xenvif_rx_ring_slots_available(struct xenvif *vif, int needed) 136bool xenvif_rx_ring_slots_available(struct xenvif *vif, int needed)
142{ 137{
143 RING_IDX prod, cons; 138 RING_IDX prod, cons;
@@ -1718,36 +1713,9 @@ static inline int tx_work_todo(struct xenvif *vif)
1718 return 0; 1713 return 0;
1719} 1714}
1720 1715
1721static void xenvif_dealloc_delay(unsigned long data)
1722{
1723 struct xenvif *vif = (struct xenvif *)data;
1724
1725 vif->dealloc_delay_timed_out = true;
1726 wake_up(&vif->dealloc_wq);
1727}
1728
1729static inline bool tx_dealloc_work_todo(struct xenvif *vif) 1716static inline bool tx_dealloc_work_todo(struct xenvif *vif)
1730{ 1717{
1731 if (vif->dealloc_cons != vif->dealloc_prod) { 1718 return vif->dealloc_cons != vif->dealloc_prod;
1732 if ((nr_free_slots(&vif->tx) > 2 * XEN_NETBK_LEGACY_SLOTS_MAX) &&
1733 (vif->dealloc_prod - vif->dealloc_cons < MAX_PENDING_REQS / 4) &&
1734 !vif->dealloc_delay_timed_out) {
1735 if (!timer_pending(&vif->dealloc_delay)) {
1736 vif->dealloc_delay.function =
1737 xenvif_dealloc_delay;
1738 vif->dealloc_delay.data = (unsigned long)vif;
1739 mod_timer(&vif->dealloc_delay,
1740 jiffies + msecs_to_jiffies(1));
1741
1742 }
1743 return false;
1744 }
1745 del_timer_sync(&vif->dealloc_delay);
1746 vif->dealloc_delay_timed_out = false;
1747 return true;
1748 }
1749
1750 return false;
1751} 1719}
1752 1720
1753void xenvif_unmap_frontend_rings(struct xenvif *vif) 1721void xenvif_unmap_frontend_rings(struct xenvif *vif)