Message ID | 20230714025201.2038731-3-liuhangbin@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Fix up dev flags when add P2P down link | expand |
Fri, Jul 14, 2023 at 04:52:01AM CEST, liuhangbin@gmail.com wrote: >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. > >Reported-by: Liang Li <liali@redhat.com> >Links: 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> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
On 14/07/2023 05:52, Hangbin Liu wrote: > 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. > > Reported-by: Liang Li <liali@redhat.com> > Links: 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> > --- > drivers/net/team/team.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c > index 555b0b1e9a78..c11783efe13f 100644 > --- a/drivers/net/team/team.c > +++ b/drivers/net/team/team.c > @@ -2135,6 +2135,10 @@ 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); here too, looks like missing {} > } > > static int team_dev_type_check_change(struct net_device *dev,
On Fri, Jul 14, 2023 at 09:52:03AM +0300, Nikolay Aleksandrov wrote: > > + if (port_dev->flags & IFF_POINTOPOINT) > > + dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST); > > + dev->flags |= (IFF_POINTOPOINT | IFF_NOARP); > > here too, looks like missing {} Yes, you are right. I forgot to add the {}. When do testing before post the patch. I just checked adding gre device to bonding and didn't check adding ethernet interface... Thanks for your review. Hangbin
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index 555b0b1e9a78..c11783efe13f 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c @@ -2135,6 +2135,10 @@ 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 int team_dev_type_check_change(struct net_device *dev,
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. Reported-by: Liang Li <liali@redhat.com> Links: 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> --- drivers/net/team/team.c | 4 ++++ 1 file changed, 4 insertions(+)