From e96dfd110ee1ad70e7ddbfae01ca95c66f70dac0 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Thu, 6 Feb 2014 17:02:15 +0100 Subject: net: change vnet-hdr TAP prototypes The tap_has_vnet_hdr() and tap_has_vnet_hdr_len() functions used to return int, even though they only return true/false values. This patch changes the prototypes to return bool. Signed-off-by: Vincenzo Maffione Signed-off-by: Stefan Hajnoczi --- include/net/tap.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/net/tap.h b/include/net/tap.h index a994f20..a3490a9 100644 --- a/include/net/tap.h +++ b/include/net/tap.h @@ -30,8 +30,8 @@ #include "qapi-types.h" bool tap_has_ufo(NetClientState *nc); -int tap_has_vnet_hdr(NetClientState *nc); -int tap_has_vnet_hdr_len(NetClientState *nc, int len); +bool tap_has_vnet_hdr(NetClientState *nc); +bool tap_has_vnet_hdr_len(NetClientState *nc, int len); void tap_using_vnet_hdr(NetClientState *nc, bool using_vnet_hdr); void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo); void tap_set_vnet_hdr_len(NetClientState *nc, int len); -- cgit v1.1 From 1f55ac4586bfae81b1e805fb2f0713cb21501ae2 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Thu, 6 Feb 2014 17:02:16 +0100 Subject: net: extend NetClientInfo for offloading Some new callbacks have been added to generalize the operations done by virtio-net and vmxnet3 frontends to manipulate TAP offloadings. Signed-off-by: Vincenzo Maffione Signed-off-by: Stefan Hajnoczi --- include/net/net.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'include') diff --git a/include/net/net.h b/include/net/net.h index 11e1468..7b25394 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -50,6 +50,12 @@ typedef void (NetCleanup) (NetClientState *); typedef void (LinkStatusChanged)(NetClientState *); typedef void (NetClientDestructor)(NetClientState *); typedef RxFilterInfo *(QueryRxFilter)(NetClientState *); +typedef bool (HasUfo)(NetClientState *); +typedef bool (HasVnetHdr)(NetClientState *); +typedef bool (HasVnetHdrLen)(NetClientState *, int); +typedef void (UsingVnetHdr)(NetClientState *, bool); +typedef void (SetOffload)(NetClientState *, int, int, int, int, int); +typedef void (SetVnetHdrLen)(NetClientState *, int); typedef struct NetClientInfo { NetClientOptionsKind type; @@ -62,6 +68,12 @@ typedef struct NetClientInfo { LinkStatusChanged *link_status_changed; QueryRxFilter *query_rx_filter; NetPoll *poll; + HasUfo *has_ufo; + HasVnetHdr *has_vnet_hdr; + HasVnetHdrLen *has_vnet_hdr_len; + UsingVnetHdr *using_vnet_hdr; + SetOffload *set_offload; + SetVnetHdrLen *set_vnet_hdr_len; } NetClientInfo; struct NetClientState { @@ -120,6 +132,13 @@ ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf, void qemu_purge_queued_packets(NetClientState *nc); void qemu_flush_queued_packets(NetClientState *nc); void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]); +bool qemu_peer_has_ufo(NetClientState *nc); +bool qemu_peer_has_vnet_hdr(NetClientState *nc); +bool qemu_peer_has_vnet_hdr_len(NetClientState *nc, int len); +void qemu_peer_using_vnet_hdr(NetClientState *nc, bool enable); +void qemu_peer_set_offload(NetClientState *nc, int csum, int tso4, int tso6, + int ecn, int ufo); +void qemu_peer_set_vnet_hdr_len(NetClientState *nc, int len); void qemu_macaddr_default_if_unset(MACAddr *macaddr); int qemu_show_nic_models(const char *arg, const char *const *models); void qemu_check_nic_model(NICInfo *nd, const char *model); -- cgit v1.1 From 3bac80d31af9d38d02e80d1541a1ea8e70067bad Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Thu, 6 Feb 2014 17:02:19 +0100 Subject: net: make tap offloading callbacks static Since TAP offloadings are manipulated through a new API, it's not necessary to export them in include/net/tap.h anymore. Signed-off-by: Vincenzo Maffione Signed-off-by: Stefan Hajnoczi --- include/net/tap.h | 6 ------ 1 file changed, 6 deletions(-) (limited to 'include') diff --git a/include/net/tap.h b/include/net/tap.h index a3490a9..6daeb42 100644 --- a/include/net/tap.h +++ b/include/net/tap.h @@ -29,12 +29,6 @@ #include "qemu-common.h" #include "qapi-types.h" -bool tap_has_ufo(NetClientState *nc); -bool tap_has_vnet_hdr(NetClientState *nc); -bool tap_has_vnet_hdr_len(NetClientState *nc, int len); -void tap_using_vnet_hdr(NetClientState *nc, bool using_vnet_hdr); -void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo); -void tap_set_vnet_hdr_len(NetClientState *nc, int len); int tap_enable(NetClientState *nc); int tap_disable(NetClientState *nc); -- cgit v1.1 From d6085e3ace20bc9b0fa625d8d79b22668710e217 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 20 Feb 2014 12:14:07 +0100 Subject: net: remove implicit peer from offload API The virtio_net offload APIs are used on the NIC's peer (i.e. the tap device). The API was defined to implicitly use nc->peer, saving the caller the trouble. This wasn't ideal because: 1. There are callers who have the peer but not the NIC. Currently they are forced to bypass the API and access peer->info->... directly. 2. The rest of the net.h API uses nc, not nc->peer, so it is inconsistent. This patch pushes nc->peer back up to callers. Signed-off-by: Stefan Hajnoczi --- include/net/net.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/net/net.h b/include/net/net.h index 7b25394..8166345 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -132,13 +132,13 @@ ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf, void qemu_purge_queued_packets(NetClientState *nc); void qemu_flush_queued_packets(NetClientState *nc); void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]); -bool qemu_peer_has_ufo(NetClientState *nc); -bool qemu_peer_has_vnet_hdr(NetClientState *nc); -bool qemu_peer_has_vnet_hdr_len(NetClientState *nc, int len); -void qemu_peer_using_vnet_hdr(NetClientState *nc, bool enable); -void qemu_peer_set_offload(NetClientState *nc, int csum, int tso4, int tso6, - int ecn, int ufo); -void qemu_peer_set_vnet_hdr_len(NetClientState *nc, int len); +bool qemu_has_ufo(NetClientState *nc); +bool qemu_has_vnet_hdr(NetClientState *nc); +bool qemu_has_vnet_hdr_len(NetClientState *nc, int len); +void qemu_using_vnet_hdr(NetClientState *nc, bool enable); +void qemu_set_offload(NetClientState *nc, int csum, int tso4, int tso6, + int ecn, int ufo); +void qemu_set_vnet_hdr_len(NetClientState *nc, int len); void qemu_macaddr_default_if_unset(MACAddr *macaddr); int qemu_show_nic_models(const char *arg, const char *const *models); void qemu_check_nic_model(NICInfo *nd, const char *model); -- cgit v1.1