![]() |
![]() |
Next, descriptor regions are created using Qmss_insertMemoryRegionSubSys (or Qmss_insertMemoryRegion).
Next, descriptors are set up for DMAs using Cppi_initDescriptor or can be used as-is for software use only.
Single queues are allocated using Qmss_queueOpenSubSys (or Qmss_queueOpen). Contiguous blocks of queues are opened with Qmss_queueBlockOpenSubSys (or Qmss_queueBlockOpen).
Data transactions with virtual/physical address translation is are performed using Qmss_queuePush, Qmss_queuePushDesc, Qmss_queuePushDescSize, Qmss_queuePop, and Qmss_queuePopDescSize) depending whether sizes of the descriptors or payloads need to be set.
Data transactions that don't have virtual/physical address translation required is performed through Qmss_queuePopRaw and Qmss_queuePushDescSizeRaw.
Finally the QMSS LLD supplies APIs to control firmware running on PDSPs that support features like interrupt accumulation (see qmss_acc.h) and traffic shaping (QoS) (see qmss_qosSched.h qmss_qos.h).
Note on backwards/forwards compatibility strategy.
All APIs which contain "SubSys" in the name can address all QMSS subsystems on the device. Those APIs which do not have "SubSys" in the name nor take a Qmss_SubSysHnd nor a Qmss_QueueHnd can only address the global QMSS subsystem on the device.
There is no plan to deprecate the versions without "SubSys" in the name.