Download Print this page

Freescale Semiconductor MPC8313E PowerQUICC II Pro Family Reference Manual page 892

Integrated
Hide thumbs Also See for MPC8313E PowerQUICC II Pro:

Advertisement

Enhanced Three-Speed Ethernet Controllers
15.6.4.3.1
Priority-Based Queuing (PBQ)
PBQ is the simplest scheduler decision policy. The enabled TxBD rings are assigned a priority value based
on their index. Rings with a lower index have precedence over rings with higher indices. For example,
TxBD ring 0 has higher priority than TxBD ring 1, and TxBD ring 1 has higher priority than TxBD ring
2, and so on.
The scheduling decision is then achieved as follows:
loop
priority_ring = null;
ring = 0;
while priority_ring == null and ring <= 7 loop
if enabled(ring) and not ring_empty(ring) then
priority_ring = ring;
endif
ring = ring + 1;
endloop
if priority_ring >= 0 then
while not ring_empty(priority_ring) loop
transmit_frame(priority_ring);
endloop
endif
endloop
In practice a protocol stack or device driver can abuse PBQ by attempting to queue too much traffic onto
high priority rings. It is recommended that the highest priority ring should normally not be used at all
except for frames requiring the utmost urgent transmission. This allows emergency traffic to overtake
backlogged queues out of sequence.
15.6.4.3.2
Modified Weighted Round-Robin Queuing (MWRR)
eTSEC implements a modified weighted round-robin scheduling algorithm across all enabled TxBD rings
when TCTRL[TXSCHED] = 10. In MWRR, the weights in the TR03WT and TR47WT registers
determine the ideal size of each transmit slot, as measured in multiples of 64 bytes. Thus, to set a transmit
slot of 512 bytes, a weight of 512/64 or 8 needs to be set for the ring. In this mode TxBD rings 1–7 are
selected in round-robin fashion, whereas TxBD ring 0, if enabled with ready data for transmission, is
always selected in between other rings so as to expedite transmission from ring 0.
The scheduling decision is then achieved as follows:
for ring = 1..7 and enabled(ring) loop
credit[ring] = 0;
endloop
for ring = 1..7 and enabled(ring) loop
if not ring_empty(0) then
credit[0] = credit[0] + weight[0];
while credit[0] > 0 loop
transmit_frame(0);
credit[0] = credit[0] - frame_size;
if ring_empty(0) then
credit[0] = 0;
endif
endloop
endif
MPC8313E PowerQUICC™ II Pro Integrated Processor Family Reference Manual, Rev. 2
15-174
Freescale Semiconductor

Advertisement

loading

This manual is also suitable for:

Mpc8313 powerquicc ii pro