Re: [GIT] Networking

Dan Williams
2013-05-02T18:13:16Z

On Thu, 2013-05-02 at 14:06 -0400, David Miller wrote:
> From: David Miller <davem@davemloft.net>
> Date: Thu, 02 May 2013 13:55:42 -0400 (EDT)
>
> > From: Michał Mirosław <mirqus@gmail.com>
> > 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