![](http://datasheet.mmic.net.cn/260000/AM79C971VCW_datasheet_15869133/AM79C971VCW_242.png)
D-6
Am79C971
descriptor, unless the previous STP descriptor in the
ring is also OWNED by the software.
When LAPPEN = 1, then hardware will use a modified
form of descriptor
parsing
as follows:
I
The controller will examine OWN and STP to deter-
mine where to begin placing an RCV frame. A new
RCV frame will only begin in a buffer that has
OWN = 1 and STP =1.
I
The controller will always obey the OWN bit for de-
termining whether or not it may use the next buffer
for a chain.
I
The controller will always mark the end of a frame
with either ENP = 1 or ERR = 1.
The controller will discard all descriptors with OWN = 1
and STP = 0 and move to the next descriptor when
searching for a place to begin a new frame. It discards
these descriptors by simply changing the ownership bit
from OWN = 1 to OWN = 0. Such a descriptor is unused
for receive purposes by the controller, and the driver
must recognize this. (The driver will recognize this if it
follows the software rules.)
The controller will ignore all descriptors with OWN = 0
and STP = 0 and move to the next descriptor when
searching for a place to begin a new frame. In other
words, the controller is allowed to skip entries in the
ring that it does not own, but only when it is looking for
a place to begin a new frame.
Some Examples of LAPP Descriptor
Interaction
Choose an expected frame size of 1060 bytes. Choose
buffer sizes of 800, 200, and 200 bytes.
I
Example 1
: Assume that a 1060 byte frame arrives
correctly, and that the timing of the early interrupt
and the software is smooth. The descriptors will have
changed from:
I
Example 2
: Assume that instead of the expected 1060
byte frame, a 900 byte frame arrives, either because
there was an error in the network, or because this is
the last frame in a file transmission sequence
Note that the Am79C971 controller might write a ZERO
to ENP location in the third descriptor. Here are the two
possibilities:
1. If the controller finishes the data transfers into buffer
number 2 after the driver writes the application mod-
ified buffer pointer into the third descriptor, then the
controller will write a ZERO to ENP for this buffer and
will write a ZERO to OWN and STP.
Descriptor
Number
Before the Frame Arrives
OWN
STP
After the Frame Arrives
OWN
Comments (After
Frame Arrival)
ENP
a
x
X
X
X
STP
ENP
b
0
0
1
X
1
2
3
4
1
1
0
1
1
0
0
1
0
0
0
1
1
0
0
1
Bytes 1-800
Bytes 801-1000
Bytes 1001-1060
Controller
’
s cur-
rent location
Not yet used
Not yet used
Net yet used
5
6
1
0
1
0
0
1
X
X
X
1
0
1
0
0
1
X
X
X
etc.
a. & b. ENP or ERR.
Descriptor
Number
Before the Frame Arrives
OWN
STP
After the Frame Arrives
OWN
Comments (After
Frame Arrival)
ENP
a
x
X
X
STP
ENP
b
0
0
*
X
1
2
3
1
1
0
1
0
0
0
0
0
1
0
0
Bytes 1-800
Bytes 801-1000
Discarded buffer
4
1
1
X
1
1
Controller
’
s cur-
rent location
Not yet used
Not yet used
Net yet used
5
6
1
0
1
0
0
1
X
X
X
1
0
1
0
0
1
X
X
X
etc.
a. & b. ENP or ERR.