virtio-net: introduce and use helper function for guest gso support checks
Probe routine is already several hundred lines. Use helper function for guest gso support check. Signed-off-by: Gavin Li <gavinl@nvidia.com> Reviewed-by: Gavi Teitz <gavi@nvidia.com> Reviewed-by: Parav Pandit <parav@nvidia.com> Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Reviewed-by: Si-Wei Liu <si-wei.liu@oracle.com> Message-Id: <20220914144911.56422-2-gavinl@nvidia.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
cdbd952bb7
commit
46cd26f410
@ -3682,6 +3682,14 @@ static int virtnet_validate(struct virtio_device *vdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool virtnet_check_guest_gso(const struct virtnet_info *vi)
|
||||
{
|
||||
return virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) ||
|
||||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6) ||
|
||||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ECN) ||
|
||||
virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_UFO);
|
||||
}
|
||||
|
||||
static int virtnet_probe(struct virtio_device *vdev)
|
||||
{
|
||||
int i, err = -ENOMEM;
|
||||
@ -3777,10 +3785,7 @@ static int virtnet_probe(struct virtio_device *vdev)
|
||||
spin_lock_init(&vi->refill_lock);
|
||||
|
||||
/* If we can receive ANY GSO packets, we must allocate large ones. */
|
||||
if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) ||
|
||||
virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) ||
|
||||
virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN) ||
|
||||
virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UFO))
|
||||
if (virtnet_check_guest_gso(vi))
|
||||
vi->big_packets = true;
|
||||
|
||||
if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF))
|
||||
|
Loading…
Reference in New Issue
Block a user