Virtio used_event refers to pushed buffers not new idx value

This commit is contained in:
Ernest Wong 2018-05-31 22:51:50 +12:00 committed by Fabian
parent 9ad3df28c8
commit b09935f264

View file

@ -1213,13 +1213,14 @@ VirtQueue.prototype.flush_replies = function()
{
var used_event = this.avail.get_used_event();
// Fire irq when idx has reached or gone past used_event.
var has_passed = old_idx < used_event && used_event <= new_idx;
// Fire irq when idx values associated with the pushed reply buffers
// has reached or gone past used_event.
var has_passed = old_idx <= used_event && used_event < new_idx;
// Has overflowed? Assumes num_staged_replies > 0.
if(new_idx <= old_idx)
{
has_passed = used_event <= new_idx || old_idx < used_event;
has_passed = used_event < new_idx || old_idx <= used_event;
}
if(has_passed)