Rather than updating rsp_event at the end of every poll, the code in
master sets it to req_prod_pvt during submission to attempt to defer events
until the last request has been processed.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
KeMemoryBarrier();
BlockRing->FrontRing.rsp_cons = rsp_cons;
- BlockRing->SharedRing->rsp_event = rsp_cons + 1;
}
done:
req = RING_GET_REQUEST(&BlockRing->FrontRing, BlockRing->FrontRing.req_prod_pvt);
__BlockRingInsert(BlockRing, Request, req);
KeMemoryBarrier();
- ++BlockRing->FrontRing.req_prod_pvt;
+ BlockRing->SharedRing->rsp_event = ++BlockRing->FrontRing.req_prod_pvt;
RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&BlockRing->FrontRing, Notify);
KeReleaseSpinLock(&BlockRing->Lock, Irql);