Intel 82558 Switch User Manual


 
106 Intel 8255x 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual
Host Software Interface
6.5.3 Command Unit Control
The CU is the 8255x logical unit that executes action commands from the command block list
(CBL). This section describes how software controls the execution of action commands.
Specifically, start, stop, suspend, or resume of the CU are discussed. The CU can be modeled as a
logical machine that exists in one of the following states at any given time:
Idle. The CU is currently not executing an action command and is not associated with a CB in
the CBL. This is the initial state. It is also the state reached after the CU finishes executing a
CBL where the last CB had an EL bit set. A CU start command must be issued to begin
execution on a new CBL.
Suspended. The CU is not executing a CB but has read a next link pointer in the last CB that
it executed before it suspended execution. A CU resume command forces the 8255x to
continue execution from the CB at the next link address.
Active. The CU is currently executing an action command.
Software affects CU operation in two ways: issuing a CU control command or setting bits in the
command word of the action command. This causes the CU to do one of the following:
Start executing a list of action commands.
Resume execution of a list of action commands.
Stop execution after completing an action command. Usually, this is the last command block
in the list.
Suspend execution after completing an action command (if the S bit was set).
Issue interrupts after completing action commands.
There are two important points of time in the execution of commands:
Acceptance Time. This is the time following a write to the SCB command byte. It is when
the CU reads the control command, clears it, and begins execution.
Completion of Execution. This is when the CU completes executing a command.
The CU uses two internal flags to remember requests from acceptance time that are to be acted on
at completion of execution: CU_START_REQUEST and CU_RESUME_REQUEST.
At command acceptance time, after the 8255x has finished higher priority tasks and detected a new
command, the device reads and analyzes the SCB command byte. (Higher priority tasks can
include: receive end of frame processing, receive or transmit buffer pre-fetching, completion of
transmit DMA, completion of action commands, and dumping counters.) The CUC field indicates
one of the following commands: CU_START or CU_RESUME.
6.5.3.1 CU Start Command
When the CU detects the CU Start (CU_START) command, it begins executing the first action
command in the list. It is prohibited from issuing a CU_START if the CU is in the active state. This
means that software must ensure that the CU is idle or suspended before issuing the CU_START
command. Upon acceptance of a CU_START command, the CU initiates the following sequence:
1. Reads the CB offset from the SCB (general pointer register) and saves it as a pointer to the first
CB in the CBL.
2. Becomes active and starts execution from the beginning of the CBL if the CU is not in the
active state.