Subject: Re: [GIT] Networking

From: Dan Williams <[email-masked]>
Date: Thu, 02 May 2013 13:15:32 -0500

On Thu, 2013-05-02 at 14:06 -0400, David Miller wrote:
> From: David Miller <[email-masked]>
> Date: Thu, 02 May 2013 13:55:42 -0400 (EDT)
> 
> > From: Michał Mirosław <[email-masked]>
> > Date: Thu, 2 May 2013 19:47:25 +0200
> > 
> >> Are you sure it's "flags"? /sys/class/net/*/features were removed some
> >> time ago, and flags don't depend on NETIF_F_*.
> > 
> > Oh, it's flags, which is printed in raw hex by net/core/net-sysfs.c:
> > 
> > NETDEVICE_SHOW(flags, fmt_hex);
> 
> Oh you're right, I'm confusing netdev->flags with netdev->features, my bad.

Was just going to ask about that.  NM only cares about 'flags', not
features, at this point in time.  Relevant code for carrier notification
in NM, using libnl helpers:

	link_obj = (struct rtnl_link *) obj;
	flags = rtnl_link_get_flags (link_obj);
	ifidx = rtnl_link_get_ifindex (link_obj);

	nm_log_dbg (LOGD_HW, "netlink link message: iface idx %d flags 0x%X",
ifidx, flags);

	if (flags & IFF_LOWER_UP)
		g_signal_emit (self, signals[CARRIER_ON], 0, ifidx);
	else
		g_signal_emit (self, signals[CARRIER_OFF], 0, ifidx);

So it's got to be something else other than the netdev features ordering
that's screwing up for Linus.  I'm sure we'd have heard about it a long,
long time ago if something had messed up dev->flags bits...

Dan