VMQ Interrupt Requirements

A miniport driver that supports the virtual machine queue (VMQ) functionality must also support the following interrupt allocation requirements:

  • The miniport driver must support MSI-X. The driver must set the NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED flag in the SupportedQueueProperties member of the NDIS_RECEIVE_FILTER_CAPABILITIES structure.

    The driver returns this structure in the NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES structure that the driver uses in its call to the NdisMSetMiniportAttributes function.

  • The miniport driver must call the NdisGetRssProcessorInformation function to obtain processor information for allocating interrupt vectors. It must not rely on registry keys or information obtained from other sources for interrupt allocation.

    NdisGetRssProcessorInformation returns information about the set of processors that a miniport driver can use for RSS and VMQ. This information is contained in an NDIS_RSS_PROCESSOR_INFO structure.

  • The miniport driver should allocate only one interrupt vector for each processor that is specified in the NDIS_RSS_PROCESSOR_INFO structure.

    The miniport driver should allocate no more than two interrupt vectors for other events that are not related to send or receive packet operations. For example, the driver could allocate an IDT for link status events.

  • The miniport driver must support the minimum number of MSI-X interrupt vectors as defined in the following table:

    Number of queues Minimum number of required MSI-X interrupt vectors

    1–16

    1–16

    17–64

    16–32

    65 or more

    32 or more