Sundance Spas ST201 Network Card User Manual


 
25
Sundance Technology ST201 PRELIMINARY draft 2
tion of the first TFDin the TxDMAList.
Restore the TxDMANextPtr of the first TFD,
and restart this process.
4. Copy the value of the first TFDsTxDMANex-
tPtr into the TxDMANextPtr field of the inserted
TFD.
5. Update the TxDMANextPtr field of the first
TFDwith the address of the inserted TFD.
TRANSMIT INTERRUPT OPTIMIZATIONS
The transmit mechanism can be optimized by the
host system, allowing a reduction in the number of
interrupts generated. The host system can limit the
number of frames in the TxDMAList for which a
TxDMAComplete interrupt is generated. For exam-
ple, the host system could only set TxDMAIndicate
for the frame on the tail of the list (clearing TxD-
MAIndicate for the current tail before adding a new
frame to the list). Or it might require an interrupt
every N frames. In any case, on each interrupt it
would then dequeue all of the frames which were
transferred via TxDMA before that interrupt
occurred (TFDs in which TxDMAComplete is set).
Obviously, the host system is responsible for the
trade-off between latency and the number of inter-
rupts generated by the ST201.
RXDMA SEQUENCE
The ST201 performs the following procedure dur-
ing transfers of RxDMA frames.
1. Verifies the RxDMAListPtr register is non-zero.
2. Verifies not in the RxDMAHalt state.
3. Resets the RxDMAStatus register.
4. Fetches ReceiveFrameStatus from the current
RFD. If the current RFD has the RxDMACom-
plete bit set, the ST201 performs an implicit
RxDMAHalt, halting the RxDMA process. (If
RxDMAPollPeriod contains a nonzero value,
the ST201 will then poll on the RxDMACom-
plete bit, waiting for it to be cleared before con-
tinuing.) Otherwise, the RxDMA process
continues.
5. Waits for the top receive frame to become eli-
gible for RxDMA.
6. Transfers the frame via RxDMA into the frag-
ments specified in the RFD, or into the implied
buffer if ImpliedBufferEnable is set. If there is
more data in the frame than space in the frag-
ment buffers, the ST201 generates a RxD-
MAOverflow error.
7. As the frame is being transferred by the
RxDMA process, the ST201 maintains the
RxDMAStatus register, specifically the RxD-
MAFrameLen field.
8. At the end of the frame RxDMA process, the
ST201 updates the RxDMAStatus register with
any error codes from the frame transfer and
sets the RxDMAComplete bit.
9. Issues an internal RxDiscard and waits for
completion.
10. If a RxDMAHalt has been asserted, waits until
a RxDMAResume has been issued.
11. Fetches RxDMANextPtr from the RFD. If RxD-
MANextPtr is zero and polling is enabled, the
ST201 begins a polling loop. If polling is dis-
abled, the ST201 loads the fetched value into
RxDMAListPtr.
12. Writes ReceiveFrameStatus to the RFD in host
memory.
13. If a polling loop has begun, polls on RxDMAN-
extPtr until a non-zero value is fetched. Loads
the value into RxDMAListPtr.
14. If the RxDMAListPtr value is zero (polling is
disabled), then the RxDMA Logic becomes
idle, waiting for a non-zero value to be written
into the RxDMAListPtr register.
15. Repeat process at step 1.
WAKE EVENT PROGRAMMING
This section describes the sequences involved in
programming ST201 for wake events.
Powering down the ST201 will typically occur while
in the operating state (D0). The host system is noti-
fied by the operating system that a power state
change is imminent. The host system prepares for
power down with these steps.
1. Halt the ST201 TxDMA process, halt the
TxDMA Logic, wait for any TxDMA in progress
to complete, wait for any transmissions to com-
plete, and issue TxReset to reset the TxFIFO
pointers.
2. Perform the RxDMA process for any receive
frames remaining in RxFIFO, halt RxDMA
Logic (frames will potentially keep filling the
RxFIFO between now and when operating sys-
tem powers down the system, and once the
power down state is entered and Wakeup
Packet scanning enabled, these frames in the
RxFIFO will be scanned and could potentially
wake the system immediately).
3. Clear IntEnable register so no interrupts occur
before PowerState is changed.
4. Save any volatile state, such as a pending
power state and the HashTable settings, to
system memory (system memory is restored
after a power down).
5. The host system transfers Wakeup Packet pat-
terns to the TxFIFO (if Wakeup Packets are to
be enabled) and programs the WakeEvent reg-
ister to enable the desired wake events. The