[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] Remove the 500ms timeout to restart the netif queue.



It is generally unhelpful as it results in a massive tail-drop should a guest 
become
unresponsive for a relatively short period of time and no back-pressure (other 
than
that caused by a higher layer protocol) is applied to the sender.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
 drivers/xen/netback/netback.c |   20 +-------------------
 1 files changed, 1 insertions(+), 19 deletions(-)

diff --git a/drivers/xen/netback/netback.c b/drivers/xen/netback/netback.c
index 066d140..87a2cd4 100644
--- a/drivers/xen/netback/netback.c
+++ b/drivers/xen/netback/netback.c
@@ -271,13 +271,6 @@ static inline int netbk_queue_full(struct xen_netif *netif)
               ((netif->rx.rsp_prod_pvt + NET_RX_RING_SIZE - peek) < needed);
 }
 
-static void tx_queue_callback(unsigned long data)
-{
-       struct xen_netif *netif = (struct xen_netif *)data;
-       if (netif_schedulable(netif))
-               netif_wake_queue(netif->dev);
-}
-
 /* Figure out how many ring slots we're going to need to send @skb to
    the guest. */
 static unsigned count_skb_slots(struct sk_buff *skb, struct xen_netif *netif)
@@ -360,19 +353,8 @@ int netif_be_start_xmit(struct sk_buff *skb, struct 
net_device *dev)
                netif->rx.sring->req_event = netif->rx_req_cons_peek +
                        netbk_max_required_rx_slots(netif);
                mb(); /* request notification /then/ check & stop the queue */
-               if (netbk_queue_full(netif)) {
+               if (netbk_queue_full(netif))
                        netif_stop_queue(dev);
-                       /*
-                        * Schedule 500ms timeout to restart the queue, thus
-                        * ensuring that an inactive queue will be drained.
-                        * Packets will be immediately be dropped until more
-                        * receive buffers become available (see
-                        * netbk_queue_full() check above).
-                        */
-                       netif->tx_queue_timeout.data = (unsigned long)netif;
-                       netif->tx_queue_timeout.function = tx_queue_callback;
-                       mod_timer(&netif->tx_queue_timeout, jiffies + HZ/2);
-               }
        }
        skb_queue_tail(&netbk->rx_queue, skb);
 
-- 
1.5.6.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.