The "power management queue" is a mechanism to watch associated STA's sleep transitions. It is also used to suppress frames to a STA that went to sleep that were queued on the DMA queues before that STA went to sleep. These will be reported with a corresponding suppression reason in the transmit status.

Driver Use

The PMQ is used in the following ways.

If the PMQ is not used, the driver can set the "Discard PMQ" MAC control bit to stop the microcode from inserting entries into the PMQ.

"Power Management Queue Entries Available" Interrupt

When this interrupt comes in, the driver can read new entries from the PMQ by reading the PMQ host status register (32 bits). The read word has the following fields:

Bit mask



PMQ data (from ucode register 0x07EA)


power management entry for BSS config (not supported by all microcodes, multi-BSS related?)


STA didn't acknowledge ATIM


STA disassociated/deauthenticated


STA entered sleep


STA woke up


PMQ control bits, can be written via "PMQ control" register


PMQ not empty


PMQ overflowed


delete entries head..current read pointer - 1


delete head entry

When reading a word, first check whether there is any data by checking the "PMQ not empty" bit. If this bit is set, then the PMQ data is valid and the corresponding MAC address can be read from the "PMQ pattern" registers, the address is contained in the 4 bytes of the low and lower 2 bytes of the high register.

In order to delete all entries, read the PMQ host status register until the bit 0x0008 shuts off (READ pointer now points to the entry after the last!) and then write 0x0002 to the PMQ control register to delete all entries.

[TBC after lunch or so]

Exported/Archived from the wiki to HTML on 2016-10-27