On Sat, Jan 19, 2019 at 05:37:31PM +0100, Stefan Fritsch wrote:
> ---
> sys/dev/pv/if_vio.c | 84 +++++++++++++++++++++++-------------------
> sys/dev/pv/vioblk.c | 3 ++
> sys/dev/pv/vioblkreg.h | 21 ++++++-----
> sys/dev/pv/virtio.c | 1 +
> 4 files changed, 62 insertions(+), 47 deletions(-)
>
ok mlarkin
> diff --git a/sys/dev/pv/if_vio.c b/sys/dev/pv/if_vio.c
> index a4cd80af62d..bfc7cfd1ddc 100644
> --- a/sys/dev/pv/if_vio.c
> +++ b/sys/dev/pv/if_vio.c
> @@ -68,25 +68,29 @@
> #define VIRTIO_NET_CONFIG_STATUS 6 /* 16bit */
>
> /* Feature bits */
> -#define VIRTIO_NET_F_CSUM (1ULL<<0)
> -#define VIRTIO_NET_F_GUEST_CSUM (1ULL<<1)
> -#define VIRTIO_NET_F_MAC (1ULL<<5)
> -#define VIRTIO_NET_F_GSO (1ULL<<6)
> -#define VIRTIO_NET_F_GUEST_TSO4 (1ULL<<7)
> -#define VIRTIO_NET_F_GUEST_TSO6 (1ULL<<8)
> -#define VIRTIO_NET_F_GUEST_ECN (1ULL<<9)
> -#define VIRTIO_NET_F_GUEST_UFO (1ULL<<10)
> -#define VIRTIO_NET_F_HOST_TSO4 (1ULL<<11)
> -#define VIRTIO_NET_F_HOST_TSO6 (1ULL<<12)
> -#define VIRTIO_NET_F_HOST_ECN (1ULL<<13)
> -#define VIRTIO_NET_F_HOST_UFO (1ULL<<14)
> -#define VIRTIO_NET_F_MRG_RXBUF (1ULL<<15)
> -#define VIRTIO_NET_F_STATUS (1ULL<<16)
> -#define VIRTIO_NET_F_CTRL_VQ (1ULL<<17)
> -#define VIRTIO_NET_F_CTRL_RX (1ULL<<18)
> -#define VIRTIO_NET_F_CTRL_VLAN (1ULL<<19)
> -#define VIRTIO_NET_F_CTRL_RX_EXTRA (1ULL<<20)
> -#define VIRTIO_NET_F_GUEST_ANNOUNCE (1ULL<<21)
> +#define VIRTIO_NET_F_CSUM (1ULL<<0)
> +#define VIRTIO_NET_F_GUEST_CSUM (1ULL<<1)
> +#define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS (1ULL<<2)
> +#define VIRTIO_NET_F_MTU (1ULL<<3)
> +#define VIRTIO_NET_F_MAC (1ULL<<5)
> +#define VIRTIO_NET_F_GSO (1ULL<<6)
> +#define VIRTIO_NET_F_GUEST_TSO4 (1ULL<<7)
> +#define VIRTIO_NET_F_GUEST_TSO6 (1ULL<<8)
> +#define VIRTIO_NET_F_GUEST_ECN (1ULL<<9)
> +#define VIRTIO_NET_F_GUEST_UFO (1ULL<<10)
> +#define VIRTIO_NET_F_HOST_TSO4 (1ULL<<11)
> +#define VIRTIO_NET_F_HOST_TSO6 (1ULL<<12)
> +#define VIRTIO_NET_F_HOST_ECN (1ULL<<13)
> +#define VIRTIO_NET_F_HOST_UFO (1ULL<<14)
> +#define VIRTIO_NET_F_MRG_RXBUF (1ULL<<15)
> +#define VIRTIO_NET_F_STATUS (1ULL<<16)
> +#define VIRTIO_NET_F_CTRL_VQ (1ULL<<17)
> +#define VIRTIO_NET_F_CTRL_RX (1ULL<<18)
> +#define VIRTIO_NET_F_CTRL_VLAN (1ULL<<19)
> +#define VIRTIO_NET_F_CTRL_RX_EXTRA (1ULL<<20)
> +#define VIRTIO_NET_F_GUEST_ANNOUNCE (1ULL<<21)
> +#define VIRTIO_NET_F_MQ (1ULL<<22)
> +#define VIRTIO_NET_F_CTRL_MAC_ADDR (1ULL<<23)
>
> /*
> * Config(8) flags. The lowest byte is reserved for generic virtio stuff.
> @@ -97,25 +101,29 @@
>
> static const struct virtio_feature_name virtio_net_feature_names[] = {
> #if VIRTIO_DEBUG
> - { VIRTIO_NET_F_CSUM, "CSum" },
> - { VIRTIO_NET_F_GUEST_CSUM, "GuestCSum" },
> - { VIRTIO_NET_F_MAC, "MAC" },
> - { VIRTIO_NET_F_GSO, "GSO" },
> - { VIRTIO_NET_F_GUEST_TSO4, "GuestTSO4" },
> - { VIRTIO_NET_F_GUEST_TSO6, "GuestTSO6" },
> - { VIRTIO_NET_F_GUEST_ECN, "GuestECN" },
> - { VIRTIO_NET_F_GUEST_UFO, "GuestUFO" },
> - { VIRTIO_NET_F_HOST_TSO4, "HostTSO4" },
> - { VIRTIO_NET_F_HOST_TSO6, "HostTSO6" },
> - { VIRTIO_NET_F_HOST_ECN, "HostECN" },
> - { VIRTIO_NET_F_HOST_UFO, "HostUFO" },
> - { VIRTIO_NET_F_MRG_RXBUF, "MrgRXBuf" },
> - { VIRTIO_NET_F_STATUS, "Status" },
> - { VIRTIO_NET_F_CTRL_VQ, "CtrlVQ" },
> - { VIRTIO_NET_F_CTRL_RX, "CtrlRX" },
> - { VIRTIO_NET_F_CTRL_VLAN, "CtrlVLAN" },
> - { VIRTIO_NET_F_CTRL_RX_EXTRA, "CtrlRXExtra" },
> - { VIRTIO_NET_F_GUEST_ANNOUNCE, "GuestAnnounce" },
> + { VIRTIO_NET_F_CSUM, "CSum" },
> + { VIRTIO_NET_F_GUEST_CSUM, "GuestCSum" },
> + { VIRTIO_NET_F_CTRL_GUEST_OFFLOADS, "CtrlGuestOffl" },
> + { VIRTIO_NET_F_MTU, "MTU", },
> + { VIRTIO_NET_F_MAC, "MAC" },
> + { VIRTIO_NET_F_GSO, "GSO" },
> + { VIRTIO_NET_F_GUEST_TSO4, "GuestTSO4" },
> + { VIRTIO_NET_F_GUEST_TSO6, "GuestTSO6" },
> + { VIRTIO_NET_F_GUEST_ECN, "GuestECN" },
> + { VIRTIO_NET_F_GUEST_UFO, "GuestUFO" },
> + { VIRTIO_NET_F_HOST_TSO4, "HostTSO4" },
> + { VIRTIO_NET_F_HOST_TSO6, "HostTSO6" },
> + { VIRTIO_NET_F_HOST_ECN, "HostECN" },
> + { VIRTIO_NET_F_HOST_UFO, "HostUFO" },
> + { VIRTIO_NET_F_MRG_RXBUF, "MrgRXBuf" },
> + { VIRTIO_NET_F_STATUS, "Status" },
> + { VIRTIO_NET_F_CTRL_VQ, "CtrlVQ" },
> + { VIRTIO_NET_F_CTRL_RX, "CtrlRX" },
> + { VIRTIO_NET_F_CTRL_VLAN, "CtrlVLAN" },
> + { VIRTIO_NET_F_CTRL_RX_EXTRA, "CtrlRXExtra" },
> + { VIRTIO_NET_F_GUEST_ANNOUNCE, "GuestAnnounce" },
> + { VIRTIO_NET_F_MQ, "MQ" },
> + { VIRTIO_NET_F_CTRL_MAC_ADDR, "CtrlMAC" },
> #endif
> { 0, NULL }
> };
> diff --git a/sys/dev/pv/vioblk.c b/sys/dev/pv/vioblk.c
> index fc46e52c09c..460c2dfa766 100644
> --- a/sys/dev/pv/vioblk.c
> +++ b/sys/dev/pv/vioblk.c
> @@ -82,6 +82,9 @@ struct virtio_feature_name vioblk_feature_names[] = {
> { VIRTIO_BLK_F_SCSI, "SCSI" },
> { VIRTIO_BLK_F_FLUSH, "Flush" },
> { VIRTIO_BLK_F_TOPOLOGY, "Topology" },
> + { VIRTIO_BLK_F_CONFIG_WCE, "ConfigWCE" },
> + { VIRTIO_BLK_F_DISCARD, "Discard" },
> + { VIRTIO_BLK_F_WRITE_ZEROES, "Write0s" },
> #endif
> { 0, NULL }
> };
> diff --git a/sys/dev/pv/vioblkreg.h b/sys/dev/pv/vioblkreg.h
> index dbfa37e60ea..307c66af535 100644
> --- a/sys/dev/pv/vioblkreg.h
> +++ b/sys/dev/pv/vioblkreg.h
> @@ -40,15 +40,18 @@
> #define VIRTIO_BLK_CONFIG_BLK_SIZE 20 /* 32bit */
>
> /* Feature bits */
> -#define VIRTIO_BLK_F_BARRIER (1ULL<<0)
> -#define VIRTIO_BLK_F_SIZE_MAX (1ULL<<1)
> -#define VIRTIO_BLK_F_SEG_MAX (1ULL<<2)
> -#define VIRTIO_BLK_F_GEOMETRY (1ULL<<4)
> -#define VIRTIO_BLK_F_RO (1ULL<<5)
> -#define VIRTIO_BLK_F_BLK_SIZE (1ULL<<6)
> -#define VIRTIO_BLK_F_SCSI (1ULL<<7)
> -#define VIRTIO_BLK_F_FLUSH (1ULL<<9)
> -#define VIRTIO_BLK_F_TOPOLOGY (1ULL<<10)
> +#define VIRTIO_BLK_F_BARRIER (1ULL<<0)
> +#define VIRTIO_BLK_F_SIZE_MAX (1ULL<<1)
> +#define VIRTIO_BLK_F_SEG_MAX (1ULL<<2)
> +#define VIRTIO_BLK_F_GEOMETRY (1ULL<<4)
> +#define VIRTIO_BLK_F_RO (1ULL<<5)
> +#define VIRTIO_BLK_F_BLK_SIZE (1ULL<<6)
> +#define VIRTIO_BLK_F_SCSI (1ULL<<7)
> +#define VIRTIO_BLK_F_FLUSH (1ULL<<9)
> +#define VIRTIO_BLK_F_TOPOLOGY (1ULL<<10)
> +#define VIRTIO_BLK_F_CONFIG_WCE (1ULL<<11)
> +#define VIRTIO_BLK_F_DISCARD (1ULL<<12)
> +#define VIRTIO_BLK_F_WRITE_ZEROES (1ULL<<13)
>
> /* Command */
> #define VIRTIO_BLK_T_IN 0
> diff --git a/sys/dev/pv/virtio.c b/sys/dev/pv/virtio.c
> index 18b78927180..40ea0b8a85e 100644
> --- a/sys/dev/pv/virtio.c
> +++ b/sys/dev/pv/virtio.c
> @@ -80,6 +80,7 @@ static const struct virtio_feature_name
> transport_feature_names[] = {
> { VIRTIO_F_RING_INDIRECT_DESC, "RingIndirectDesc"},
> { VIRTIO_F_RING_EVENT_IDX, "RingEventIdx"},
> { VIRTIO_F_BAD_FEATURE, "BadFeature"},
> + { VIRTIO_F_VERSION_1, "Version1"},
> { 0, NULL}
> };
>
> --
> 2.19.0
>