From: Hangbin Liu <liuhangbin@gmail.com>
To: netdev@vger.kernel.org
Cc: Jay Vosburgh <j.vosburgh@gmail.com>,
"David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Eric Dumazet <edumazet@google.com>, Liang Li <liali@redhat.com>,
Jiri Pirko <jiri@nvidia.com>,
Nikolay Aleksandrov <razor@blackwall.org>,
Hangbin Liu <liuhangbin@gmail.com>
Subject: [PATCHv3 net 2/2] team: reset team's flags when down link is P2P device
Date: Tue, 18 Jul 2023 18:17:41 +0800 [thread overview]
Message-ID: <20230718101741.2751799-3-liuhangbin@gmail.com> (raw)
In-Reply-To: <20230718101741.2751799-1-liuhangbin@gmail.com>
When adding a point to point downlink to team device, we neglected to reset
the team's flags, which were still using flags like BROADCAST and
MULTICAST. Consequently, this would initiate ARP/DAD for P2P downlink
interfaces, such as when adding a GRE device to team device. Fix this by
remove multicast/broadcast flags and add p2p and noarp flags.
After removing the none ethernet interface and adding an ethernet interface
to team, we need to reset team interface flags and hw address back. Unlike
bonding interface, team do not need restore IFF_MASTER, IFF_SLAVE flags.
Reported-by: Liang Li <liali@redhat.com>
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2221438
Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
---
v3: add function team_ether_setup to reset team back to ethernet.
v2: Add the missed {} after if checking.
---
drivers/net/team/team.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 555b0b1e9a78..2e124a3b81d1 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -2135,6 +2135,20 @@ static void team_setup_by_port(struct net_device *dev,
dev->mtu = port_dev->mtu;
memcpy(dev->broadcast, port_dev->broadcast, port_dev->addr_len);
eth_hw_addr_inherit(dev, port_dev);
+
+ if (port_dev->flags & IFF_POINTOPOINT) {
+ dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
+ dev->flags |= (IFF_POINTOPOINT | IFF_NOARP);
+ }
+}
+
+static void team_ether_setup(struct net_device *dev)
+{
+ unsigned int flags = dev->flags & IFF_UP;
+
+ ether_setup(dev);
+ dev->flags |= flags;
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
}
static int team_dev_type_check_change(struct net_device *dev,
@@ -2158,7 +2172,14 @@ static int team_dev_type_check_change(struct net_device *dev,
}
dev_uc_flush(dev);
dev_mc_flush(dev);
- team_setup_by_port(dev, port_dev);
+
+ if (port_dev->type != ARPHRD_ETHER) {
+ team_setup_by_port(dev, port_dev);
+ } else {
+ team_ether_setup(dev);
+ eth_hw_addr_inherit(dev, port_dev);
+ }
+
call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE, dev);
return 0;
}
--
2.38.1
next prev parent reply other threads:[~2023-07-18 10:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-18 10:17 [PATCHv3 net 0/2] Fix up dev flags when add P2P down link Hangbin Liu
2023-07-18 10:17 ` [PATCHv3 net 1/2] bonding: reset bond's flags when down link is P2P device Hangbin Liu
2023-07-18 10:17 ` Hangbin Liu [this message]
2023-07-20 8:29 ` [PATCHv3 net 2/2] team: reset team's " Paolo Abeni
2023-07-20 9:46 ` Hangbin Liu
2023-07-20 10:40 ` Paolo Abeni
2023-07-21 3:43 ` Hangbin Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230718101741.2751799-3-liuhangbin@gmail.com \
--to=liuhangbin@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=j.vosburgh@gmail.com \
--cc=jiri@nvidia.com \
--cc=kuba@kernel.org \
--cc=liali@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).