mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Haiyang Zhang <haiyangz@microsoft.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: "davem@davemloft.net" <davem@davemloft.net>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"olaf@aepfle.de" <olaf@aepfle.de>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"driverdev-devel@linuxdriverproject.org" 
	<driverdev-devel@linuxdriverproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH net-next] hyperv: Add handler for RNDIS_STATUS_NETWORK_CHANGE event
Date: Fri, 20 Jun 2014 15:48:56 +0000	[thread overview]
Message-ID: <5174e5cab2b84decaa903dcf3215bce9@DFM-DB3MBX15-06.exchange.corp.microsoft.com> (raw)
In-Reply-To: <20140620084158.GR5500@mwanda>



> -----Original Message-----
> From: Dan Carpenter [mailto:dan.carpenter@oracle.com]
> Sent: Friday, June 20, 2014 4:42 AM
> To: Haiyang Zhang
> Cc: davem@davemloft.net; netdev@vger.kernel.org; olaf@aepfle.de;
> jasowang@redhat.com; driverdev-devel@linuxdriverproject.org; linux-
> kernel@vger.kernel.org
> Subject: Re: [PATCH net-next] hyperv: Add handler for
> RNDIS_STATUS_NETWORK_CHANGE event
> 
> On Thu, Jun 19, 2014 at 06:34:36PM -0700, Haiyang Zhang wrote:
> > @@ -589,7 +590,19 @@ void netvsc_linkstatus_callback(struct hv_device
> *device_obj,
> >  	net_device = hv_get_drvdata(device_obj);
> >  	rdev = net_device->extension;
> >
> > -	rdev->link_state = status != 1;
> > +	switch (indicate->status) {
> > +	case RNDIS_STATUS_MEDIA_CONNECT:
> > +		rdev->link_state = false;
> 
> link_state false means that we want to connect?
Yes

> 
> > +		break;
> > +	case RNDIS_STATUS_MEDIA_DISCONNECT:
> > +		rdev->link_state = true;
> 
> link_state true means that we are disconnecting.
Yes.

> > @@ -782,10 +797,17 @@ static void netvsc_link_change(struct
> work_struct *w)
> >  	} else {
> >  		netif_carrier_on(net);
> >  		notify = true;
> > +		if (rdev->link_change) {
> > +			rdev->link_change = false;
> > +			refresh = true;
> > +		}
> 
> How do we know that we received a RNDIS_STATUS_MEDIA_CONNECT before we
> received the RNDIS_STATUS_NETWORK_CHANGE?  In other words, why does
> RNDIS_STATUS_NETWORK_CHANGE imply that the link_state is false?

After host sleep, both RNDIS_STATUS_MEDIA_CONNECT and 
RNDIS_STATUS_NETWORK_CHANGE events are received, but not necessarily in
this order. If RNDIS_STATUS_MEDIA_CONNECT arrives later, the flag saved
in rdev->link_change previously will trigger the refresh, not in the
RNDIS_STATUS_NETWORK_CHANGE event, but in the latter RNDIS_STATUS_MEDIA_CONNECT
event.

> 
> >  	}
> >
> >  	rtnl_unlock();
> >
> > +	if (refresh)
> > +		call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
> 
> You may as well use UMH_NO_WAIT since there is no error handling if
> /etc/init.d/network is not found.

I previously tried UMH_NO_WAIT, but not working. We need to wait for the 
exec (not process completion) in this case. Since it's in the work queue,
a bit of waiting is OK.

Thanks,
- Haiyang



      reply	other threads:[~2014-06-20 15:49 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-20  1:34 Haiyang Zhang
2014-06-20  4:21 ` David Miller
2014-06-20  4:57 ` Olaf Hering
2014-06-20  5:12   ` Greg KH
2014-06-20 16:09     ` Haiyang Zhang
2014-06-23  8:02       ` Olaf Hering
2014-06-23 12:47         ` Haiyang Zhang
2014-06-23 13:17           ` Olaf Hering
2014-06-23 16:09             ` Haiyang Zhang
2014-06-23 16:27               ` Olaf Hering
2014-06-23 18:21                 ` Haiyang Zhang
2014-06-26  8:45                   ` Olaf Hering
2014-06-26 14:55                     ` Haiyang Zhang
2014-06-23 16:29               ` Greg KH
2014-06-23 18:23                 ` Haiyang Zhang
2014-06-23 20:11                 ` David Miller
2014-06-23 20:10               ` David Miller
2014-06-23 20:17                 ` Haiyang Zhang
2015-10-27 22:36                 ` Richard Weinberger
2015-10-28 17:59                   ` Haiyang Zhang
2015-10-29 19:09                   ` Haiyang Zhang
2015-10-30 10:56                     ` Vitaly Kuznetsov
2015-10-30 22:03                       ` Haiyang Zhang
2015-10-30 22:10                         ` Richard Weinberger
2014-06-23 20:06             ` David Miller
2014-06-20  8:41 ` Dan Carpenter
2014-06-20 15:48   ` Haiyang Zhang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5174e5cab2b84decaa903dcf3215bce9@DFM-DB3MBX15-06.exchange.corp.microsoft.com \
    --to=haiyangz@microsoft.com \
    --cc=dan.carpenter@oracle.com \
    --cc=davem@davemloft.net \
    --cc=driverdev-devel@linuxdriverproject.org \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=olaf@aepfle.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®