[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

missing sent packets of via-rhine



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
 

Reply to: