* [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 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).