The completion queue manager register block has a header with type 0x0000C020, version 0x00000400, and indicates the location of the completion queue manager registers and number of completion queues.
The base address field contains the base address of the ring buffer as well as the VF ID. The base address must be aligned to a 4096 byte boundary and sits in bits 63:12, leaving room for the VF ID in bits 11:0. The base address is read-only when the queue is enabled. The VF ID field is read-only; use the set VF ID command to change the VF ID.
The control/status field contains control and status information for the queue, and the EQN field contains the corresponding event queue number. All fields are read-only; use commands to set the size and EQN and to enable/disable and arm/disarm the queue.
The pointers field contains the queue producer and consumer pointers. Bits 15:0 are the producer pointer, while bits 31:16 are the consumer pointer. Both fields are read-only; use the set prod and cons pointer commands to update the pointers.
The set VF ID command is used to set the VF ID for the queue. Allowed when queue is disabled and inactive.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0x8001 VF ID
============== ==============
..object:: Set size
The set size command is used to set the size of the ring buffer as the log base 2 of the number of elements. Allowed when queue is disabled and inactive.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0x8002 Log size
============== ==============
..object:: Set EQN
The set EQN command is used to set the EQN for events generated by the queue. Allowed when queue is disabled and inactive.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0xC0 EQN
====== ======================
..object:: Set prod pointer
The set producer pointer command is used to set the queue producer pointer. Allowed when queue is disabled and inactive.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0x8080 Prod pointer
============== ==============
..object:: Set cons pointer
The set consumer pointer command is used to set the queue consumer pointer. Allowed at any time.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0x8090 Cons pointer
============== ==============
..object:: Set cons pointer, arm
The set consumer pointer, arm command is used to set the queue consumer pointer and simultaneously re-arm the queue. Allowed at any time.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0x8091 Cons pointer
============== ==============
..object:: Set enable
The set enable command is used to enable or disable the queue. Allowed at any time.
..table::
====== ====== ====== ======
31..24 23..16 15..8 7..0
====== ====== ====== ======
0x400001 Enable
====================== ======
..object:: Set arm
The set arm command is used to arm or disarm the queue. Allowed at any time.