Thread (5 messages) 5 messages, 2 authors, 2014-06-30

Re: Packet loss when txqueuelen is zero

From: Eric Dumazet <hidden>
Date: 2014-06-28 14:40:22

On Sat, 2014-06-28 at 12:59 +0200, Stefan Wahren wrote:
Hi,

i'm new to Linux network driver development and currently i want to port 
the QCA7000 network driver to mainline [1]. I concentrate my tests on tx 
buffering since my last QCA7000 patch RFC [2]. Now i've found a test 
scenario which leads to packet loss:

host A          Powerline       host B
(QCA7000)       Ethernet        Ethernet
192.168.1.3     adaptor         192.168.1.5
|------------------|---------------|
      Homeplug         Ethernet
      10 Mbit          100 Mbit

1. Reduce the txqueuelen from 100 (default value) to 0
2. Run ping in flood mode on host A to host B

ping -c 200 -s 10000 -f 192.168.1.5

3. ping reports a high packet loss

Additional information:
- QCA7000 network driver has a tx ring size of 10 packets
- the packet loss doesn't appear when txqueuelen is 100

Here are my questions:

Is the packet loss a expected result for this scenario?
Sure it is totally expected.

-f is a flood ping, and you remove ability to store packets in the Qdisc
(pifo_fast limit is device txqueuelen).

If you have txqueuelen = 100, then the socket used by ping will more
likely hit its SO_SNDBUF limit and ping will handle this properly (it
detects that a sendmsg() returns -1, errno = ENOBUF

If QCA7000 network driver has a tx ring size of 10 packets, you really
want a qdisc being able to store bursts.

If bufferbloat is your concern, you can switch pfifo_fast to fq_codel or
fq

tc qdisc replace dev eth0 root fq_codel  (or fq to get TCP pacing)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help