All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zoltan Kiss <zoltan.kiss@citrix.com>
To: <ian.campbell@citrix.com>, <wei.liu2@citrix.com>,
	<xen-devel@lists.xenproject.org>, <netdev@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <jonathan.davies@citrix.com>
Cc: Zoltan Kiss <zoltan.kiss@citrix.com>,
	Paul Durrant <Paul.Durrant@citrix.com>
Subject: Re: [PATCH net-next v3 8/9] xen-netback: Timeout packets in RX path
Date: Wed, 8 Jan 2014 21:34:21 +0000	[thread overview]
Message-ID: <52CDC45D.3050509@citrix.com> (raw)
In-Reply-To: <1389139818-24458-9-git-send-email-zoltan.kiss@citrix.com>

I just realized when answering Ma's mail that this doesn't cause the 
desired effect after Paul's flow control improvement: starting the queue 
doesn't drop the packets which cannot fit the ring. Which in fact might 
be not good. We are adding the skb to vif->rx_queue even when 
xenvif_rx_ring_slots_available(vif, min_slots_needed) said there is no 
space for that. Or am I missing something? Paul?

Zoli

On 08/01/14 00:10, Zoltan Kiss wrote:
> A malicious or buggy guest can leave its queue filled indefinitely, in which
> case qdisc start to queue packets for that VIF. If those packets came from an
> another guest, it can block its slots and prevent shutdown. To avoid that, we
> make sure the queue is drained in every 10 seconds.
...
> diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
> index 95fcd63..ce032f9 100644
> --- a/drivers/net/xen-netback/interface.c
> +++ b/drivers/net/xen-netback/interface.c
> @@ -114,6 +114,16 @@ static irqreturn_t xenvif_interrupt(int irq, void *dev_id)
>   	return IRQ_HANDLED;
>   }
>
> +static void xenvif_wake_queue(unsigned long data)
> +{
> +	struct xenvif *vif = (struct xenvif *)data;
> +
> +	if (netif_queue_stopped(vif->dev)) {
> +		netdev_err(vif->dev, "draining TX queue\n");
> +		netif_wake_queue(vif->dev);
> +	}
> +}
> +
>   static int xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev)
>   {
>   	struct xenvif *vif = netdev_priv(dev);
> @@ -143,8 +153,13 @@ static int xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev)
>   	 * then turn off the queue to give the ring a chance to
>   	 * drain.
>   	 */
> -	if (!xenvif_rx_ring_slots_available(vif, min_slots_needed))
> +	if (!xenvif_rx_ring_slots_available(vif, min_slots_needed)) {
> +		vif->wake_queue.function = xenvif_wake_queue;
> +		vif->wake_queue.data = (unsigned long)vif;
>   		xenvif_stop_queue(vif);
> +		mod_timer(&vif->wake_queue,
> +			jiffies + rx_drain_timeout_jiffies);
> +	}
>
>   	skb_queue_tail(&vif->rx_queue, skb);
>   	xenvif_kick_thread(vif);


  reply	other threads:[~2014-01-08 21:34 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-08  0:10 [PATCH net-next v2 0/9] xen-netback: TX grant mapping with SKBTX_DEV_ZEROCOPY instead of copy Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 1/9] xen-netback: Introduce TX grant map definitions Zoltan Kiss
2014-01-08  1:29   ` David Miller
2014-01-08 14:08     ` Zoltan Kiss
2014-01-09 15:30   ` Wei Liu
2014-01-09 15:42     ` David Vrabel
2014-01-09 17:28       ` [Xen-devel] " Stefano Stabellini
2014-01-09 17:46         ` David Vrabel
2014-01-09 18:09           ` Stefano Stabellini
2014-01-09 18:23             ` David Vrabel
2014-01-09 15:49     ` Roger Pau Monné
2014-01-09 19:53     ` Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 2/9] xen-netback: Change TX path from grant copy to mapping Zoltan Kiss
2014-01-09 15:30   ` Wei Liu
2014-01-10 11:35     ` Zoltan Kiss
2014-01-10 11:45       ` Wei Liu
2014-01-10 13:16         ` Wei Liu
2014-01-10 15:24         ` Zoltan Kiss
2014-01-10 16:02           ` [Xen-devel] " David Vrabel
2014-01-10 16:08             ` Wei Liu
2014-01-12 23:19             ` Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 3/9] xen-netback: Remove old TX grant copy definitons and fix indentations Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 4/9] xen-netback: Change RX path for mapped SKB fragments Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 5/9] xen-netback: Add stat counters for zerocopy Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 6/9] xen-netback: Handle guests with too many frags Zoltan Kiss
2014-01-08  2:12   ` Eric Dumazet
2014-01-08 13:49     ` Zoltan Kiss
2014-01-08 13:54       ` Eric Dumazet
2014-01-08 14:13         ` Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 7/9] xen-netback: Add stat counters for frag_list skbs Zoltan Kiss
2014-01-08  0:10 ` [PATCH net-next v3 8/9] xen-netback: Timeout packets in RX path Zoltan Kiss
2014-01-08 21:34   ` Zoltan Kiss [this message]
2014-01-09  9:20     ` Paul Durrant
2014-01-13  0:20       ` Zoltan Kiss
2014-01-13  9:53         ` Paul Durrant
2014-01-08  0:10 ` [PATCH net-next v3 9/9] xen-netback: Aggregate TX unmap operations Zoltan Kiss
2014-01-08  0:16 ` [PATCH net-next v2 0/9] xen-netback: TX grant mapping with SKBTX_DEV_ZEROCOPY instead of copy Zoltan Kiss
2014-01-08 14:43 ` Wei Liu
2014-01-08 14:44   ` Zoltan Kiss

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52CDC45D.3050509@citrix.com \
    --to=zoltan.kiss@citrix.com \
    --cc=Paul.Durrant@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=jonathan.davies@citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.