--- 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(-)
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