3.1.1.1. PCIe* TLP Constructor
3.1.1.2. PCIe* TLP ID Generation
3.1.1.3. PCIe TX Credit Controller
3.1.1.4. PCIe* TX Scheduler
3.1.1.5. PCIe TLP Completer
3.1.1.6. PCIe RX Router
3.1.1.7. PCIe* MSI-X Controller
3.1.1.8. PCIe BAR0
3.1.1.9. PCIe Bursting Manager (BAM)
3.1.1.10. Completion Timeout Parser
3.1.1.11. Control Shadow Parser
4.2.1. Application Packet Receive Interface
4.2.2. Application Packet Transmit Interface
4.2.3. Control Shadow Interface
4.2.4. Transmit Flow Control Credit Interface
4.2.5. Completion Timeout Interface
4.2.6. PCIe* Miscellaneous Signals
4.2.7. Control and Status Register Responder Manager Interface
4.2.8. Bursting Manager Interface
5.1.1. Data Descriptors
Data descriptors are stored in the host memory as an array. sw_idx is the index used to access the array in the driver and starts with index 0. The descriptors also contain a field called DescrIDX, which is equivalent to hw_idx. hw_idx is also used, when setting the insert pointer in the hardware. As the first hw_idx starts with 1, an offset is needed to sync them: sw_idx = hw_idx - 1.
The driver provides a descriptor tracking index (sw_insert_hw_idx), which assists you to write to the next free descriptor. This index may be used as an input to set the hardware insert pointer. This allows you to prepare several descriptors in software, before updating the index to the hardware.