From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH] Remove the 500ms timeout to restart the netif queue. Date: Wed, 15 Dec 2010 10:58:41 -0500 Message-ID: <20101215155841.GE28984@dumpdata.com> References: <1292358922-5569-1-git-send-email-paul.durrant@citrix.com> <1292358922-5569-2-git-send-email-paul.durrant@citrix.com> <1292358922-5569-3-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <1292358922-5569-3-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Paul Durrant Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Tue, Dec 14, 2010 at 08:35:20PM +0000, Paul Durrant wrote: > 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. The patch just removes the timeout, so the queue will be considered unavailable.. So will the queue be restarted via the net_rx_action logic? > > Signed-off-by: Paul Durrant > --- > 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@lists.xensource.com > http://lists.xensource.com/xen-devel