Debian Developers - missing sent packets of via-rhine

This is Interesting: Free IT Magazines  
Home > Archive > Debian Developers > February 2005 > missing sent packets of via-rhine





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author missing sent packets of via-rhine
Roman Pruckmoser

2005-02-26, 5:53 pm

hi!

i'v got some troubles with the via-rhine driver resp. the via nic and hope
someone can give me some hint.

the problem:
i'm sending some ethernet frames from kernel to the nic (with
dev_queue_xmit). everything seems to be ok, /proc/net/dev lists all packets
sent, but the target nic did not receive all frames.

to exclude failures on the receiving station, i used different receiving
stations with different nics. allways the same - missing frames.

sending frames out of user mode leads to no loss, sending frames out of
kernel mode with some timegap between two dev_queue_xmit calls leads to no
loss. just "fast" sending of frames leads to this loss.

i compiled the via-rhine driver with highest debug-level to check the
problem in detail.
here is the debug output of sending 10 frames, where just 6 frames were
received at the destination station:

eth0: VIA Rhine monitor tick, status 0000.
eth0: Transmit frame #39 queued in slot 7.
eth0: Transmit frame #40 queued in slot 8.
eth0: Interrupt, status 0002.
Tx scavenge 7 status 00000000.
collisions: 0:0
Tx scavenge 8 status 00000000.
collisions: 0:0
eth0: exiting interrupt, status=0000.
eth0: Transmit frame #41 queued in slot 9.
eth0: Transmit frame #42 queued in slot 10.
eth0: Transmit frame #43 queued in slot 11.
eth0: Transmit frame #44 queued in slot 12.
eth0: Interrupt, status 0002.
Tx scavenge 9 status 00000000.
collisions: 0:0
Tx scavenge 10 status 00000000.
collisions: 0:0
Tx scavenge 11 status 80000000.
eth0: Interrupt, status 0002.
Tx scavenge 11 status 80000000.
eth0: Interrupt, status 0002.
Tx scavenge 11 status 00000000.
collisions: 0:0
Tx scavenge 12 status 80000000.
eth0: exiting interrupt, status=0000.
eth0: Interrupt, status 0002.
Tx scavenge 12 status 00000000.
collisions: 0:0
eth0: exiting interrupt, status=0000.
eth0: Transmit frame #45 queued in slot 13.
eth0: Transmit frame #46 queued in slot 14.
eth0: Transmit frame #47 queued in slot 15.
eth0: Transmit frame #48 queued in slot 0.
eth0: Interrupt, status 0002.
Tx scavenge 13 status 00000000.
collisions: 0:0
Tx scavenge 14 status 00000000.
collisions: 0:0
Tx scavenge 15 status 80000000.
eth0: exiting interrupt, status=0000.
eth0: Interrupt, status 0002.
Tx scavenge 15 status 00000000.
collisions: 0:0
Tx scavenge 0 status 00000000.
collisions: 0:0
eth0: exiting interrupt, status=0000.
eth0: VIA Rhine monitor tick, status 0000.

so as far as i can estimate this output (i do not have technical
documentation of the nic) everything looks right.
the status of all 10 frames was set to 0. i guess this means "frame sent"
just frame 5 (frame 43 at slot 11 in the debug output) is a little bit
confusing me. there is an interrupt with status 0002 (TxDone) and the next
frame in the ring buffer still has the status DescOwn. ???
but it seams not serious to me.

does anyone got an idea why i'm losing frames?

a bug in the driver, or bug of the nic?

thank you and best regards,
roman

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com