* [V2 PATCH] virtio-net: init link state correctly
@ 2010-11-05 2:50 Jason Wang
2010-11-05 3:00 ` Jason Wang
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jason Wang @ 2010-11-05 2:50 UTC (permalink / raw)
To: rusty, davem; +Cc: markmc, linux-kernel, kvm, mst
For device that supports VIRTIO_NET_F_STATUS, there's no need to
assume the link is up and we need to call nerif_carrier_off() before
querying device status, otherwise we may get wrong operstate after
diver was loaded because the link watch event was not fired as
expected.
For device that does not support VIRITO_NET_F_STATUS, we could not get
its status through virtnet_update_status() and what we can only do is
always assuming the link is up.
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
drivers/net/virtio_net.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index bb6b67f..b6d4028 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -986,9 +986,15 @@ static int virtnet_probe(struct virtio_device *vdev)
goto unregister;
}
- vi->status = VIRTIO_NET_S_LINK_UP;
- virtnet_update_status(vi);
- netif_carrier_on(dev);
+ /* Assume link up if device can't report link status,
+ otherwise get link status from config. */
+ if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
+ netif_carrier_off(dev);
+ virtnet_update_status(vi);
+ } else {
+ vi->status = VIRTIO_NET_S_LINK_UP;
+ netif_carrier_on(dev);
+ }
pr_debug("virtnet: registered device %s\n", dev->name);
return 0;
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [V2 PATCH] virtio-net: init link state correctly
2010-11-05 2:50 [V2 PATCH] virtio-net: init link state correctly Jason Wang
@ 2010-11-05 3:00 ` Jason Wang
2010-11-05 8:47 ` Michael S. Tsirkin
2010-11-05 8:45 ` Michael S. Tsirkin
2010-11-12 20:25 ` David Miller
2 siblings, 1 reply; 5+ messages in thread
From: Jason Wang @ 2010-11-05 3:00 UTC (permalink / raw)
To: Jason Wang; +Cc: rusty, davem, markmc, linux-kernel, kvm, mst, netdev
Jason Wang writes:
CC netdev missed in the original patch.
> For device that supports VIRTIO_NET_F_STATUS, there's no need to
> assume the link is up and we need to call nerif_carrier_off() before
> querying device status, otherwise we may get wrong operstate after
> diver was loaded because the link watch event was not fired as
> expected.
>
> For device that does not support VIRITO_NET_F_STATUS, we could not get
> its status through virtnet_update_status() and what we can only do is
> always assuming the link is up.
>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
> drivers/net/virtio_net.c | 12 +++++++++---
> 1 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index bb6b67f..b6d4028 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -986,9 +986,15 @@ static int virtnet_probe(struct virtio_device *vdev)
> goto unregister;
> }
>
> - vi->status = VIRTIO_NET_S_LINK_UP;
> - virtnet_update_status(vi);
> - netif_carrier_on(dev);
> + /* Assume link up if device can't report link status,
> + otherwise get link status from config. */
> + if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
> + netif_carrier_off(dev);
> + virtnet_update_status(vi);
> + } else {
> + vi->status = VIRTIO_NET_S_LINK_UP;
> + netif_carrier_on(dev);
> + }
>
> pr_debug("virtnet: registered device %s\n", dev->name);
> return 0;
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [V2 PATCH] virtio-net: init link state correctly
2010-11-05 2:50 [V2 PATCH] virtio-net: init link state correctly Jason Wang
2010-11-05 3:00 ` Jason Wang
@ 2010-11-05 8:45 ` Michael S. Tsirkin
2010-11-12 20:25 ` David Miller
2 siblings, 0 replies; 5+ messages in thread
From: Michael S. Tsirkin @ 2010-11-05 8:45 UTC (permalink / raw)
To: Jason Wang; +Cc: rusty, davem, markmc, linux-kernel, kvm
On Fri, Nov 05, 2010 at 10:50:08AM +0800, Jason Wang wrote:
> For device that supports VIRTIO_NET_F_STATUS, there's no need to
> assume the link is up and we need to call nerif_carrier_off() before
> querying device status, otherwise we may get wrong operstate after
> diver was loaded because the link watch event was not fired as
> expected.
>
> For device that does not support VIRITO_NET_F_STATUS, we could not get
> its status through virtnet_update_status() and what we can only do is
> always assuming the link is up.
>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> drivers/net/virtio_net.c | 12 +++++++++---
> 1 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index bb6b67f..b6d4028 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -986,9 +986,15 @@ static int virtnet_probe(struct virtio_device *vdev)
> goto unregister;
> }
>
> - vi->status = VIRTIO_NET_S_LINK_UP;
> - virtnet_update_status(vi);
> - netif_carrier_on(dev);
> + /* Assume link up if device can't report link status,
> + otherwise get link status from config. */
> + if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
> + netif_carrier_off(dev);
> + virtnet_update_status(vi);
> + } else {
> + vi->status = VIRTIO_NET_S_LINK_UP;
> + netif_carrier_on(dev);
> + }
>
> pr_debug("virtnet: registered device %s\n", dev->name);
> return 0;
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [V2 PATCH] virtio-net: init link state correctly
2010-11-05 3:00 ` Jason Wang
@ 2010-11-05 8:47 ` Michael S. Tsirkin
0 siblings, 0 replies; 5+ messages in thread
From: Michael S. Tsirkin @ 2010-11-05 8:47 UTC (permalink / raw)
To: Jason Wang; +Cc: rusty, davem, markmc, linux-kernel, kvm, netdev
On Fri, Nov 05, 2010 at 11:00:53AM +0800, Jason Wang wrote:
> Jason Wang writes:
>
> CC netdev missed in the original patch.
You'll have to repost it properly. Patches with a >
at start can't be applied :)
You can add my ack when you do.
> > For device that supports VIRTIO_NET_F_STATUS, there's no need to
> > assume the link is up and we need to call nerif_carrier_off() before
> > querying device status, otherwise we may get wrong operstate after
> > diver was loaded because the link watch event was not fired as
> > expected.
> >
> > For device that does not support VIRITO_NET_F_STATUS, we could not get
> > its status through virtnet_update_status() and what we can only do is
> > always assuming the link is up.
> >
> > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > ---
> > drivers/net/virtio_net.c | 12 +++++++++---
> > 1 files changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > index bb6b67f..b6d4028 100644
> > --- a/drivers/net/virtio_net.c
> > +++ b/drivers/net/virtio_net.c
> > @@ -986,9 +986,15 @@ static int virtnet_probe(struct virtio_device *vdev)
> > goto unregister;
> > }
> >
> > - vi->status = VIRTIO_NET_S_LINK_UP;
> > - virtnet_update_status(vi);
> > - netif_carrier_on(dev);
> > + /* Assume link up if device can't report link status,
> > + otherwise get link status from config. */
> > + if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
> > + netif_carrier_off(dev);
> > + virtnet_update_status(vi);
> > + } else {
> > + vi->status = VIRTIO_NET_S_LINK_UP;
> > + netif_carrier_on(dev);
> > + }
> >
> > pr_debug("virtnet: registered device %s\n", dev->name);
> > return 0;
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe kvm" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [V2 PATCH] virtio-net: init link state correctly
2010-11-05 2:50 [V2 PATCH] virtio-net: init link state correctly Jason Wang
2010-11-05 3:00 ` Jason Wang
2010-11-05 8:45 ` Michael S. Tsirkin
@ 2010-11-12 20:25 ` David Miller
2 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2010-11-12 20:25 UTC (permalink / raw)
To: jasowang; +Cc: rusty, markmc, linux-kernel, kvm, mst
From: Jason Wang <jasowang@redhat.com>
Date: Fri, 05 Nov 2010 10:50:08 +0800
> For device that supports VIRTIO_NET_F_STATUS, there's no need to
> assume the link is up and we need to call nerif_carrier_off() before
> querying device status, otherwise we may get wrong operstate after
> diver was loaded because the link watch event was not fired as
> expected.
>
> For device that does not support VIRITO_NET_F_STATUS, we could not get
> its status through virtnet_update_status() and what we can only do is
> always assuming the link is up.
>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
I've applied Rusty's submission of this patch which has Michael T.'s
ACK, etc.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-11-12 20:25 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-05 2:50 [V2 PATCH] virtio-net: init link state correctly Jason Wang
2010-11-05 3:00 ` Jason Wang
2010-11-05 8:47 ` Michael S. Tsirkin
2010-11-05 8:45 ` Michael S. Tsirkin
2010-11-12 20:25 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox