Skip to content

Commit

Permalink
netdev-linux: Update LAG in all cases.
Browse files Browse the repository at this point in the history
In some cases, when processing a netlink change event, it's possible for
an alternate part of OvS (like the IPv6 endpoint processing) to hold an
active netdev interface.  This creates a race-condition, where sometimes
the OvS change processing will take the normal path.  This doesn't work
because the netdev device object won't actually be enslaved to the
ovs-system (for instance, a linux bond) and ingress qdisc entries will
be missing.

To address this, we update the LAG information in ALL cases where
LAG information could come in.

Fixes: d22f892 ("netdev-linux: monitor and offload LAG slaves to TC")
Cc: Marcelo Leitner <mleitner@redhat.com>
Cc: John Hurley <john.hurley@netronome.com>
Acked-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
  • Loading branch information
apconole authored and igsilya committed May 15, 2020
1 parent c026c9d commit 7ff4ce8
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions lib/netdev-linux.c
Expand Up @@ -642,10 +642,6 @@ netdev_linux_update_lag(struct rtnetlink_change *change)
{
struct linux_lag_slave *lag;

if (!rtnetlink_type_is_rtnlgrp_link(change->nlmsg_type)) {
return;
}

if (change->slave && netdev_linux_kind_is_lag(change->slave)) {
lag = shash_find_data(&lag_shash, change->ifname);

Expand Down Expand Up @@ -743,8 +739,11 @@ netdev_linux_run(const struct netdev_class *netdev_class OVS_UNUSED)
netdev_linux_update(netdev, nsid, &change);
ovs_mutex_unlock(&netdev->mutex);
}
else if (!netdev_ && change.ifname) {
/* Netdev is not present in OvS but its master could be. */

if (change.ifname &&
rtnetlink_type_is_rtnlgrp_link(change.nlmsg_type)) {

/* Need to try updating the LAG information. */
ovs_mutex_lock(&lag_mutex);
netdev_linux_update_lag(&change);
ovs_mutex_unlock(&lag_mutex);
Expand Down

0 comments on commit 7ff4ce8

Please sign in to comment.