diff options
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
-rw-r--r-- | drivers/net/xen-netback/netback.c | 34 |
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 | ||
136 | static 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 | |||
141 | bool xenvif_rx_ring_slots_available(struct xenvif *vif, int needed) | 136 | bool 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 | ||
1721 | static 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 | |||
1729 | static inline bool tx_dealloc_work_todo(struct xenvif *vif) | 1716 | static 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 | ||
1753 | void xenvif_unmap_frontend_rings(struct xenvif *vif) | 1721 | void xenvif_unmap_frontend_rings(struct xenvif *vif) |