Date: Sun, 11 Aug 2002 03:04:26 +0100 From: Ian Dowse <iedowse@maths.tcd.ie> To: Mike Tancsa <mike@sentex.net> Cc: stable@freebsd.org, luigi@freebsd.org Subject: Re: fxp problems with latest stable Re: panics after upgrading to -STABLE Aug 9, 2002 (still something up) Message-ID: <200208110304.aa47521@salmon.maths.tcd.ie> In-Reply-To: Your message of "Sat, 10 Aug 2002 21:18:57 EDT." <5.1.0.14.0.20020810210400.0622d770@192.168.0.12>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <5.1.0.14.0.20020810210400.0622d770@192.168.0.12>, Mike Tancsa write s: >I did some more tests with the new driver with 2 machines on a totally >different segment and the same sorts of packet loss on simple pings. If I >revert to the previous version, no packet loss at all. Hi Mike, thanks for tracking down the commit that caused this. I had a quick look at the changes in that revision, and although there were no obvious problems I could see, a few things stood out as possible candidates: The FXP_RFA_RNRMARK flag: Luigi, do you have hardware documentation for the Intel etherexpress chips that explicitly says that this bit is free for use by the device driver? If not, this would be my first guess at the problem. A patch that just #if 0's out this code (breaking the DEVICE_POLLING case) is below. It would be very useful to know if this makes a difference. Total packet size: the old code used rfa->actual_size & (MCLBYTES - 1) and the new version uses a mask of 0x3fff. I assume this is correct, but to test if it is the problem, change the 0x3fff to 0x1fff. Ian Index: if_fxp.c =================================================================== RCS file: /home/iedowse/CVS/src/sys/dev/fxp/if_fxp.c,v retrieving revision 1.110.2.24 diff -u -r1.110.2.24 if_fxp.c --- if_fxp.c 9 Aug 2002 02:04:20 -0000 1.110.2.24 +++ if_fxp.c 11 Aug 2002 01:46:23 -0000 @@ -1292,7 +1292,9 @@ * info will be used in the subsequent polling cycle. */ +#if 0 #define FXP_RFA_RNRMARK 0x4000 /* used to mark a pending RNR intr */ +#endif for (;;) { m = sc->rfa_headm; @@ -1307,8 +1309,10 @@ if ( (rfa->rfa_status & FXP_RFA_STATUS_C) == 0) break; +#if 0 if (rfa->rfa_status & FXP_RFA_RNRMARK) rnr = 1; +#endif /* * Remove first packet from the chain. */ @@ -1342,15 +1346,19 @@ } } if (rnr) { +#if 0 if (rfa->rfa_status & FXP_RFA_STATUS_C) rfa->rfa_status |= FXP_RFA_RNRMARK; else { +#endif fxp_scb_wait(sc); CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, vtophys(sc->rfa_headm->m_ext.ext_buf) + RFA_ALIGNMENT_FUDGE); fxp_scb_cmd(sc, FXP_SCB_COMMAND_RU_START); +#if 0 } +#endif } } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <200208110304.aa47521>