* [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type.
@ 2013-05-15 12:12 fred.konrad
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name fred.konrad
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: fred.konrad @ 2013-05-15 12:12 UTC (permalink / raw)
To: qemu-devel, aliguori
Cc: peter.maydell, matrixs.zero, mark.burton, stefanha, cornelia.huck,
akong, fred.konrad
From: KONRAD Frederic <fred.konrad@greensocs.com>
This fixes this bug: https://bugs.launchpad.net/qemu/+bug/1179357
The name, and the type is replaced by virtio-net-x's id and virtio-net-x's type
to restore the behaviour of "info network" command.
Thanks,
Fred
KONRAD Frederic (2):
virtio-net: add virtio_net_set_netclient_name.
virtio-net-x: forward the netclient name and type.
hw/net/virtio-net.c | 45 ++++++++++++++++++++++++++++++++++++++++--
hw/s390x/s390-virtio-bus.c | 3 +++
hw/s390x/virtio-ccw.c | 3 +++
hw/virtio/virtio-pci.c | 3 +++
include/hw/virtio/virtio-net.h | 4 ++++
5 files changed, 56 insertions(+), 2 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name.
2013-05-15 12:12 [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type fred.konrad
@ 2013-05-15 12:12 ` fred.konrad
2013-05-15 13:16 ` Stefan Hajnoczi
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 2/2] virtio-net-x: forward the netclient name and type fred.konrad
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: fred.konrad @ 2013-05-15 12:12 UTC (permalink / raw)
To: qemu-devel, aliguori
Cc: peter.maydell, matrixs.zero, mark.burton, stefanha, cornelia.huck,
akong, fred.konrad
From: KONRAD Frederic <fred.konrad@greensocs.com>
This adds virtio_net_set_netclient_name, which is used to set the
name and type shown in "info network" command.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
hw/net/virtio-net.c | 45 ++++++++++++++++++++++++++++++++++++++++--
include/hw/virtio/virtio-net.h | 4 ++++
2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 9f18d6a..bed0822 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -1275,6 +1275,29 @@ void virtio_net_set_config_size(VirtIONet *n, uint32_t host_features)
n->config_size = config_size;
}
+void virtio_net_set_netclient_name(VirtIONet *n, const char *name,
+ const char *type)
+{
+ /*
+ * The name can be NULL, the netclient name will be type.x.
+ */
+ assert(type != NULL);
+
+ if (n->netclient_name) {
+ g_free(n->netclient_name);
+ n->netclient_name = NULL;
+ }
+ if (n->netclient_type) {
+ g_free(n->netclient_type);
+ n->netclient_type = NULL;
+ }
+
+ if (name != NULL) {
+ n->netclient_name = g_strdup(name);
+ }
+ n->netclient_type = g_strdup(type);
+}
+
static int virtio_net_device_init(VirtIODevice *vdev)
{
int i;
@@ -1315,8 +1338,17 @@ static int virtio_net_device_init(VirtIODevice *vdev)
memcpy(&n->mac[0], &n->nic_conf.macaddr, sizeof(n->mac));
n->status = VIRTIO_NET_S_LINK_UP;
- n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
- object_get_typename(OBJECT(qdev)), qdev->id, n);
+ if (n->netclient_type) {
+ /*
+ * Happen when virtio_net_set_netclient_name has been called.
+ */
+ n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
+ n->netclient_type, n->netclient_name, n);
+ } else {
+ n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
+ object_get_typename(OBJECT(qdev)), qdev->id, n);
+ }
+
peer_test_vnet_hdr(n);
if (peer_has_vnet_hdr(n)) {
for (i = 0; i < n->max_queues; i++) {
@@ -1357,6 +1389,15 @@ static int virtio_net_device_exit(DeviceState *qdev)
unregister_savevm(qdev, "virtio-net", n);
+ if (n->netclient_name) {
+ g_free(n->netclient_name);
+ n->netclient_name = NULL;
+ }
+ if (n->netclient_type) {
+ g_free(n->netclient_type);
+ n->netclient_type = NULL;
+ }
+
g_free(n->mac_table.macs);
g_free(n->vlans);
diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
index ce4ab50..beeead7 100644
--- a/include/hw/virtio/virtio-net.h
+++ b/include/hw/virtio/virtio-net.h
@@ -188,6 +188,8 @@ typedef struct VirtIONet {
uint16_t max_queues;
uint16_t curr_queues;
size_t config_size;
+ char *netclient_name;
+ char *netclient_type;
} VirtIONet;
#define VIRTIO_NET_CTRL_MAC 1
@@ -255,5 +257,7 @@ struct virtio_net_ctrl_mq {
DEFINE_PROP_STRING("tx", _state, _field.tx)
void virtio_net_set_config_size(VirtIONet *n, uint32_t host_features);
+void virtio_net_set_netclient_name(VirtIONet *n, const char *name,
+ const char *type);
#endif
--
1.7.11.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH for-1.5 2/2] virtio-net-x: forward the netclient name and type.
2013-05-15 12:12 [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type fred.konrad
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name fred.konrad
@ 2013-05-15 12:12 ` fred.konrad
2013-05-15 13:16 ` [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id " Stefan Hajnoczi
2013-05-16 12:50 ` Anthony Liguori
3 siblings, 0 replies; 7+ messages in thread
From: fred.konrad @ 2013-05-15 12:12 UTC (permalink / raw)
To: qemu-devel, aliguori
Cc: peter.maydell, matrixs.zero, mark.burton, stefanha, cornelia.huck,
akong, fred.konrad
From: KONRAD Frederic <fred.konrad@greensocs.com>
This forwards the name and the type of virtio-net-x to fix the bad
behaviour of "info network" command.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
hw/s390x/s390-virtio-bus.c | 3 +++
hw/s390x/virtio-ccw.c | 3 +++
hw/virtio/virtio-pci.c | 3 +++
3 files changed, 9 insertions(+)
diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
index 5a3d97c..a1cdfb0 100644
--- a/hw/s390x/s390-virtio-bus.c
+++ b/hw/s390x/s390-virtio-bus.c
@@ -152,10 +152,13 @@ static int s390_virtio_device_init(VirtIOS390Device *dev, VirtIODevice *vdev)
static int s390_virtio_net_init(VirtIOS390Device *s390_dev)
{
+ DeviceState *qdev = DEVICE(s390_dev);
VirtIONetS390 *dev = VIRTIO_NET_S390(s390_dev);
DeviceState *vdev = DEVICE(&dev->vdev);
virtio_net_set_config_size(&dev->vdev, s390_dev->host_features);
+ virtio_net_set_netclient_name(&dev->vdev, qdev->id,
+ object_get_typename(OBJECT(qdev)));
qdev_set_parent_bus(vdev, BUS(&s390_dev->bus));
if (qdev_init(vdev) < 0) {
return -1;
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 76e6d32..5f5e267 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -550,10 +550,13 @@ static int virtio_ccw_exit(VirtioCcwDevice *dev)
static int virtio_ccw_net_init(VirtioCcwDevice *ccw_dev)
{
+ DeviceState *qdev = DEVICE(ccw_dev);
VirtIONetCcw *dev = VIRTIO_NET_CCW(ccw_dev);
DeviceState *vdev = DEVICE(&dev->vdev);
virtio_net_set_config_size(&dev->vdev, ccw_dev->host_features[0]);
+ virtio_net_set_netclient_name(&dev->vdev, qdev->id,
+ object_get_typename(OBJECT(qdev)));
qdev_set_parent_bus(vdev, BUS(&ccw_dev->bus));
if (qdev_init(vdev) < 0) {
return -1;
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 113fbd9..70d2c6b 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -1398,10 +1398,13 @@ static Property virtio_net_properties[] = {
static int virtio_net_pci_init(VirtIOPCIProxy *vpci_dev)
{
+ DeviceState *qdev = DEVICE(vpci_dev);
VirtIONetPCI *dev = VIRTIO_NET_PCI(vpci_dev);
DeviceState *vdev = DEVICE(&dev->vdev);
virtio_net_set_config_size(&dev->vdev, vpci_dev->host_features);
+ virtio_net_set_netclient_name(&dev->vdev, qdev->id,
+ object_get_typename(OBJECT(qdev)));
qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus));
if (qdev_init(vdev) < 0) {
return -1;
--
1.7.11.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name.
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name fred.konrad
@ 2013-05-15 13:16 ` Stefan Hajnoczi
2013-05-15 13:28 ` KONRAD Frédéric
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Hajnoczi @ 2013-05-15 13:16 UTC (permalink / raw)
To: fred.konrad
Cc: peter.maydell, aliguori, matrixs.zero, mark.burton, qemu-devel,
cornelia.huck, akong
On Wed, May 15, 2013 at 02:12:49PM +0200, fred.konrad@greensocs.com wrote:
> @@ -1315,8 +1338,17 @@ static int virtio_net_device_init(VirtIODevice *vdev)
> memcpy(&n->mac[0], &n->nic_conf.macaddr, sizeof(n->mac));
> n->status = VIRTIO_NET_S_LINK_UP;
>
> - n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
> - object_get_typename(OBJECT(qdev)), qdev->id, n);
> + if (n->netclient_type) {
> + /*
> + * Happen when virtio_net_set_netclient_name has been called.
> + */
> + n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
> + n->netclient_type, n->netclient_name, n);
> + } else {
> + n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
> + object_get_typename(OBJECT(qdev)), qdev->id, n);
> + }
Does the 'else' case ever happen? In the next patch you update all
callers to invoke virtio_net_set_netclient_name().
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type.
2013-05-15 12:12 [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type fred.konrad
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name fred.konrad
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 2/2] virtio-net-x: forward the netclient name and type fred.konrad
@ 2013-05-15 13:16 ` Stefan Hajnoczi
2013-05-16 12:50 ` Anthony Liguori
3 siblings, 0 replies; 7+ messages in thread
From: Stefan Hajnoczi @ 2013-05-15 13:16 UTC (permalink / raw)
To: fred.konrad
Cc: peter.maydell, aliguori, matrixs.zero, mark.burton, qemu-devel,
cornelia.huck, akong
On Wed, May 15, 2013 at 02:12:48PM +0200, fred.konrad@greensocs.com wrote:
> From: KONRAD Frederic <fred.konrad@greensocs.com>
>
> This fixes this bug: https://bugs.launchpad.net/qemu/+bug/1179357
>
> The name, and the type is replaced by virtio-net-x's id and virtio-net-x's type
> to restore the behaviour of "info network" command.
>
> Thanks,
> Fred
>
> KONRAD Frederic (2):
> virtio-net: add virtio_net_set_netclient_name.
> virtio-net-x: forward the netclient name and type.
>
> hw/net/virtio-net.c | 45 ++++++++++++++++++++++++++++++++++++++++--
> hw/s390x/s390-virtio-bus.c | 3 +++
> hw/s390x/virtio-ccw.c | 3 +++
> hw/virtio/virtio-pci.c | 3 +++
> include/hw/virtio/virtio-net.h | 4 ++++
> 5 files changed, 56 insertions(+), 2 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name.
2013-05-15 13:16 ` Stefan Hajnoczi
@ 2013-05-15 13:28 ` KONRAD Frédéric
0 siblings, 0 replies; 7+ messages in thread
From: KONRAD Frédéric @ 2013-05-15 13:28 UTC (permalink / raw)
To: Stefan Hajnoczi
Cc: peter.maydell, aliguori, matrixs.zero, mark.burton, qemu-devel,
cornelia.huck, akong
On 15/05/2013 15:16, Stefan Hajnoczi wrote:
> On Wed, May 15, 2013 at 02:12:49PM +0200, fred.konrad@greensocs.com wrote:
>> @@ -1315,8 +1338,17 @@ static int virtio_net_device_init(VirtIODevice *vdev)
>> memcpy(&n->mac[0], &n->nic_conf.macaddr, sizeof(n->mac));
>> n->status = VIRTIO_NET_S_LINK_UP;
>>
>> - n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
>> - object_get_typename(OBJECT(qdev)), qdev->id, n);
>> + if (n->netclient_type) {
>> + /*
>> + * Happen when virtio_net_set_netclient_name has been called.
>> + */
>> + n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
>> + n->netclient_type, n->netclient_name, n);
>> + } else {
>> + n->nic = qemu_new_nic(&net_virtio_info, &n->nic_conf,
>> + object_get_typename(OBJECT(qdev)), qdev->id, n);
>> + }
> Does the 'else' case ever happen? In the next patch you update all
> callers to invoke virtio_net_set_netclient_name().
>
Yes, we made virtio-bus hot-plugguable for virtio-mmio, which won't work
like pci, s390 or CCW.
So virtio_net_set_netclient_name will not be called in that case.
Maybe worth to remove it and push it with virtio-mmio series? Peter?
Thanks,
Fred
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type.
2013-05-15 12:12 [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type fred.konrad
` (2 preceding siblings ...)
2013-05-15 13:16 ` [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id " Stefan Hajnoczi
@ 2013-05-16 12:50 ` Anthony Liguori
3 siblings, 0 replies; 7+ messages in thread
From: Anthony Liguori @ 2013-05-16 12:50 UTC (permalink / raw)
To: fred.konrad, qemu-devel, aliguori
Cc: peter.maydell, matrixs.zero, mark.burton, stefanha, cornelia.huck,
akong
Applied. Thanks.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-05-16 12:51 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-15 12:12 [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id and type fred.konrad
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 1/2] virtio-net: add virtio_net_set_netclient_name fred.konrad
2013-05-15 13:16 ` Stefan Hajnoczi
2013-05-15 13:28 ` KONRAD Frédéric
2013-05-15 12:12 ` [Qemu-devel] [PATCH for-1.5 2/2] virtio-net-x: forward the netclient name and type fred.konrad
2013-05-15 13:16 ` [Qemu-devel] [PATCH for-1.5 0/2] virtio-net: fix netclient id " Stefan Hajnoczi
2013-05-16 12:50 ` Anthony Liguori
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).