Subject: Re: [PATCH -next] tun: stop tx queue when limit is hit

From: Florian Westphal <[email-masked]>
Date: Mon, 21 Jul 2014 08:54:20 +0200

David Miller <[email-masked]> wrote:
> From: Florian Westphal <[email-masked]>
> Date: Sun, 20 Jul 2014 20:51:25 +0200
> 
> > Currently tun just frees the skb and returns NETDEV_TX_OK
> > when queue length exceeds txqlen.
> > 
> > This causes severe packetloss and unneeded resource
> > consumption on host when sending to vm connected via tun.
> > 
> > Instead, lets stop the transmit queue and start it once
> > packets are consumed from the queue.  This allows the network
> > stack to control applications that send data via tun device.
> 
> I strongly suspect the current behavior is intentional, see
> commit:
> 
> commit 5d097109257c03a71845729f8db6b5770c4bbedc
> Author: Michael S. Tsirkin <[email-masked]>
> Date:   Mon Dec 3 10:07:14 2012 +0000
> 
>     tun: only queue packets on device

Looks like you're right :-/

Alright, please ignore my patch.

That being said, the current behaviour isn't ideal either.

It took me quite some time to realize that packetloss
was on the sender side inside tun driver and not on the receiver
vm.  Not stopping the queue was a bit ... unexpected.