* [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding
@ 2017-10-24 5:54 Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 1/4] bridge: remove rtmsg_ifinfo called in add_del_if Xin Long
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Xin Long @ 2017-10-24 5:54 UTC (permalink / raw)
To: network dev; +Cc: davem, David Ahern, Jiri Pirko
It's better to send notifications to userspace by the events in
rtnetlink_event, instead of calling rtmsg_ifinfo directly.
This patcheset is to remove rtmsg_ifinfo called in bonding and
bridge, the notifications can be handled by NETDEV_CHANGEUPPER
and NETDEV_CHANGELOWERSTATE events in rtnetlink_event.
It could also fix some redundant notifications from bonding and
bridge.
v1->v2:
- post to net-next.git instead of net.git, for it's more like an
improvement for bonding
v2->v3:
- add patch 1/4 to remove rtmsg_ifinfo called in add_del_if
Xin Long (4):
bridge: remove rtmsg_ifinfo called in add_del_if
bonding: remove rtmsg_ifinfo called in bond_master_upper_dev_link
rtnetlink: bring NETDEV_CHANGELOWERSTATE event process back to
rtnetlink_event
bonding: remove rtmsg_ifinfo called after bond_lower_state_changed
drivers/net/bonding/bond_main.c | 11 +++--------
include/net/bonding.h | 4 ----
net/bridge/br_ioctl.c | 3 ---
net/core/rtnetlink.c | 2 +-
4 files changed, 4 insertions(+), 16 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCHv3 net-next 1/4] bridge: remove rtmsg_ifinfo called in add_del_if
2017-10-24 5:54 [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding Xin Long
@ 2017-10-24 5:54 ` Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 2/4] bonding: remove rtmsg_ifinfo called in bond_master_upper_dev_link Xin Long
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Xin Long @ 2017-10-24 5:54 UTC (permalink / raw)
To: network dev; +Cc: davem, David Ahern, Jiri Pirko
Since commit dc709f375743 ("rtnetlink: bring NETDEV_CHANGEUPPER event
process back in rtnetlink_event"), rtnetlink_event would process the
NETDEV_CHANGEUPPER event and send a notification to userspace.
In add_del_if, it would generate NETDEV_CHANGEUPPER event by whether
netdev_master_upper_dev_link or netdev_upper_dev_unlink. There's
no need to call rtmsg_ifinfo to send the notification any more.
So this patch is to remove it from add_del_if also to avoid redundant
notifications.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
net/bridge/br_ioctl.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c
index 8f29103..16d01a3 100644
--- a/net/bridge/br_ioctl.c
+++ b/net/bridge/br_ioctl.c
@@ -102,9 +102,6 @@ static int add_del_if(struct net_bridge *br, int ifindex, int isadd)
else
ret = br_del_if(br, dev);
- if (!ret)
- rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_MASTER, GFP_KERNEL);
-
return ret;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCHv3 net-next 2/4] bonding: remove rtmsg_ifinfo called in bond_master_upper_dev_link
2017-10-24 5:54 [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 1/4] bridge: remove rtmsg_ifinfo called in add_del_if Xin Long
@ 2017-10-24 5:54 ` Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 3/4] rtnetlink: bring NETDEV_CHANGELOWERSTATE event process back to rtnetlink_event Xin Long
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Xin Long @ 2017-10-24 5:54 UTC (permalink / raw)
To: network dev; +Cc: davem, David Ahern, Jiri Pirko
Since commit 42e52bf9e3ae ("net: add netnotifier event for upper device
change"), netdev_master_upper_dev_link has generated NETDEV_CHANGEUPPER
event which would send a notification to userspace in rtnetlink_event.
There's no need to call rtmsg_ifinfo to send the notification any more.
So this patch is to remove it from bond_master_upper_dev_link as well
as bond_upper_dev_unlink to avoid the redundant notifications.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/bonding/bond_main.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 172eeeb..18b58e1 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1221,22 +1221,17 @@ static int bond_master_upper_dev_link(struct bonding *bond, struct slave *slave,
struct netlink_ext_ack *extack)
{
struct netdev_lag_upper_info lag_upper_info;
- int err;
lag_upper_info.tx_type = bond_lag_tx_type(bond);
- err = netdev_master_upper_dev_link(slave->dev, bond->dev, slave,
- &lag_upper_info, extack);
- if (err)
- return err;
- rtmsg_ifinfo(RTM_NEWLINK, slave->dev, IFF_SLAVE, GFP_KERNEL);
- return 0;
+
+ return netdev_master_upper_dev_link(slave->dev, bond->dev, slave,
+ &lag_upper_info, extack);
}
static void bond_upper_dev_unlink(struct bonding *bond, struct slave *slave)
{
netdev_upper_dev_unlink(slave->dev, bond->dev);
slave->dev->flags &= ~IFF_SLAVE;
- rtmsg_ifinfo(RTM_NEWLINK, slave->dev, IFF_SLAVE, GFP_KERNEL);
}
static struct slave *bond_alloc_slave(struct bonding *bond)
--
2.1.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCHv3 net-next 3/4] rtnetlink: bring NETDEV_CHANGELOWERSTATE event process back to rtnetlink_event
2017-10-24 5:54 [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 1/4] bridge: remove rtmsg_ifinfo called in add_del_if Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 2/4] bonding: remove rtmsg_ifinfo called in bond_master_upper_dev_link Xin Long
@ 2017-10-24 5:54 ` Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 4/4] bonding: remove rtmsg_ifinfo called after bond_lower_state_changed Xin Long
2017-10-25 1:55 ` [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Xin Long @ 2017-10-24 5:54 UTC (permalink / raw)
To: network dev; +Cc: davem, David Ahern, Jiri Pirko
This patch is to bring NETDEV_CHANGELOWERSTATE event process back
to rtnetlink_event so that bonding could use it instead of calling
rtmsg_ifinfo to send a notification to userspace after netdev lower
state is changed in the later patch.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
net/core/rtnetlink.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index df8dba9..854a848 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -4385,6 +4385,7 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi
case NETDEV_CHANGEUPPER:
case NETDEV_RESEND_IGMP:
case NETDEV_CHANGEINFODATA:
+ case NETDEV_CHANGELOWERSTATE:
case NETDEV_CHANGE_TX_QUEUE_LEN:
rtmsg_ifinfo_event(RTM_NEWLINK, dev, 0, rtnl_get_event(event),
GFP_KERNEL, NULL);
--
2.1.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCHv3 net-next 4/4] bonding: remove rtmsg_ifinfo called after bond_lower_state_changed
2017-10-24 5:54 [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding Xin Long
` (2 preceding siblings ...)
2017-10-24 5:54 ` [PATCHv3 net-next 3/4] rtnetlink: bring NETDEV_CHANGELOWERSTATE event process back to rtnetlink_event Xin Long
@ 2017-10-24 5:54 ` Xin Long
2017-10-25 1:55 ` [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Xin Long @ 2017-10-24 5:54 UTC (permalink / raw)
To: network dev; +Cc: davem, David Ahern, Jiri Pirko
After the patch 'rtnetlink: bring NETDEV_CHANGELOWERSTATE event
process back to rtnetlink_event', bond_lower_state_changed would
generate NETDEV_CHANGEUPPER event which would send a notification
to userspace in rtnetlink_event.
There's no need to call rtmsg_ifinfo to send the notification
any more. So this patch is to remove it from these places after
bond_lower_state_changed.
Besides, after this, rtmsg_ifinfo is not needed to be exported.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
include/net/bonding.h | 4 ----
net/core/rtnetlink.c | 1 -
2 files changed, 5 deletions(-)
diff --git a/include/net/bonding.h b/include/net/bonding.h
index 2860cc6..f801fc9 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -330,7 +330,6 @@ static inline void bond_set_active_slave(struct slave *slave)
slave->backup = 0;
bond_queue_slave_event(slave);
bond_lower_state_changed(slave);
- rtmsg_ifinfo(RTM_NEWLINK, slave->dev, 0, GFP_ATOMIC);
}
}
@@ -340,7 +339,6 @@ static inline void bond_set_backup_slave(struct slave *slave)
slave->backup = 1;
bond_queue_slave_event(slave);
bond_lower_state_changed(slave);
- rtmsg_ifinfo(RTM_NEWLINK, slave->dev, 0, GFP_ATOMIC);
}
}
@@ -353,7 +351,6 @@ static inline void bond_set_slave_state(struct slave *slave,
slave->backup = slave_state;
if (notify) {
bond_lower_state_changed(slave);
- rtmsg_ifinfo(RTM_NEWLINK, slave->dev, 0, GFP_ATOMIC);
bond_queue_slave_event(slave);
slave->should_notify = 0;
} else {
@@ -385,7 +382,6 @@ static inline void bond_slave_state_notify(struct bonding *bond)
bond_for_each_slave(bond, tmp, iter) {
if (tmp->should_notify) {
bond_lower_state_changed(tmp);
- rtmsg_ifinfo(RTM_NEWLINK, tmp->dev, 0, GFP_ATOMIC);
tmp->should_notify = 0;
}
}
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 854a848..de24d39 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -2989,7 +2989,6 @@ void rtmsg_ifinfo(int type, struct net_device *dev, unsigned int change,
{
rtmsg_ifinfo_event(type, dev, change, rtnl_get_event(0), flags, NULL);
}
-EXPORT_SYMBOL(rtmsg_ifinfo);
void rtmsg_ifinfo_newnet(int type, struct net_device *dev, unsigned int change,
gfp_t flags, int *new_nsid)
--
2.1.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding
2017-10-24 5:54 [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding Xin Long
` (3 preceding siblings ...)
2017-10-24 5:54 ` [PATCHv3 net-next 4/4] bonding: remove rtmsg_ifinfo called after bond_lower_state_changed Xin Long
@ 2017-10-25 1:55 ` David Miller
4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2017-10-25 1:55 UTC (permalink / raw)
To: lucien.xin; +Cc: netdev, dsahern, jiri
From: Xin Long <lucien.xin@gmail.com>
Date: Tue, 24 Oct 2017 13:54:16 +0800
> It's better to send notifications to userspace by the events in
> rtnetlink_event, instead of calling rtmsg_ifinfo directly.
>
> This patcheset is to remove rtmsg_ifinfo called in bonding and
> bridge, the notifications can be handled by NETDEV_CHANGEUPPER
> and NETDEV_CHANGELOWERSTATE events in rtnetlink_event.
>
> It could also fix some redundant notifications from bonding and
> bridge.
>
> v1->v2:
> - post to net-next.git instead of net.git, for it's more like an
> improvement for bonding
> v2->v3:
> - add patch 1/4 to remove rtmsg_ifinfo called in add_del_if
Series applied, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-10-25 1:55 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-24 5:54 [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 1/4] bridge: remove rtmsg_ifinfo called in add_del_if Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 2/4] bonding: remove rtmsg_ifinfo called in bond_master_upper_dev_link Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 3/4] rtnetlink: bring NETDEV_CHANGELOWERSTATE event process back to rtnetlink_event Xin Long
2017-10-24 5:54 ` [PATCHv3 net-next 4/4] bonding: remove rtmsg_ifinfo called after bond_lower_state_changed Xin Long
2017-10-25 1:55 ` [PATCHv3 net-next 0/4] net: remove rtmsg_ifinfo used in bridge and bonding David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.