
Am79C965A
D-3
of the application buffer space. This operation is in-
terleaved with the C7 and C8 operations.
C8: The PCnet-32 controller will perform data DMA to
the last buffer, whose pointer is pointing to applica-
tion space. Data entering the last buffer will not
need the infamous
“
double copy
”
that is required by
existing drivers, since it is being placed directly into
the application buffer space.
N2: The message on the wire ends.
S7: When the driver completes the copy of buffer num-
ber 2 data to the application buffer space, it begins
polling descriptor number 3.
C9: When the PCnet-32 controller has finished all data
DMA operations, it writes status and changes own-
ership of descriptor number 3.
S8: The driver sees that the ownership of descriptor
number 3 has changed, and it calls the application
to tell the application that a frame has arrived.
S9: The application processes the received frame and
generates the next TX frame, placing it into a TX
buffer.
S10:The driver sets up the TX descriptor for the
PCnet-32 controller.
Figure 1. LAPP Timeline
Buffer
#1
Ethernet
Controller
activity:
Software
activity:
Buffer
#2
Buffer
#3
S0: Driver is idle.
C1: Controller is performing intermittent
bursts of DMA to fill data buffer #1.
Ethernet
Wire
activity:
N0: Packet preamble, SFD
and destination address
are arriving.
C3: SRP interrupt
is generated.
C2: Controller writes descriptor #1.
C5: Controller is performing intermittent
bursts of DMA to fill data buffer #2.
S1: Interrupt latency.
S3: Driver writes modified application
pointer to descriptor #3.
S2: Driver call to application to
get application buffer pointer.
C8: Controller is performing intermittent
bursts of DMA to fill data buffer #3.
N1: 64th byte of packet
data arrives.
{
S4: Driver copies data from buffer #1 to the application buffer.
} {
S5: Driver polls descriptor #2.
S7: Driver polls descriptor of buffer #3.
S8: Driver calls application
to tell application that
S6: Driver copies data from buffer #2 to the application buffer.
C9: Controller writes descriptor #3.
C0: Lookahead to descriptor #2.
S9: Application processes packet, generates TX packet.
S10: Driver sets up TX descriptor.
p
C4: Lookahead to descriptor #3 (OWN).
}
C6: "Last chance" lookahead to
descriptor #3 (OWN).
C7: Controller writes descriptor #2.
N2: EOM
18219-76