[realtek] Flow control question

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


Mr Becker,

Thanks for you help.  I'll clarify what I'm up to a little.  I'm an
undergraduate electrical engineer at the University of NSW in Sydney,
Australia.  For my thesis project I'm looking at implementing prioritization
on EtherNet/IP networks.  (EtherNet/IP is a sister protocol to DeviceNet and
ControlNet from Rockwell Automation.  It's basically CIP encapsulated in
TCP/IP, see www.ethernet-ip.org)

I have an FSU208 ethernet switch from OnTime Networks in Norway.  It has
egress 2 priority queues per port.  I'm using the high priority queue for
I/O traffic and the low priority queue for 'normal' data services.
Unfortunately in the firmware version I'm using it sends flow control
packets when it drops packets.  When packets are dropped I do not want the
sending nodes to slow down at all.  Old I/O traffic is useless and low
priority traffic can work itself out.

> I believe that what you actually want is to not negotiate flow control.
> Just ignoring the packets after negotiating flow control might lead to
> problems.
>
> Here is a command to advertise NO flow control
>    mii-diag eth0 -A 0x1e1
> Here is a command to re-advertise flow control
>    mii-diag eth0 -A 0x5e1

I have tried running the above command and get the following (which appears
to indicate some sort of error).

[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:  0000 0000 0000 0000 0000 0000 0000 0000.
  No MII transceiver present!.
  Use '--force' to view the information anyway.

I'm using RedHat 7.2 which has unfortunately shipped with the 8139too
driver.  Could this be the problem? (I'm planning to switch across to your
driver before doing any testing anyway)  If no what other causes could it
be?

In switching drivers can I just compile your 8139 driver and switch to that
or do I need to rebuild the whole kernel?  (a.k.a are there other things
known to be missing from the RH 7.2 2.4.7-10 kernel?)

Will the NIC remember these settings or should I add this command into one
of the init scripts?

Just for my information can I ask which register the above command is
setting?  (I'm wanting to be able to decode the magic numbers from the
datasheet so I won't have to keep bugging you if I want to keep playing)

> 1100 782d ... ... 05e1 4441
>
> Your are advertising 05e1
>      +flow control 10+100*HDX+FDX
> Your link partner advertised 441:
>      +flow control 10baseT-FDX only (!?)

All nodes in the test network I have available are using RTL8139 cards.  As
my experiments are looking at prioritization, which only kicks in when the
network is saturated, I've decided to run the switch at 10baseT-FDX to give
me better results.  I did this as the 8139 appeared to be able to drive
10Base at full speed but could not saturate 100Base properly (not with my
machines anyway).  If I had higher performance NICs then I'd use 100Base.
I'm forcing the use of full duplex as anyone setting up a control network
they care about significantly will always use full duplex.

Sorry for asking so many questions....

Thanks once again for your help.  More generally thanks for all your work on
Linux network drivers over the years, it's very much appreciated.

Kelvin Proctor