Interpreting Intel 82450EM Ethernet Controller Stats

G

Guest

Guest
Archived from groups: comp.os.linux.networking,comp.dcom.lans.ethernet (More info?)

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
 
G

Guest

Guest
Archived from groups: comp.os.linux.networking,comp.dcom.lans.ethernet (More info?)

gg-csf@dmztest.vsr.ambisys.net wrote:
> 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:

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.


>
> [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.

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

>
> 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?
>

Hack your own...