From: John Fastabend <john.fastab...@gmail.com>
Date: Fri, 02 Dec 2016 12:49:45 -0800

> +     if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
> +             sg_init_one(&sg, &offloads, sizeof(uint64_t));
> +             if (!virtnet_send_command(vi,
> +                                       VIRTIO_NET_CTRL_GUEST_OFFLOADS,
> +                                       VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET,
> +                                       &sg)) {
> +                     dev_warn(&netdev->dev,
> +                              "Failed to set guest offloads by virtnet 
> command.\n");
> +                     return -EINVAL;
> +             }
> +     } else if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS) &&
> +                !virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {

Hmmm, to me this reads as:

        if (X) {
         ...
        else if (X && ...) {

I don't see how the second basic block can ever execute.  If the virtio
has the VIRTIO_NET_F_CTRL_GUEST_OFFLOADS feature, we will execute only
the first basic block.

Maybe I misunderstand the logic for whatever reason.

Reply via email to