Texas Instruments TNETX4090 Switch User Manual


 
TNETX4090
ThunderSWITCH II
9-PORT 100-/1000-MBIT/S ETHERNET
SWITCH
SPWS044E – DECEMBER 1997 – REVISED AUGUST 1999
56
POST OFFICE BOX 655303 DALLAS, TEXAS 75265
flow control
The TNETX4090 supports collision-based flow control for ports in half-duplex mode and IEEE Std 802.3x flow
control for ports in full-duplex mode. The flow bit in the SysControl register determines the action that will be
taken when back pressure is needed, that is, when there are insufficient resources to handle an inbound packet.
The holb bit in the SysControl register determines when back pressure is needed.
If flow = 0, packets are discarded at the ingress port when insufficient resources are available to handle
them.
If flow = 1, ports in half-duplex mode cause collisions to avoid accepting packets, ports in full-duplex mode
whose link partners negotiated to accept pause packets will send them; otherwise, packets are dropped.
If port 8 is in MII mode, the pause-frame transmission/reception is required to be symmetrical. If in GMII or
PMA mode, transmit and receive pause capabilities are negotiated independently.
With holb = 0, back pressure is applied to all ports when the number of buffers in the global pool is down
to the value in the FlowThreshold register (or half of this value if the packet arrives at a port in gigabit mode).
This prevents the reception of more frames at any port until the frame backlog is reduced and the number
of free buffers has risen above the threshold. When this happens, back pressure is removed from all ports
and packets can be received. The value in FlowThreshold should be set so that all ports can complete
reception of a maximum-size frame, that is, each port should have enough time to activate the flow
mechanisms without dumping a frame for which reception has started.
If holb = 1, back pressure is applied as when holb = 0, or to an individual port when the buffers held in
memory for data that arrived on that port is greater than the available pool remaining. Assume that
FlowThreshold is set small enough that this mechanism does not affect the back pressure in this mode. An
example is:
When port A’s traffic begins to backlog in memory [no matter to what port(s) it is destined], back pressure
will be applied when the amount of data backed up is greater than the available pool (about half the
buffers are assigned to data from port A). If A’s data stays backlogged and if data arriving at port B also
begins to backlog in memory, back pressure will be applied to port B when its data amounts to one-fourth
of the buffer pool, or half of the half left after port A had back pressure applied. When port A’s traffic
begins to exit the switch, port A will stay back pressured until its data is equal to one third of the total. As
buffers become available, port B will be allowed to consume up to one third of the buffer pool (each
backlogged total is compared with the buffers available). In this mode, only the stations that have
caused their fair share of buffers to be removed from the available pool will be back pressured.
Setting holb = 1 activates circuitry that attempts to prevent a backlogged conversation stalling other port
traffic by using up all the memory buffers. Because the number of buffers charged to a particular port is
always compared with the number of buffers left, there is no threshold register for this mode.