On 14/02/14 19:18, Andrew Lunn wrote:
>> Are you 100% sure that the NETDEV_UP event was sent within those 3
>> seconds and not after?
>> If you use a serial console you should see the kernel output mixed with
>> your test. (just to be 100% sure..)
> 
> http://lxr.free-electrons.com/source/net/core/dev.c#L1286
> 
> 1286 int dev_open(struct net_device *dev)
> 1287 {
> 1288         int ret;
> 1289 
> 1290         if (dev->flags & IFF_UP)
> 1291                 return 0;
> 1292 
> 1293         ret = __dev_open(dev);
> 1294         if (ret < 0)
> 1295                 return ret;
> 1296 
> 1297         rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING, GFP_KERNEL);
> 1298         call_netdevice_notifiers(NETDEV_UP, dev);
> 1299 
> 1300         return ret;
> 1301 }
> 
> 
> So the NETDEV_UP is sent as soon as __dev_open() returns,
> i.e. ndo_open().

Yeah, I hoped that the negotiation was performed within dev_open() :-(

> 
> What i do see is:
> 
> half
> 1000
> half
> 1000
> half
> 1000
> half
> 1000
> half
> 1000
> half
> 1000
> mv643xx_eth_port mv643xx_eth_port.0 eth0: link up, 1000 Mb/s, full duplex, 
> flowd
> full
> 1000
> 
> The link up is from:
> 
> http://lxr.free-electrons.com/source/drivers/net/ethernet/marvell/mv643xx_eth.c#L1990
> 
> There is no sign of a call_netdevice_notifiers() here, but i think a
> netlink message will be sent to userspace because of the
> netif_carrier_on() call.

I tried to follow netif_carrier_on() but I couldn't find any particular
function firing any event.

Maybe I should simply make it simple and read the Ethernet card
properties inside get_throughput() upon ELP sending (like I do for the
wifi throughput)?

I did put it in iface_activate() because I expected this values to be
rather static, but now you convinced me that this is not the case :-)


Cheers,

-- 
Antonio Quartulli

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to