20.4.4 Descriptor Not Valid
for
Transmit
When MAL accesses a buffer descriptor, it checks whether
or
not the Ready bit
is
set.
If
the Ready bit
is not set, two cases
apply (special treatment of the READY bit is performed
in
the case of Back-up a
packet):
For the case when the READY bit is not set:
• If the descriptor is the first descriptor of the packet MAL informs the channel that data is currently
unavailable. Further handling of this scenario is GOMMAG-specific. The channel might either
instruct MAL to access the same buffer descriptor
periodically (by keeping its service request to
MAL active) until it becomes ready, or 'give up' on the descriptor,
completing the end-of-packet
protocol with
MAl.
The channel might also indicate the buffer descriptor status to the device driver
via an interrupt. However,
in
this case the GOMMAG should eventually complete the packet transfer
protocol with
MAl.
Following a descriptor not valid indication,
MA~s
BD pointer continues pointing
to the same
location
in
the BD table. The next time a descriptor read is initiated by the GOMMAG,
MAL
will search for the buffer
in
the same location.
• If
the descriptor is not the first descriptor of the packet, it is considered a descriptor error. MAL
deactivates the
channel and from its point of view, the processing of the current packet has ended.
Software may
learn about this situation from one of two MAL interrupts (or from both). The first one
is a
nonmaskable interrupt that indicates the number of the TX channel, in which the descriptor
error had occurred (interrupt bit for each
TX
channel, see "MAL Interrupt Enable Register
(MALO_IER)" on page 20-31). The second one is a maskable interrupt which indicates a descriptor
error event,
regardless the channel number (one interrupt bit for all the channels, see "MAL Error
Status Register (MALO_ESR)" on page 20-29). For more information about error handling, see
"Error Handling" on page 20-19.
For the case of a back-up packet:
• When the current transmitted packet is a backed-up packet, all descriptors except the last, are valid
even if the READY bit is not set.
In
this case, (not the last descriptor) MAL processes the packet
descriptors
regardless the READY bit value. If the READY bit of the last descriptor
in
the backed-up
packet is not set, MAL treats it as a descriptor error. MAL
handles the descriptor error as described
above for the case when the packet isn't a backed-up packet.
20.4.5 Scroll Descriptors
for
Transmit
MAL may be configured by software,
in
the case of early packet termination, to scroll
in
the buffer
descriptor
table to the first descriptor of the next packet.
When a
multiple-buffer packet is terminated early by the GOMMAG, while MAL is processing a buffer
which is not the
last buffer
in
the packet, MAL can operate
in
one of the following ways:
The MAL
Scroll Descriptor
in
the configuration register is set:
•
In
this case MAL will read the status word from the GOMMAG channel. Then MAL will reset the
READY bit
in
all the remaining buffer descriptors of the current packet.
In
addition, MAL will write
the status to
all the buffer descriptors. On the next service of this channel, MAL will fetch the first
descriptor of the next packet.
Preliminary
Memory Access Layer
20-11