Re: UDP multicast packet loss not reported if TX ring overrun?
From: Sridhar Samudrala <hidden>
Date: 2009-08-26 22:11:07
On Wed, 2009-08-26 at 15:09 -0400, Christoph Lameter wrote:
On Wed, 26 Aug 2009, Sridhar Samudrala wrote:quoted
quoted
They are reported for IP and UDP.Not clear what you meant by this.The SNMP and UDP statistics show the loss. qdisc level does not show the loss.quoted
quoted
root@rd-strategy3-deb64:/home/clameter#tc -s qdisc show qdisc pfifo_fast 0: dev eth0 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 6208 bytes 64 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0Even the Sent count seems to be too low. Are you looking at the right device?I would think that tc displays all queues? It says eth0 and eth0 is the device that we sent the data out on.
quoted
So based on the current analysis, the packets are getting dropped after the call to ip_local_out() in ip_push_pending_frames(). ip_local_out() is failing with NET_XMIT_DROP. But we are not sure where they are getting dropped. Is that right?ip_local_out is returning ENOBUFS. Something at the qdisc layer is dropping the packet and not incrementing counters.
Is the ENOBUFS return with your/Eric's patch? I thought you were were seeing NET_XMIT_DROP without any patches.
quoted
I think we need to figure out where they are getting dropped and then decide on the appropriate counter to be incremented.Right. Where in the qdisc layer do drops occur?
The normal path where the packets are dropped when the tx qlen is exceeded is pfifo_fast_enqueue() -> qdisc_drop() In this path, drops are counted. The other place is in dev_queue_xmit(), but you are not hitting that case too. So it looks like there is another place where they are getting dropped. Thanks Sridhar