diff options
author | KONRAD Frederic <fred.konrad@greensocs.com> | 2013-04-11 16:29:59 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-04-17 10:28:59 -0500 |
commit | 74b4fe3d79098b72813e461af565557bb5d35649 (patch) | |
tree | 26bfa2ad91aeec82a3650ee592321bba5b2b1d20 /hw | |
parent | e37da3945fa2fde161e1b217f937fc318c4b7639 (diff) |
virtio-net-s390: switch to the new API.
Here the virtio-net-s390 is modified for the new API. The device
virtio-net-s390 extends virtio-s390-device as before. It creates and
connects a virtio-net-device during the init. The properties are not modified.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Message-id: 1365690602-22729-5-git-send-email-fred.konrad@greensocs.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/s390x/s390-virtio-bus.c | 29 | ||||
-rw-r--r-- | hw/s390x/s390-virtio-bus.h | 13 |
2 files changed, 30 insertions, 12 deletions
diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c index 2708af8270..ca0e301f7b 100644 --- a/hw/s390x/s390-virtio-bus.c +++ b/hw/s390x/s390-virtio-bus.c @@ -149,17 +149,25 @@ static int s390_virtio_device_init(VirtIOS390Device *dev, VirtIODevice *vdev) return 0; } -static int s390_virtio_net_init(VirtIOS390Device *dev) +static int s390_virtio_net_init(VirtIOS390Device *s390_dev) { - VirtIODevice *vdev; + VirtIONetS390 *dev = VIRTIO_NET_S390(s390_dev); + DeviceState *vdev = DEVICE(&dev->vdev); - vdev = virtio_net_init((DeviceState *)dev, &dev->nic, &dev->net, - dev->host_features); - if (!vdev) { + virtio_net_set_config_size(&dev->vdev, s390_dev->host_features); + qdev_set_parent_bus(vdev, BUS(&s390_dev->bus)); + if (qdev_init(vdev) < 0) { return -1; } - return s390_virtio_device_init(dev, vdev); + return s390_virtio_device_init(s390_dev, VIRTIO_DEVICE(vdev)); +} + +static void s390_virtio_net_instance_init(Object *obj) +{ + VirtIONetS390 *dev = VIRTIO_NET_S390(obj); + object_initialize(OBJECT(&dev->vdev), TYPE_VIRTIO_NET); + object_property_add_child(obj, "virtio-backend", OBJECT(&dev->vdev), NULL); } static int s390_virtio_blk_init(VirtIOS390Device *s390_dev) @@ -425,9 +433,9 @@ static const VirtIOBindings virtio_s390_bindings = { }; static Property s390_virtio_net_properties[] = { - DEFINE_NIC_PROPERTIES(VirtIOS390Device, nic), + DEFINE_NIC_PROPERTIES(VirtIONetS390, vdev.nic_conf), DEFINE_VIRTIO_NET_FEATURES(VirtIOS390Device, host_features), - DEFINE_VIRTIO_NET_PROPERTIES(VirtIOS390Device, net), + DEFINE_VIRTIO_NET_PROPERTIES(VirtIONetS390, vdev.net_conf), DEFINE_PROP_END_OF_LIST(), }; @@ -441,9 +449,10 @@ static void s390_virtio_net_class_init(ObjectClass *klass, void *data) } static const TypeInfo s390_virtio_net = { - .name = "virtio-net-s390", + .name = TYPE_VIRTIO_NET_S390, .parent = TYPE_VIRTIO_S390_DEVICE, - .instance_size = sizeof(VirtIOS390Device), + .instance_size = sizeof(VirtIONetS390), + .instance_init = s390_virtio_net_instance_init, .class_init = s390_virtio_net_class_init, }; diff --git a/hw/s390x/s390-virtio-bus.h b/hw/s390x/s390-virtio-bus.h index 1daf753884..925ed2b0b1 100644 --- a/hw/s390x/s390-virtio-bus.h +++ b/hw/s390x/s390-virtio-bus.h @@ -89,9 +89,7 @@ struct VirtIOS390Device { ram_addr_t feat_offs; uint8_t feat_len; VirtIODevice *vdev; - NICConf nic; uint32_t host_features; - virtio_net_conf net; VirtIORNGConf rng; VirtioBusState bus; }; @@ -151,4 +149,15 @@ typedef struct VirtIOSerialS390 { VirtIOSerial vdev; } VirtIOSerialS390; +/* virtio-net-s390 */ + +#define TYPE_VIRTIO_NET_S390 "virtio-net-s390" +#define VIRTIO_NET_S390(obj) \ + OBJECT_CHECK(VirtIONetS390, (obj), TYPE_VIRTIO_NET_S390) + +typedef struct VirtIONetS390 { + VirtIOS390Device parent_obj; + VirtIONet vdev; +} VirtIONetS390; + #endif |