NetBSD-Bugs archive

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

Re: port-sparc64/46260: gem0 driver fails to recover after RX overflow



The following reply was made to PR port-sparc64/46260; it has been noted by 
GNATS.

From: Julian Coleman <jdc%coris.org.uk@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: port-sparc64/46260: gem0 driver fails to recover after RX overflow
Date: Fri, 30 Mar 2012 16:11:45 +0100

 Hi,
 
 >                      the modified code is:
 > 
 > ...
 >         if (status & GEM_INTR_RX_MAC) {
 >                 int rxstat = bus_space_read_4(t, h, GEM_MAC_RX_STATUS);
 >                 /*
 >                  * At least with GEM_SUN_GEM and some GEM_SUN_ERI
 >                  * revisions GEM_MAC_RX_OVERFLOW happen often due to a
 >                  * silicon bug so handle them silently. Moreover, it's
 >                  * likely that the receiver has hung so we reset it.
 >                  */
 >                 if (rxstat & GEM_MAC_RX_OVERFLOW) {
 >                         ifp->if_ierrors++;
 >                         aprint_error_dev(sc->sc_dev,
 >                             "receive error: RX overflow");
 >                         gem_reset_rxdma(sc);
 > ...
 > 
 >      And this printf() is triggered.
 
 Revision 1.68 (which was pulled up to netbsd-4, but not netbsd-4-0) changed
 the:
 
   gem_init(ifp);
 
 to:
 
   gem_reset_rxdma(sc);
 
 when (rxstat & GEM_MAC_RX_OVERFLOW) occurred.  Can you try changing this
 back?
 
 Thanks,
 
 J
 
 -- 
   My other computer also runs NetBSD    /        Sailing at Newbiggin
         http://www.netbsd.org/        /   http://www.newbigginsailingclub.org/
 


Home | Main Index | Thread Index | Old Index