Bug 37385

Summary: xl0 network card (509B) fails on heavy traffic
Product: Base System Reporter: yuri
Component: alphaAssignee: freebsd-alpha (Nobody) <alpha>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description yuri 2002-04-23 18:10:01 UTC
"xl0: bad receive status -- packet dropped"
dropped in log by if_xl driver when traffic is really
heavy -- (download of huge file from LAN).

might be endianness issue again since number of similar cards
work on i386 platform.

Fix: 

unknown
How-To-Repeat: obvious
Comment 1 Andrew Gallatin 2002-04-23 18:46:24 UTC
The message is mostly harmless.  I see it only at a very high
packets/sec rate on my UP1000.

It may simply be a race if the card writes portions of xl_status
independantly (eg, updates the csum status, then marks it complete in
another DMA).

 > "xl0: bad receive status -- packet dropped"
 > dropped in log by if_xl driver when traffic is really
 > heavy -- (download of huge file from LAN).
 > 
 > might be endianness issue again since number of similar cards
 > work on i386 platform.

Nonsense. The alpha and the i386 platform have the same byte order. 
Also, xl_status is 32-bits, so the reads of it should be atomic from the
host's perspective.  

If the card is doing the DMAs separately, then we
should be looking for XL_RXSTAT_UP_CMPLT (or XL_RXSTAT_UP_ERROR) explicitly.

Something like


while((rxstat = sc->xl_cdata.xl_rx_head->xl_ptr->xl_status) & (XL_RXSTAT_UP_ERROR|XL_RXSTAT_UP_CMPLT)) {



Drew
Comment 2 wilko freebsd_committer freebsd_triage 2003-08-18 21:06:04 UTC
State Changed
From-To: open->closed

I just finished testing xl(4) on alpha and it works just 
fine, no errors/warnings. This was using netperf.