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 >