@@ -529,7 +529,7 @@ static const struct netdev_event_work_cmd add_cmd = {
static const struct netdev_event_work_cmd add_cmd_upper_ips = {
.cb = add_netdev_upper_ips, .filter = is_eth_port_of_netdev};
-static void netdevice_event_changeupper(struct netdev_changeupper_info *changeupper_info,
+static void netdevice_event_changeupper(struct netdev_notifier_changeupper_info *changeupper_info,
struct netdev_event_work_cmd *cmds)
{
static const struct netdev_event_work_cmd upper_ips_del_cmd = {
@@ -540,15 +540,15 @@ static void netdevice_event_changeupper(struct netdev_changeupper_info *changeup
if (changeupper_info->event ==
NETDEV_CHANGEUPPER_UNLINK) {
cmds[0] = upper_ips_del_cmd;
- cmds[0].ndev = changeupper_info->upper;
+ cmds[0].ndev = changeupper_info->upper_dev;
cmds[1] = add_cmd;
} else if (changeupper_info->event ==
NETDEV_CHANGEUPPER_LINK) {
cmds[0] = bonding_default_del_cmd;
- cmds[0].ndev = changeupper_info->upper;
+ cmds[0].ndev = changeupper_info->upper_dev;
cmds[1] = add_cmd_upper_ips;
- cmds[1].ndev = changeupper_info->upper;
- cmds[1].filter_ndev = changeupper_info->upper;
+ cmds[1].ndev = changeupper_info->upper_dev;
+ cmds[1].filter_ndev = changeupper_info->upper_dev;
}
}
@@ -590,7 +590,7 @@ static int netdevice_event(struct notifier_block *this, unsigned long event,
case NETDEV_CHANGEUPPER:
netdevice_event_changeupper(
- container_of(ptr, struct netdev_changeupper_info, info),
+ container_of(ptr, struct netdev_notifier_changeupper_info, info),
cmds);
break;
@@ -2115,13 +2115,22 @@ struct netdev_notifier_change_info {
unsigned int flags_changed;
};
+enum netdev_changeupper_event {
+ NETDEV_CHANGEUPPER_LINK,
+ NETDEV_CHANGEUPPER_UNLINK,
+};
+
struct netdev_notifier_changeupper_info {
struct netdev_notifier_info info; /* must be first */
+ enum netdev_changeupper_event event;
struct net_device *upper_dev; /* new upper dev */
bool master; /* is upper dev master */
bool linking; /* is the nofication for link or unlink */
};
+void netdev_changeupper_info_change(struct net_device *dev,
+ struct netdev_notifier_changeupper_info *info);
+
static inline void netdev_notifier_info_init(struct netdev_notifier_info *info,
struct net_device *dev)
{
@@ -3606,20 +3615,6 @@ struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
netdev_features_t features);
-enum netdev_changeupper_event {
- NETDEV_CHANGEUPPER_LINK,
- NETDEV_CHANGEUPPER_UNLINK,
-};
-
-struct netdev_changeupper_info {
- struct netdev_notifier_info info; /* must be first */
- enum netdev_changeupper_event event;
- struct net_device *upper;
-};
-
-void netdev_changeupper_info_change(struct net_device *dev,
- struct netdev_changeupper_info *info);
-
struct netdev_bonding_info {
ifslave slave;
ifbond master;