* [PATCH net-next] dev: advertise rx_flags changes @ 2013-09-23 14:25 Nicolas Dichtel 2013-09-23 19:27 ` Stephen Hemminger 0 siblings, 1 reply; 8+ messages in thread From: Nicolas Dichtel @ 2013-09-23 14:25 UTC (permalink / raw) To: netdev; +Cc: davem, Nicolas Dichtel There is no netlink message/call to notifier chains when rx_flags are updated, let's advertise everybody. Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> --- net/core/dev.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 5c713f2239cc..6c91d3919279 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4818,8 +4818,13 @@ static void dev_change_rx_flags(struct net_device *dev, int flags) { const struct net_device_ops *ops = dev->netdev_ops; - if ((dev->flags & IFF_UP) && ops->ndo_change_rx_flags) - ops->ndo_change_rx_flags(dev, flags); + if (dev->flags & IFF_UP) { + if (ops->ndo_change_rx_flags) + ops->ndo_change_rx_flags(dev, flags); + + call_netdevice_notifiers(NETDEV_CHANGE, dev); + rtmsg_ifinfo(RTM_NEWLINK, dev, flags); + } } static int __dev_set_promiscuity(struct net_device *dev, int inc) -- 1.8.2.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] dev: advertise rx_flags changes 2013-09-23 14:25 [PATCH net-next] dev: advertise rx_flags changes Nicolas Dichtel @ 2013-09-23 19:27 ` Stephen Hemminger 2013-09-24 16:21 ` [PATCH net-next v2] dev: always " Nicolas Dichtel 0 siblings, 1 reply; 8+ messages in thread From: Stephen Hemminger @ 2013-09-23 19:27 UTC (permalink / raw) To: Nicolas Dichtel; +Cc: netdev, davem On Mon, 23 Sep 2013 16:25:34 +0200 Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote: > There is no netlink message/call to notifier chains when rx_flags are updated, > let's advertise everybody. > > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> > --- > net/core/dev.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/net/core/dev.c b/net/core/dev.c > index 5c713f2239cc..6c91d3919279 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -4818,8 +4818,13 @@ static void dev_change_rx_flags(struct net_device *dev, int flags) > { > const struct net_device_ops *ops = dev->netdev_ops; > > - if ((dev->flags & IFF_UP) && ops->ndo_change_rx_flags) > - ops->ndo_change_rx_flags(dev, flags); > + if (dev->flags & IFF_UP) { > + if (ops->ndo_change_rx_flags) > + ops->ndo_change_rx_flags(dev, flags); > + > + call_netdevice_notifiers(NETDEV_CHANGE, dev); > + rtmsg_ifinfo(RTM_NEWLINK, dev, flags); > + } > } > > static int __dev_set_promiscuity(struct net_device *dev, int inc) This will cause duplicate notification if IFF_MULTICAST changes: 1. dev_change_flags __dev_change_flags dev_change_rx_flags call_netdevice_notifiers... 2. dev_change_flags __dev_notify_flags call_netdevice_notifiers... ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v2] dev: always advertise rx_flags changes 2013-09-23 19:27 ` Stephen Hemminger @ 2013-09-24 16:21 ` Nicolas Dichtel 2013-09-24 16:47 ` Stephen Hemminger 0 siblings, 1 reply; 8+ messages in thread From: Nicolas Dichtel @ 2013-09-24 16:21 UTC (permalink / raw) To: stephen; +Cc: netdev, davem, Nicolas Dichtel Depending on the code path, there is/isn't netlink message/call to notifier chains when rx_flags are updated, let's send advertisement for all cases. Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> --- v2: rework the patch to avoid double notification net/core/dev.c | 64 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 5c713f2239cc..067bfbe70c4c 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4822,7 +4822,7 @@ static void dev_change_rx_flags(struct net_device *dev, int flags) ops->ndo_change_rx_flags(dev, flags); } -static int __dev_set_promiscuity(struct net_device *dev, int inc) +static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notif) { unsigned int old_flags = dev->flags; kuid_t uid; @@ -4865,6 +4865,10 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc) dev_change_rx_flags(dev, IFF_PROMISC); } + if (notif) { + call_netdevice_notifiers(NETDEV_CHANGE, dev); + rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_PROMISC); + } return 0; } @@ -4884,7 +4888,7 @@ int dev_set_promiscuity(struct net_device *dev, int inc) unsigned int old_flags = dev->flags; int err; - err = __dev_set_promiscuity(dev, inc); + err = __dev_set_promiscuity(dev, inc, true); if (err < 0) return err; if (dev->flags != old_flags) @@ -4893,22 +4897,9 @@ int dev_set_promiscuity(struct net_device *dev, int inc) } EXPORT_SYMBOL(dev_set_promiscuity); -/** - * dev_set_allmulti - update allmulti count on a device - * @dev: device - * @inc: modifier - * - * Add or remove reception of all multicast frames to a device. While the - * count in the device remains above zero the interface remains listening - * to all interfaces. Once it hits zero the device reverts back to normal - * filtering operation. A negative @inc value is used to drop the counter - * when releasing a resource needing all multicasts. - * Return 0 if successful or a negative errno code on error. - */ - -int dev_set_allmulti(struct net_device *dev, int inc) +static int __dev_set_allmulti(struct net_device *dev, int inc, bool notif) { - unsigned int old_flags = dev->flags; + unsigned int old_flags = dev->flags, old_gflags = dev->gflags; ASSERT_RTNL(); @@ -4931,9 +4922,32 @@ int dev_set_allmulti(struct net_device *dev, int inc) if (dev->flags ^ old_flags) { dev_change_rx_flags(dev, IFF_ALLMULTI); dev_set_rx_mode(dev); + if (notif) { + call_netdevice_notifiers(NETDEV_CHANGE, dev); + if (dev->gflags ^ old_gflags) + rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_ALLMULTI); + } } return 0; } + +/** + * dev_set_allmulti - update allmulti count on a device + * @dev: device + * @inc: modifier + * + * Add or remove reception of all multicast frames to a device. While the + * count in the device remains above zero the interface remains listening + * to all interfaces. Once it hits zero the device reverts back to normal + * filtering operation. A negative @inc value is used to drop the counter + * when releasing a resource needing all multicasts. + * Return 0 if successful or a negative errno code on error. + */ + +int dev_set_allmulti(struct net_device *dev, int inc) +{ + return __dev_set_allmulti(dev, inc, true); +} EXPORT_SYMBOL(dev_set_allmulti); /* @@ -4958,10 +4972,10 @@ void __dev_set_rx_mode(struct net_device *dev) * therefore calling __dev_set_promiscuity here is safe. */ if (!netdev_uc_empty(dev) && !dev->uc_promisc) { - __dev_set_promiscuity(dev, 1); + __dev_set_promiscuity(dev, 1, false); dev->uc_promisc = true; } else if (netdev_uc_empty(dev) && dev->uc_promisc) { - __dev_set_promiscuity(dev, -1); + __dev_set_promiscuity(dev, -1, false); dev->uc_promisc = false; } } @@ -5050,9 +5064,13 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) if ((flags ^ dev->gflags) & IFF_PROMISC) { int inc = (flags & IFF_PROMISC) ? 1 : -1; + unsigned int old_flags = dev->flags; dev->gflags ^= IFF_PROMISC; - dev_set_promiscuity(dev, inc); + + if (__dev_set_promiscuity(dev, inc, false) >= 0) + if (dev->flags != old_flags) + dev_set_rx_mode(dev); } /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI @@ -5063,7 +5081,7 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) int inc = (flags & IFF_ALLMULTI) ? 1 : -1; dev->gflags ^= IFF_ALLMULTI; - dev_set_allmulti(dev, inc); + __dev_set_allmulti(dev, inc, false); } return ret; @@ -5101,13 +5119,13 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags) int dev_change_flags(struct net_device *dev, unsigned int flags) { int ret; - unsigned int changes, old_flags = dev->flags; + unsigned int changes, old_flags = dev->flags, old_gflags = dev->gflags; ret = __dev_change_flags(dev, flags); if (ret < 0) return ret; - changes = old_flags ^ dev->flags; + changes = (old_flags ^ dev->flags) | (old_gflags ^ dev->gflags); if (changes) rtmsg_ifinfo(RTM_NEWLINK, dev, changes); -- 1.8.2.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v2] dev: always advertise rx_flags changes 2013-09-24 16:21 ` [PATCH net-next v2] dev: always " Nicolas Dichtel @ 2013-09-24 16:47 ` Stephen Hemminger 2013-09-25 10:02 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg Nicolas Dichtel 0 siblings, 1 reply; 8+ messages in thread From: Stephen Hemminger @ 2013-09-24 16:47 UTC (permalink / raw) To: Nicolas Dichtel; +Cc: netdev, davem On Tue, 24 Sep 2013 18:21:32 +0200 Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote: > diff --git a/net/core/dev.c b/net/core/dev.c > index 5c713f2239cc..067bfbe70c4c 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -4822,7 +4822,7 @@ static void dev_change_rx_flags(struct net_device *dev, int flags) > ops->ndo_change_rx_flags(dev, flags); > } > > -static int __dev_set_promiscuity(struct net_device *dev, int inc) > +static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notif) > { > unsigned int old_flags = dev->flags; > kuid_t uid; > @@ -4865,6 +4865,10 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc) > > dev_change_rx_flags(dev, IFF_PROMISC); > } > + if (notif) { > + call_netdevice_notifiers(NETDEV_CHANGE, dev); > + rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_PROMISC); > + } > return 0; > } This is getting uglier as the conditional is added to each function. Why not create a helper function and change callers. static void __dev_notify_flag(dev, int flags) { call_netdevice_notifiers(NETDEV_CHANGE, dev); rtmsg_ifinfo(RTM_NEWLINK, dev, flags); } ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg 2013-09-24 16:47 ` Stephen Hemminger @ 2013-09-25 10:02 ` Nicolas Dichtel 2013-09-25 10:02 ` [PATCH net-next v3 2/2] dev: always advertise rx_flags changes via netlink Nicolas Dichtel 2013-09-30 19:08 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg David Miller 0 siblings, 2 replies; 8+ messages in thread From: Nicolas Dichtel @ 2013-09-25 10:02 UTC (permalink / raw) To: stephen; +Cc: netdev, davem, Nicolas Dichtel This patch only prepares the next one, there is no functional change. Now, __dev_notify_flags() can also be used to notify flags changes via rtnetlink. Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> --- v3: add patch #1 use __dev_notify_flags() to notify rxflags (note that notifier chains are not called when flags IFF_PROMISC and IFF_ALLMULTI are changed) v2: rework the patch to avoid double notification include/linux/netdevice.h | 4 +++- net/core/dev.c | 11 ++++++----- net/core/rtnetlink.c | 3 +-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 3de49aca4519..4466db0cb673 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2368,7 +2368,9 @@ extern int dev_ethtool(struct net *net, struct ifreq *); extern unsigned int dev_get_flags(const struct net_device *); extern int __dev_change_flags(struct net_device *, unsigned int flags); extern int dev_change_flags(struct net_device *, unsigned int); -extern void __dev_notify_flags(struct net_device *, unsigned int old_flags); +void __dev_notify_flags(struct net_device *, + unsigned int old_flags, + unsigned int gchanges); extern int dev_change_name(struct net_device *, const char *); extern int dev_set_alias(struct net_device *, const char *, size_t); extern int dev_change_net_namespace(struct net_device *, diff --git a/net/core/dev.c b/net/core/dev.c index 5c713f2239cc..1222309feeaa 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5069,10 +5069,14 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) return ret; } -void __dev_notify_flags(struct net_device *dev, unsigned int old_flags) +void __dev_notify_flags(struct net_device *dev, unsigned int old_flags, + unsigned int gchanges) { unsigned int changes = dev->flags ^ old_flags; + if (gchanges) + rtmsg_ifinfo(RTM_NEWLINK, dev, gchanges); + if (changes & IFF_UP) { if (dev->flags & IFF_UP) call_netdevice_notifiers(NETDEV_UP, dev); @@ -5108,10 +5112,7 @@ int dev_change_flags(struct net_device *dev, unsigned int flags) return ret; changes = old_flags ^ dev->flags; - if (changes) - rtmsg_ifinfo(RTM_NEWLINK, dev, changes); - - __dev_notify_flags(dev, old_flags); + __dev_notify_flags(dev, old_flags, changes); return ret; } EXPORT_SYMBOL(dev_change_flags); diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 2a0e21de3060..4aedf03da052 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -1647,9 +1647,8 @@ int rtnl_configure_link(struct net_device *dev, const struct ifinfomsg *ifm) } dev->rtnl_link_state = RTNL_LINK_INITIALIZED; - rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U); - __dev_notify_flags(dev, old_flags); + __dev_notify_flags(dev, old_flags, ~0U); return 0; } EXPORT_SYMBOL(rtnl_configure_link); -- 1.8.2.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH net-next v3 2/2] dev: always advertise rx_flags changes via netlink 2013-09-25 10:02 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg Nicolas Dichtel @ 2013-09-25 10:02 ` Nicolas Dichtel 2013-09-30 19:08 ` David Miller 2013-09-30 19:08 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg David Miller 1 sibling, 1 reply; 8+ messages in thread From: Nicolas Dichtel @ 2013-09-25 10:02 UTC (permalink / raw) To: stephen; +Cc: netdev, davem, Nicolas Dichtel When flags IFF_PROMISC and IFF_ALLMULTI are changed, netlink messages are not consistent. For example, if a multicast daemon is running (flag IFF_ALLMULTI set in dev->flags but not dev->gflags, ie not exported to userspace) and then a user sets it via netlink (flag IFF_ALLMULTI set in dev->flags and dev->gflags, ie exported to userspace), no netlink message is sent. Same for IFF_PROMISC and because dev->promiscuity is exported via IFLA_PROMISCUITY, we may send a netlink message after each change of this counter. Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> --- v3: add patch #1 use __dev_notify_flags() to notify rxflags (note that notifier chains are not called when flags IFF_PROMISC and IFF_ALLMULTI are changed) v2: rework the patch to avoid double notification net/core/dev.c | 60 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 1222309feeaa..b23aefcb3c42 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4822,7 +4822,7 @@ static void dev_change_rx_flags(struct net_device *dev, int flags) ops->ndo_change_rx_flags(dev, flags); } -static int __dev_set_promiscuity(struct net_device *dev, int inc) +static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify) { unsigned int old_flags = dev->flags; kuid_t uid; @@ -4865,6 +4865,8 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc) dev_change_rx_flags(dev, IFF_PROMISC); } + if (notify) + __dev_notify_flags(dev, old_flags, IFF_PROMISC); return 0; } @@ -4884,7 +4886,7 @@ int dev_set_promiscuity(struct net_device *dev, int inc) unsigned int old_flags = dev->flags; int err; - err = __dev_set_promiscuity(dev, inc); + err = __dev_set_promiscuity(dev, inc, true); if (err < 0) return err; if (dev->flags != old_flags) @@ -4893,22 +4895,9 @@ int dev_set_promiscuity(struct net_device *dev, int inc) } EXPORT_SYMBOL(dev_set_promiscuity); -/** - * dev_set_allmulti - update allmulti count on a device - * @dev: device - * @inc: modifier - * - * Add or remove reception of all multicast frames to a device. While the - * count in the device remains above zero the interface remains listening - * to all interfaces. Once it hits zero the device reverts back to normal - * filtering operation. A negative @inc value is used to drop the counter - * when releasing a resource needing all multicasts. - * Return 0 if successful or a negative errno code on error. - */ - -int dev_set_allmulti(struct net_device *dev, int inc) +static int __dev_set_allmulti(struct net_device *dev, int inc, bool notify) { - unsigned int old_flags = dev->flags; + unsigned int old_flags = dev->flags, old_gflags = dev->gflags; ASSERT_RTNL(); @@ -4931,9 +4920,30 @@ int dev_set_allmulti(struct net_device *dev, int inc) if (dev->flags ^ old_flags) { dev_change_rx_flags(dev, IFF_ALLMULTI); dev_set_rx_mode(dev); + if (notify) + __dev_notify_flags(dev, old_flags, + dev->gflags ^ old_gflags); } return 0; } + +/** + * dev_set_allmulti - update allmulti count on a device + * @dev: device + * @inc: modifier + * + * Add or remove reception of all multicast frames to a device. While the + * count in the device remains above zero the interface remains listening + * to all interfaces. Once it hits zero the device reverts back to normal + * filtering operation. A negative @inc value is used to drop the counter + * when releasing a resource needing all multicasts. + * Return 0 if successful or a negative errno code on error. + */ + +int dev_set_allmulti(struct net_device *dev, int inc) +{ + return __dev_set_allmulti(dev, inc, true); +} EXPORT_SYMBOL(dev_set_allmulti); /* @@ -4958,10 +4968,10 @@ void __dev_set_rx_mode(struct net_device *dev) * therefore calling __dev_set_promiscuity here is safe. */ if (!netdev_uc_empty(dev) && !dev->uc_promisc) { - __dev_set_promiscuity(dev, 1); + __dev_set_promiscuity(dev, 1, false); dev->uc_promisc = true; } else if (netdev_uc_empty(dev) && dev->uc_promisc) { - __dev_set_promiscuity(dev, -1); + __dev_set_promiscuity(dev, -1, false); dev->uc_promisc = false; } } @@ -5050,9 +5060,13 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) if ((flags ^ dev->gflags) & IFF_PROMISC) { int inc = (flags & IFF_PROMISC) ? 1 : -1; + unsigned int old_flags = dev->flags; dev->gflags ^= IFF_PROMISC; - dev_set_promiscuity(dev, inc); + + if (__dev_set_promiscuity(dev, inc, false) >= 0) + if (dev->flags != old_flags) + dev_set_rx_mode(dev); } /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI @@ -5063,7 +5077,7 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) int inc = (flags & IFF_ALLMULTI) ? 1 : -1; dev->gflags ^= IFF_ALLMULTI; - dev_set_allmulti(dev, inc); + __dev_set_allmulti(dev, inc, false); } return ret; @@ -5105,13 +5119,13 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags, int dev_change_flags(struct net_device *dev, unsigned int flags) { int ret; - unsigned int changes, old_flags = dev->flags; + unsigned int changes, old_flags = dev->flags, old_gflags = dev->gflags; ret = __dev_change_flags(dev, flags); if (ret < 0) return ret; - changes = old_flags ^ dev->flags; + changes = (old_flags ^ dev->flags) | (old_gflags ^ dev->gflags); __dev_notify_flags(dev, old_flags, changes); return ret; } -- 1.8.2.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v3 2/2] dev: always advertise rx_flags changes via netlink 2013-09-25 10:02 ` [PATCH net-next v3 2/2] dev: always advertise rx_flags changes via netlink Nicolas Dichtel @ 2013-09-30 19:08 ` David Miller 0 siblings, 0 replies; 8+ messages in thread From: David Miller @ 2013-09-30 19:08 UTC (permalink / raw) To: nicolas.dichtel; +Cc: stephen, netdev From: Nicolas Dichtel <nicolas.dichtel@6wind.com> Date: Wed, 25 Sep 2013 12:02:45 +0200 > When flags IFF_PROMISC and IFF_ALLMULTI are changed, netlink messages are not > consistent. For example, if a multicast daemon is running (flag IFF_ALLMULTI > set in dev->flags but not dev->gflags, ie not exported to userspace) and then a > user sets it via netlink (flag IFF_ALLMULTI set in dev->flags and dev->gflags, ie > exported to userspace), no netlink message is sent. > Same for IFF_PROMISC and because dev->promiscuity is exported via > IFLA_PROMISCUITY, we may send a netlink message after each change of this > counter. > > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Applied. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg 2013-09-25 10:02 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg Nicolas Dichtel 2013-09-25 10:02 ` [PATCH net-next v3 2/2] dev: always advertise rx_flags changes via netlink Nicolas Dichtel @ 2013-09-30 19:08 ` David Miller 1 sibling, 0 replies; 8+ messages in thread From: David Miller @ 2013-09-30 19:08 UTC (permalink / raw) To: nicolas.dichtel; +Cc: stephen, netdev From: Nicolas Dichtel <nicolas.dichtel@6wind.com> Date: Wed, 25 Sep 2013 12:02:44 +0200 > This patch only prepares the next one, there is no functional change. > Now, __dev_notify_flags() can also be used to notify flags changes via > rtnetlink. > > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Applied. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-09-30 19:08 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-09-23 14:25 [PATCH net-next] dev: advertise rx_flags changes Nicolas Dichtel 2013-09-23 19:27 ` Stephen Hemminger 2013-09-24 16:21 ` [PATCH net-next v2] dev: always " Nicolas Dichtel 2013-09-24 16:47 ` Stephen Hemminger 2013-09-25 10:02 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg Nicolas Dichtel 2013-09-25 10:02 ` [PATCH net-next v3 2/2] dev: always advertise rx_flags changes via netlink Nicolas Dichtel 2013-09-30 19:08 ` David Miller 2013-09-30 19:08 ` [PATCH net-next v3 1/2] dev: update __dev_notify_flags() to send rtnl msg David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).