]> git.droids-corp.org - dpdk.git/blobdiff - drivers/net/virtio/virtqueue.h
virtio: optimize avail ring update
[dpdk.git] / drivers / net / virtio / virtqueue.h
index 4e9239e0b7e1485ad683c693be742cc1d327e71f..8c46a83d560ccdc4080b03e13b787541eb7f8ccf 100644 (file)
@@ -302,7 +302,8 @@ vq_update_avail_ring(struct virtqueue *vq, uint16_t desc_idx)
         * descriptor.
         */
        avail_idx = (uint16_t)(vq->vq_avail_idx & (vq->vq_nentries - 1));
-       vq->vq_ring.avail->ring[avail_idx] = desc_idx;
+       if (unlikely(vq->vq_ring.avail->ring[avail_idx] != desc_idx))
+               vq->vq_ring.avail->ring[avail_idx] = desc_idx;
        vq->vq_avail_idx++;
 }