Adaptec 1737100 Programmer Manual - Page 180
Two Transmit Queues, Transmit Producer-Consumer Model
![]() |
UPC - 760884136362
View all Adaptec 1737100 manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 180 highlights
AIC-6915 Ethernet LAN Controller Programmer's Manual To convert the hardware Transmit Producer or Consumer index to a software index, multiply the hardware index by 8, and then divide by the calculated size of the descriptor. Refer to the Transmit DMA Buffer Descriptor Queue section in the Transmit Architecture chapter for a description of all fields in this descriptor type. Two Transmit Queues Only one Transmit Completion Descriptor Queue is available. Two Transmit Buffer Descriptor Queues are available, and are referred to as the low and high priority queues. Since the software is the producer of Transmit Buffer Descriptors, it is the responsibility of the driver to determine the priority of a given Transmit Buffer and to place it in the appropriate queue. If only one Transmit Buffer Descriptor Queue is needed, either the low or high priority queue may be used, as defined in the driver. When the transmit resource is returned to the driver, the queue is indicated in the Priority bit in the Completion Descriptor. Transmit Producer-Consumer Model The AIC-6915 uses a producer-consumer model to manage transmit resources. The driver is the producer of transmit packets, so the Transmit Buffer Descriptor producer index must be maintained by software. The hardware is the consumer of transmit buffers, and is responsible for maintaining the Transmit Buffer Descriptor consumer index. The AIC-6915 generates a Transmit Done or Transmit DMA interrupt and provides information in the Transmit Completion Descriptor Queue about the packet just transmitted. Therefore, the AIC-6915 is the producer of Transmit Completion Descriptors, and software is the consumer. When a descriptor has been filled with the transmit data, a new Transmit Producer Index (TxDescQueueProducerIndex, offset A0h) is written to inform the AIC-6915 to initiate the transmit process. The value written to this register is in multiples of the number of 8-byte blocks in the Transmit Buffer Descriptor. Therefore, the value of the Producer Index depends upon the size of the Transmit Buffer Descriptor. For example, if a Type 1 descriptor is specified with no skip field, each new transmit would cause the Transmit Producer Index to be incremented by 1 since the total descriptor size is 8 bytes. For a Type 0 descriptor with no skip field, the Transmit Producer Index is incremented by (NumberOfFragments + 1) for each packet. This is because each fragment uses eight bytes in the descriptor, and 8 additional bytes at the start of the descriptor contain the number of fragments and other information. A macro is the simplest way to implement this index calculation in the driver. Refer to the Transmit Buffer Descriptor Queue section above, and to the DDK for an example. The polling model is not available for transmit operation. 8-20
![](/manual_guide/products/adaptec-1737100-programmer-manual-d6d6d7d/180.png)