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.