Updating the netdev's information on demand or via stats is pretty much
the same thing. Remove duplicated code.

Signed-off-by: Adrian Moreno <[email protected]>
---
 lib/netdev-linux.c | 41 +++--------------------------------------
 1 file changed, 3 insertions(+), 38 deletions(-)

diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index 0d3e0354d..eb7fe85ca 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -6900,6 +6900,7 @@ get_ifindex(const struct netdev *netdev_, int *ifindexp)
 
 static int
 netdev_linux_update_via_netlink(struct netdev_linux *netdev)
+    OVS_REQUIRES(netdev->mutex)
 {
     struct ofpbuf request;
     struct ofpbuf *reply;
@@ -6933,44 +6934,8 @@ netdev_linux_update_via_netlink(struct netdev_linux 
*netdev)
     if (rtnetlink_parse(reply, change)
         && !change->irrelevant
         && change->nlmsg_type == RTM_NEWLINK) {
-        bool changed = false;
-        error = 0;
-
-        /* Update netdev from rtnl msg and increment its seq if needed. */
-        if ((change->ifi_flags ^ netdev->ifi_flags) & IFF_RUNNING) {
-            netdev->carrier_resets++;
-            changed = true;
-        }
-        if (change->ifi_flags != netdev->ifi_flags) {
-            netdev->ifi_flags = change->ifi_flags;
-            changed = true;
-        }
-        netdev->cache_valid |= VALID_FLAGS;
-
-        if (change->mtu && change->mtu != netdev->mtu) {
-            netdev->mtu = change->mtu;
-            netdev->cache_valid |= VALID_MTU;
-            netdev->netdev_mtu_error = 0;
-            changed = true;
-        }
-        if (!eth_addr_is_zero(change->mac)
-            && !eth_addr_equals(change->mac, netdev->etheraddr)) {
-            netdev->etheraddr = change->mac;
-            netdev->cache_valid |= VALID_ETHERADDR;
-            netdev->ether_addr_error = 0;
-            changed = true;
-        }
-        if (change->if_index != netdev->ifindex) {
-            netdev->ifindex = change->if_index;
-            netdev->cache_valid |= VALID_IFINDEX;
-            netdev->get_ifindex_error = 0;
-            changed = true;
-        }
-        if (change->primary && netdev_linux_kind_is_lag(change->primary)) {
-            netdev->is_lag_primary = true;
-        }
-        if (changed) {
-            netdev_change_seq_changed(&netdev->up);
+        if (!netdev_linux_check(netdev, change)) {
+            netdev_linux_update__(netdev, change);
         }
     } else {
         error = EINVAL;
-- 
2.52.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to