Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Dec 1999 12:38:32 -0800 (PST)
From:      "Rodney W. Grimes" <freebsd@gndrsh.dnsmgr.net>
To:        dillon@apollo.backplane.com (Matthew Dillon)
Cc:        wpaul@skynet.ctr.columbia.edu (Bill Paul), julian@whistle.com, scottm@cs.ucla.edu, jlemon@americantv.com, brad@shub-internet.org, jabley@patho.gen.nz, phk@critter.freebsd.dk, wollman@khavrinen.lcs.mit.edu, current@FreeBSD.ORG
Subject:   Re: Woa!  May have found something - 'rl' driver and small packets (was Re: Odd TCP glitches in new currents)
Message-ID:  <199912242038.MAA58725@gndrsh.dnsmgr.net>
In-Reply-To: <199912240716.XAA10120@apollo.backplane.com> from Matthew Dillon at "Dec 23, 1999 11:16:46 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
...
>     I'm pretty sure that the box was getiting receive interrupts because
>     every time I sent a packet to it from the outside systat -vm showed
>     a PCI interrupt for the network device.  However 'netstat -in 1' did
>     not show the statistics for the received packets until 64 had 
>     accumulated.  It could be that the statistics are not being accumulated
>     on a per-reception basis and that the receive packets are actually
>     getting through, and that its the transmit side which is broken.  I don't
>     know the code well enough yet to make the determination.

If things are done in these drives as they are in the if_de driver then
what you are seeing is the fact that if_opackets and are only
updated when the tx ring is reclaimed by an interrupt, not
when we actually queue the packet to the card.  This has been a source
of confusion for a long time, and IMNSO we should move the if_ipackets+=
in the code.  Here is an idle box, with an dc21143 in it showing probably
what you are seing (the only network traffic to this box is the output
of this running netstat -I de0 1 command:
            input          (de0)           output
   packets  errs      bytes    packets  errs      bytes colls
         1     0         60          0     0        138     0
         2     0        182          0     0        250     0
         2     0        158          0     0        138     0
... 100 + lines of output deleted...
         3     0        256          0     0        138     0
         1     0         60        122     0        138     0
         3     0        256          0     0        138     0
         1     0         60          0     0        138     0

Search for lines like this:
    sc->tulip_if.if_opackets += xmits;

in the driver to see when we update the counter, then look at how
interrupt per packet drivers do it and propose a nice clean solution :-)



-- 
Rod Grimes - KD7CAX @ CN85sl - (RWG25)               rgrimes@gndrsh.dnsmgr.net


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199912242038.MAA58725>