Interpreting Intel 82450EM Ethernet Controller Stats

Hello,

I'm running a system based on Linux 2.4.31 with three Intel 82450EM gigabit Ethernet ports. In trying to diagnose a througput problem, I'm using ethtool to look at the controller registers, but I'm not sure how to interpret the values of RDH and RDT (receive descriptor head/tail). Given output like:

[TEST] root # ethtool -d eth2 MAC Registers

-------------

0x00000: CTRL (Device control register) 0x083C0249 Duplex: full Endian mode (buffers): little Link reset: reset Set link up: 1 Invert Loss-Of-Signal: no Receive flow control: enabled Transmit flow control: disabled VLAN mode: disabled Auto speed detect: disabled Speed select: 1000Mb/s Force speed: no Force duplex: no 0x00008: STATUS (Device status register) 0x0000C383 Duplex: full Link up: link config TBI mode: disabled Link speed: 1000Mb/s Bus type: PCI Bus speed: 33MHz Bus width: 32-bit 0x00100: RCTL (Receive control register) 0x0000801A Receiver: enabled Store bad packets: disabled Unicast promiscuous: enabled Multicast promiscuous: enabled Long packet: disabled Descriptor minimum threshold size: 1/2 Broadcast accept mode: accept VLAN filter: disabled Cononical form indicator: disabled Discard pause frames: filtered Pass MAC control frames: don't pass Receive buffer size: 2048 0x02808: RDLEN (Receive desc length) 0x00010000 0x02810: RDH (Receive desc head) 0x000008D8 0x02818: RDT (Receive desc tail) 0x000008D0 0x02820: RDTR (Receive delay timer) 0x00000000 0x00400: TCTL (Transmit ctrl register) 0x000400FA Transmitter: enabled Pad short packets: enabled Software XOFF Transmission: disabled Re-transmit on late collision: disabled 0x03808: TDLEN (Transmit desc length) 0x00001000 0x03810: TDH (Transmit desc head) 0x00000036 0x03818: TDT (Transmit desc tail) 0x00000036 0x03820: TIDV (Transmit delay timer) 0x00000040 PHY type: M88

where RDH is 000008D8 and RDT is 000008D0, does this mean that the descriptor ring buffer has 8 free descriptors, or 8 used descriptors? It's curious that RDH always seems to be numerically higher than RDT. In practice, I've never seen the situation reversed.

Oh, and a second question. As you can see, the "ethtool -d" output doesn't show anywhere close to the full register dump. Is there a tool I can use to access registers not shown here, or do I need to start hacking ethtool?

Thanks!

G
Reply to
gg-csf
Loading thread data ...

Ouch... I can tell you right away, you WILL have throughput problem of cramming 3 GIGAbit Ethernet on one pitiful 33Mhz PCI bus... Your PCI backplane is choking at 600Mbps total to be shared across 3 gigabit ethernet card (and that is with a 2.1 Ghz CPU).

Go invest in a mother board with PCI 66Mhz or 100Mhz bus, preferably with 64-bit wide PCI connectors.

ALso invest in Intel 1000 ST cards. These are server cards with wide PCI bus.

Then repeat your throughput test.

One in 8 times, you will see the RDH fall behind to RDT during ring buffer wraparound....

Hack your own...

Reply to
Capt. James. T. Kirk

Cabling-Design.com Forums website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.