Interpreting Intel 82450EM Ethernet Controller Stats


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?


Reply to
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 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.