vhost: make error handling consistent in Rx path
In the non-mergeable receive case, when copy_mbuf_to_desc() call fails the packet is skipped, the corresponding used element len field is set to vnet header size, and it continues with next packet/desc. It could be a problem because it does not know why it failed, and assume the desc buffer is large enough. In mergeable receive case, when copy_mbuf_to_desc_mergeable() fails, packets burst is simply stopped. This patch makes the non-mergeable error path to behave as the mergeable one, as it seems the safest way. Also, doing this way will simplify pending IOTLB miss requests handling. Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
This commit is contained in:
parent
94018cf3d5
commit
25bf7a0b09
@ -374,11 +374,8 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
|
||||
|
||||
err = copy_mbuf_to_desc(dev, vq, descs, pkts[i], desc_idx, sz);
|
||||
if (unlikely(err)) {
|
||||
used_idx = (start_idx + i) & (vq->size - 1);
|
||||
vq->used->ring[used_idx].len = dev->vhost_hlen;
|
||||
vhost_log_used_vring(dev, vq,
|
||||
offsetof(struct vring_used, ring[used_idx]),
|
||||
sizeof(vq->used->ring[used_idx]));
|
||||
count = i;
|
||||
break;
|
||||
}
|
||||
|
||||
if (i + 1 < count)
|
||||
|
Loading…
Reference in New Issue
Block a user