具有硬件队列的 RSS 可提高相对于单个硬件接收队列解决方案的 RSS 的系统性能。 支持硬件队列的 NIC 将收到的数据分配给多个接收队列。 接收队列与 CPU 相关联。 NIC 根据哈希值和间接表将接收的数据分配给 CPU。
下图展示了带有 NIC 接收队列的 RSS。
              
               
              
              
            
在图中,虚线箭头表示接收处理的备用路径。 RSS 无法控制接收初始 ISR 调用的 CPU。 驱动程序不必对数据进行排队,因此它可以立即在正确的 CPU 上计划初始 DPC。
每个中断都将重复以下过程:
- The NIC: - 使用 DMA 填充已接收数据的缓冲区。 - 微型端口驱动程序在初始化期间在共享内存中分配了接收缓冲区。 
- 计算哈希值。 
- 对 CPU 的缓冲区进行排队,并向微型端口驱动程序提供队列分配。 - 例如,NIC 可以在收到一些数据包后循环步骤 1-3 和 DMA CPU 分配列表。 特定机制留给 NIC 设计。 
- 中断系统。 - 处理系统在一个中断中接收到的缓冲区,并将其分配到多个 CPU。 
 
- NDIS 在系统确定的 CPU 上调用微型端口驱动程序的 MiniportInterrupt 函数 (ISR)。 
- 微型端口驱动程序请求 NDIS 对具有非空队列的每个 CPU 进行排队延迟过程调用(DPC)。 - 请注意,在驱动程序启用中断之前,所有 DPC 都必须完成。 此外,请注意,ISR 可能在没有要处理的缓冲区的 CPU 上运行。 
- NDIS 为每个排队的 DPC 调用 MiniportInterruptDPC 函数。 给定 CPU 上的 DPC: - 生成其队列中所有接收缓冲区的接收描述符,并指示驱动程序堆栈上的数据。 - 如需详细信息,请参阅 指示 RSS 接收数据。 
- 如果这是最后一个完成的 DPC,则启用中断。 此中断已完成,进程将再次启动。 驱动程序必须使用原子操作来标识最后完成的 DPC。 例如,驱动程序可以使用 NdisInterlockedDecrement 函数实现原子计数器。