[realtek] Flow control question

Kelvin Proctor k.proctor@student.unsw.edu.au
Fri Sep 27 20:03:00 2002

Mr Becker,

> With this approach you will have to add it to an init script.

Should I hook this into the init scripts before the interface is brought up
or not?  Otherwise I was just planning to throw it in rc.local.

> It's changing the advertised capabilities that the transceiver sends.
> The rtl8139 allows direct access to the transceiver management as
> normal registers, that's why I was able to read the settings.

I've just download the 8139B data sheet.  I assume the above should be
setting the "Auto-negotiation Advertisement Register" at 0066h-0067h.  (I've
now found out what the `magic` numbers are :)

I'm a little confused with a few of the offsets I'm seeing in the register
dump etc...

[root@devel rtl8139]# ./mii-diag eth0 -A 0x1e1
 Setting the media capability advertisement register of PHY #32 to 0x01e1.
Basic registers of MII PHY #32:  1100 782d 0000 0000 05e1 4441 0001 0000.
 The autonegotiated capability is 0040.
The autonegotiated media type is 10baseT-FD.
 Basic mode control register 0x1100: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner advertised 4441: Flow-control 10baseT-FD, w/ 802.3X flow
   End of basic transceiver information.

[root@devel rtl8139]# ./rtl8139-diag eth0 -a
rtl8139-diag.c:v2.10 9/18/2002 Donald Becker (becker@scyld.com)
Index #1: Found a RealTek RTL8139 adapter at 0x6100.
RealTek chip registers at 0x6100
 0x000: 044f3000 0000daae ffffffff ffffffff 00002000 00002000 00002000
 0x020: 01748010 01748610 01748c10 01749210 01740000 01000000 0000fff0
 0x040: 78000000 00000000 8fb5c01c 00000000 004f1000 00000000 0080e188
 0x060: 1100000f 05e1782d 00014441 00000000 00000004 000f77c0 58fab388
Realtek station address 00:30:4f:04:ae:da, chip type 'rtl8139B'.
  Receiver configuration: Reception disabled
     Rx FIFO threshold 16 bytes, maximum burst 16 bytes, 8KB ring
  Transmitter disabled with normal settings, maximum burst 16 bytes.
    Tx entry #0 status 00002000 incomplete, 0 bytes.
    Tx entry #1 status 00002000 incomplete, 0 bytes.
    Tx entry #2 status 00002000 incomplete, 0 bytes.
    Tx entry #3 status 00002000 incomplete, 0 bytes.
  Flow control: Tx enabled  Rx disabled.
  The chip configuration is 0x10 0x4f, MII full-duplex mode.
  No interrupt sources are pending.
[root@devel rtl8139]#

>From the mii-diag output it is stating that the link partner advertised
4441.  From the above register dump this appears to be at offset
0x06A-0x06B.  This is different from the datasheet that indicates this
should be at 0x068-0x069.

I'm seeing the same for the basic mode control register that appears to be
at 0x060-0x061 based on the register dump, but the datasheet says it's at

The datasheet I'm looking at comes from the realtek.com.tw site at  Do I
have the right datasheet?

In the above dump offset 0x062-0x063 contains 0x05e1, which appears to be
the old advertisement value, indicating that the call to `./mii-diag eth0 -A
0x1e1` did not work.  I also tried bringing the interface down, calling
mii-diag and bringing it up again.  This all gives that same result.

Is there something I need to do to activate the new values?

I've also confirmed that I'm actually using the new driver based on the
following line from lsmod
> rtl8139    12496   1

Thanks again for your help.


Kelvin Proctor