8260 FCC Ethernet problem

Leitner, Kip Kip.Leitner at ipc.com
Wed Jul 27 05:15:21 EST 2005


Rune,
 
I just found your post regarding the Local_Protect_Bit not being set in
8260 FCC, for "some versions of 2.4 source " fcc_enet.c, and this
causing problems.  In my situation, we are getting late collision errors
in our application, details follow (after your patch notes).  
 
We are wondering if we apply your patch to 2.4.18 fcc_enet.c, will this
fix our late collision problem, as 2.4.18 fcc_enet.c has the uncorrected
part of the code in our Linux distribution that your patch fixes.
 
Sincerely,
 
Kip Leitner   
 
**************
<Rune Wrote >
 
I just found that there is a problem in the FCC driver.
This was fixed in some versions of the 2.4 source....
 
Th Local Protect Bit is not set when enterring Full Duplex mode. This
causes the FCC to turn off the transmitter when packets are received,
and also
causes NonOctet frame errors and CRC errors (late collission)
 
This diff is agains the 2.6.7 sources, but should apply cleanly against
top of source.
 
===== arch/ppc/8260_io/fcc_enet.c 1.20 vs edited =====
--- 1.20/arch/ppc/8260_io/fcc_enet.c    2004-07-06 16:44:29 -05:00
+++ edited/arch/ppc/8260_io/fcc_enet.c  2004-09-10 14:44:05 -05:00
@@ -2013,9 +2013,9 @@
        fccp = fcp->fccp;
 
        if (duplex)
-               fccp->fcc_fpsmr |= FCC_PSMR_FDE;
+               fccp->fcc_fpsmr |= FCC_PSMR_FDE | FCC_PSMR_LPB;
        else
-               fccp->fcc_fpsmr &= ~FCC_PSMR_FDE;
+               fccp->fcc_fpsmr &= ~(FCC_PSMR_FDE | FCC_PSMR_LPB);
 
        /* Enable transmit/receive */
        fccp->fcc_gfmr |= FCC_GFMR_ENR | FCC_GFMR_ENT;
 
 
Rune Torgersen
System Developer
Innovative Systems LLC
1000 Innovative Drive
Mitchell, SD 57301
Ph: 605-995-6120
www.innovsys.com

 

**************

< Dump  from Kip Leitner > 

 

In kernel version 2.4.18, in the Ethernet driver fcc_enet.c, we hit the
ring data dump with text message "eth0: transmit timeout".  Upon
inspection of the buffer descriptors, we noticed that buffer four (4,
0-based numbering) shows status for a late collision.  Our lan
conditions at the time of the dump:  PHY running at 10 Base T,
half-duplex, connected to half-duplex hub.  We know (from our high-level
software) that while we were continuously transmitting, we also began to
receive packets, which is when this repeatable condition of the Ring
Dump occurred. Dump below (more text after):

 

NETDEV WATCHDOG: eth0: transmit timed out

eth0: transmit timed out.

 Ring data dump: cur_tx c01aa380 (full) cur_rx c01aa220.

 Tx @base c01aa308 :

9c00 0051 070f79a2

1c00 0056 070f7da2

1c00 0056 070f7ea2

1c00 0051 070f7ba2

1c80 003f 070f51c2                    ** Late Collision **

9c00 0056 070f50c2

9c00 0051 070f52c2

9c00 0056 070f53c2

9c00 0056 070f55c2

9c00 0051 070f54c2

dc00 0038 070f56c2

9c00 0056 070f57c2

9c00 0051 070f58c2

9c00 0056 070f59c2

9c00 0056 070f5ac2

bc00 0056 070f7ca2

 Rx @base c01aa208 :

9c00 0040 0046f000

9c00 0040 0046f800

9c00 0040 0046e000

9c00 0072 0046e800

9c00 0072 0046d000

9c00 0072 0046d800

9c00 0072 0046c000

9c00 0072 0046c800

9c00 0072 0046b000

9c00 0072 0046b800

9c00 0072 0046a000

9c00 0040 0046a800

9c00 0072 00469000

9c00 0072 00469800

9c00 0072 00468000

9c00 0072 00468800

9c00 0072 00467000

9c00 0040 00467800

9c00 0072 00466000

9c00 0040 00466800

9c00 0072 00465000

9c00 0040 00465800

9c00 0040 00464000

9c00 0040 00464800

9c00 0040 00463000

9c00 0040 00463800

9c00 0040 00462000

9c00 0040 00462800

9c00 0040 00461000

9c00 0040 00461800

9c00 0040 00460000

bc00 0040 00460800   

 

We are wondering if our hardware (we build our own) has a problem, our
physical network has a problem, and/or if 

 

--> the driver supports recovery from late collisions.  

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20050726/37d225a1/attachment.htm>


More information about the Linuxppc-dev mailing list