diff options
author | Stefan Hajnoczi <stefanha@redhat.com> | 2014-02-20 12:14:07 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2014-02-25 14:31:05 +0100 |
commit | d6085e3ace20bc9b0fa625d8d79b22668710e217 (patch) | |
tree | 96a930a0ad6f56f61725189fdfe9a3c6f4a901e9 /hw/net | |
parent | 0a985b37272b563b1f8414431c6064eb1aa0c97b (diff) | |
download | hqemu-d6085e3ace20bc9b0fa625d8d79b22668710e217.zip hqemu-d6085e3ace20bc9b0fa625d8d79b22668710e217.tar.gz |
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 <stefanha@redhat.com>
Diffstat (limited to 'hw/net')
-rw-r--r-- | hw/net/virtio-net.c | 12 | ||||
-rw-r--r-- | hw/net/vmxnet3.c | 18 |
2 files changed, 15 insertions, 15 deletions
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index cda8c75..9218a09 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -325,7 +325,7 @@ static void peer_test_vnet_hdr(VirtIONet *n) return; } - n->has_vnet_hdr = qemu_peer_has_vnet_hdr(nc); + n->has_vnet_hdr = qemu_has_vnet_hdr(nc->peer); } static int peer_has_vnet_hdr(VirtIONet *n) @@ -338,7 +338,7 @@ static int peer_has_ufo(VirtIONet *n) if (!peer_has_vnet_hdr(n)) return 0; - n->has_ufo = qemu_peer_has_ufo(qemu_get_queue(n->nic)); + n->has_ufo = qemu_has_ufo(qemu_get_queue(n->nic)->peer); return n->has_ufo; } @@ -357,8 +357,8 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs) nc = qemu_get_subqueue(n->nic, i); if (peer_has_vnet_hdr(n) && - qemu_peer_has_vnet_hdr_len(nc, n->guest_hdr_len)) { - qemu_peer_set_vnet_hdr_len(nc, n->guest_hdr_len); + qemu_has_vnet_hdr_len(nc->peer, n->guest_hdr_len)) { + qemu_set_vnet_hdr_len(nc->peer, n->guest_hdr_len); n->host_hdr_len = n->guest_hdr_len; } } @@ -459,7 +459,7 @@ static uint32_t virtio_net_bad_features(VirtIODevice *vdev) static void virtio_net_apply_guest_offloads(VirtIONet *n) { - qemu_peer_set_offload(qemu_get_subqueue(n->nic, 0), + qemu_set_offload(qemu_get_subqueue(n->nic, 0)->peer, !!(n->curr_guest_offloads & (1ULL << VIRTIO_NET_F_GUEST_CSUM)), !!(n->curr_guest_offloads & (1ULL << VIRTIO_NET_F_GUEST_TSO4)), !!(n->curr_guest_offloads & (1ULL << VIRTIO_NET_F_GUEST_TSO6)), @@ -1540,7 +1540,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp) peer_test_vnet_hdr(n); if (peer_has_vnet_hdr(n)) { for (i = 0; i < n->max_queues; i++) { - qemu_peer_using_vnet_hdr(qemu_get_subqueue(n->nic, i), true); + qemu_using_vnet_hdr(qemu_get_subqueue(n->nic, i)->peer, true); } n->host_hdr_len = sizeof(struct virtio_net_hdr); } else { diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c index 0524684..5be807c 100644 --- a/hw/net/vmxnet3.c +++ b/hw/net/vmxnet3.c @@ -1290,12 +1290,12 @@ static void vmxnet3_update_features(VMXNET3State *s) s->lro_supported, rxcso_supported, s->rx_vlan_stripping); if (s->peer_has_vhdr) { - qemu_peer_set_offload(qemu_get_queue(s->nic), - rxcso_supported, - s->lro_supported, - s->lro_supported, - 0, - 0); + qemu_set_offload(qemu_get_queue(s->nic)->peer, + rxcso_supported, + s->lro_supported, + s->lro_supported, + 0, + 0); } } @@ -1885,7 +1885,7 @@ static bool vmxnet3_peer_has_vnet_hdr(VMXNET3State *s) { NetClientState *nc = qemu_get_queue(s->nic); - if (qemu_peer_has_vnet_hdr(nc)) { + if (qemu_has_vnet_hdr(nc->peer)) { return true; } @@ -1933,10 +1933,10 @@ static void vmxnet3_net_init(VMXNET3State *s) s->lro_supported = false; if (s->peer_has_vhdr) { - qemu_peer_set_vnet_hdr_len(qemu_get_queue(s->nic), + qemu_set_vnet_hdr_len(qemu_get_queue(s->nic)->peer, sizeof(struct virtio_net_hdr)); - qemu_peer_using_vnet_hdr(qemu_get_queue(s->nic), 1); + qemu_using_vnet_hdr(qemu_get_queue(s->nic)->peer, 1); } qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a); |