diff options
Diffstat (limited to 'sys/dev/virtio/network/if_vtnetvar.h')
| -rw-r--r-- | sys/dev/virtio/network/if_vtnetvar.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/sys/dev/virtio/network/if_vtnetvar.h b/sys/dev/virtio/network/if_vtnetvar.h index eb5e6784b07f..d5313c9af3cc 100644 --- a/sys/dev/virtio/network/if_vtnetvar.h +++ b/sys/dev/virtio/network/if_vtnetvar.h @@ -183,6 +183,7 @@ struct vtnet_softc { uint64_t vtnet_negotiated_features; struct vtnet_statistics vtnet_stats; struct callout vtnet_tick_ch; + struct task vtnet_announce_task; struct ifmedia vtnet_media; eventhandler_tag vtnet_vlan_attach; eventhandler_tag vtnet_vlan_detach; @@ -190,6 +191,18 @@ struct vtnet_softc { struct mtx vtnet_mtx; char vtnet_mtx_name[16]; uint8_t vtnet_hwaddr[ETHER_ADDR_LEN]; + + bus_dma_tag_t vtnet_rx_dmat; + struct mtx vtnet_rx_mtx; + + bus_dma_tag_t vtnet_tx_dmat; + struct mtx vtnet_tx_mtx; + + bus_dma_tag_t vtnet_hdr_dmat; + struct mtx vtnet_hdr_mtx; + + bus_dma_tag_t vtnet_ack_dmat; + struct mtx vtnet_ack_mtx; }; /* vtnet flag descriptions for use with printf(9) %b identifier. */ #define VTNET_FLAGS_BITS \ @@ -273,6 +286,10 @@ struct vtnet_tx_header { } vth_uhdr; struct mbuf *vth_mbuf; + + bus_dmamap_t dmap; + + bus_dmamap_t hdr_dmap; }; /* @@ -320,8 +337,10 @@ CTASSERT(sizeof(struct vtnet_mac_filter) <= PAGE_SIZE); VIRTIO_NET_F_MTU | \ VIRTIO_NET_F_CTRL_VQ | \ VIRTIO_NET_F_CTRL_RX | \ + VIRTIO_NET_F_CTRL_RX_EXTRA | \ VIRTIO_NET_F_CTRL_MAC_ADDR | \ VIRTIO_NET_F_CTRL_VLAN | \ + VIRTIO_NET_F_GUEST_ANNOUNCE | \ VIRTIO_NET_F_CSUM | \ VIRTIO_NET_F_HOST_TSO4 | \ VIRTIO_NET_F_HOST_TSO6 | \ @@ -353,6 +372,22 @@ CTASSERT(sizeof(struct vtnet_mac_filter) <= PAGE_SIZE); #define VTNET_LRO_FEATURES (VIRTIO_NET_F_GUEST_TSO4 | \ VIRTIO_NET_F_GUEST_TSO6 | VIRTIO_NET_F_GUEST_ECN) +/* + * Union of the offload-related features offered by the driver. As per spec, + * a device is permitted to reject an otherwise valid subset of its offered + * features by failing FEATURES_OK (v1.3 ยง2.2.2). Offloads are where this + * happens in practice, so feature negotiation retries without this entire + * group when the device rejects the first feature set. + * + * Must cover every offload-related bit in VTNET_COMMON_FEATURES. + */ +#define VTNET_OFFLOAD_FEATURES \ + (VIRTIO_NET_F_CSUM | \ + VIRTIO_NET_F_GUEST_CSUM | \ + VIRTIO_NET_F_CTRL_GUEST_OFFLOADS | \ + VTNET_TSO_FEATURES | \ + VTNET_LRO_FEATURES) + #define VTNET_MIN_MTU 68 #define VTNET_MAX_MTU 65536 #define VTNET_MAX_RX_SIZE 65550 |
