Technical information

8-12
AIC-6915 Ethernet LAN Controller Programmer’s Manual
11
R
X
D
ESC
Q
UEUE
1P
TRS
(offset E8h): This register contains the consumer and producer
indices for the first Receive Buffer Descriptor Queue. Initialization of this register
depends on the choice of the receive model - producer-consumer versus polling.
Required Fields:
RxDescQ1Consumer = 0: Initialize the consumer index to zero.
RxDescQ1Producer = 0: In the producer-consumer model, initialize the producer
index to zero to indicate that the queue is empty. For the polling model, initialize
the producer index to any value. The Valid bit in the Receive Buffer descriptor is
used to determine buffer availability.
12
R
X
D
ESC
Q
UEUE
2P
TRS
(offset ECh): This register contains the consumer and
producer indices for the second Receive Buffer Descriptor Queue. It is required only
if two queues have been implemented. Initialization of this register depends on the
choice of the receive model - producer-consumer versus polling
.
Required Fields:
RxDescQ2Consumer = 0: Initialize the consumer index to zero.
RxDescQ2Producer = 0: In the producer-consumer model, initialize the producer
index to zero to indicate that the queue is empty. For the polling model, initialize
the producer index to any value. The Valid bit in the Receive Buffer descriptor is
used to determine buffer availability.
13
R
X
A
DDRESS
F
ILTERING
C
TRL
(offset F4h): This register sets frame acceptance criteria.
The exact settings depend on the address filtering appropriate for the driver
environment.
Example:
// Receive initialization example
// 4 byte Receive Completion Descriptors (type 0)
// Single Receive Completion Descriptor Queue
// Single Receive Buffer Descriptor Queue
// 2048 entries in Receive Buffer Descriptor Queue
// Use receive polling model
// Perfect address filtering
// Allocate memory for RxCompletionQueue1
AIC6915_ALLOC_MEMORY(&Status, &RxCompletionQ, 4 * 1024);
// 4 byte descriptor,
// 1K fixed size queue
// Initialize RxCompletionQueue1Ctrl
// set the threshold based on a registry entry
RxCompletionQueue1CtrlValue.RxCompletionQ1Threshold =
Adapter->RxCompletionQ1Threshold;
// use a Type 0 descriptor (one word)
RxCompletionQueue1CtrlValue.RxCompletionQ1Type = 0;
// software does not write the producer index
RxCompletionQueue1CtrlValue.RxCompletionQ1ProducerWe = 0;
// use 32-bit addressing for the completion queue
RxCompletionQueue1CtrlValue.RxCompletionQ1_64bitAddress = 0;