
AMD
D-3
Am79C965
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.
18219B-76
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.
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.
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
packet has arrived.
S6: Driver copies data from buffer #2 to the application buffer.
C9: Controller writes descriptor #3.
C0: Lookahead to descriptor #2.
C2: Controller writes descriptor #1.
S2: Driver call to application to
get application buffer pointer.
{
S9: Application processes packet, generates TX packet.
S10: Driver sets up TX descriptor.
packet
data
arriving
C4: Lookahead to descriptor #3 (
OWN).
C6: "Last chance" lookahead to
descriptor #3 (OWN).
C7: Controller writes descriptor #2.
}
}{
{
N2: EOM
Figure 1. LAPP Timeline