diff mbox series

[ovs-dev,v1,9/9] netdev-linux: Consolidate netlink updates.

Message ID 20251222152356.301762-10-amorenoz@redhat.com
State New
Headers show
Series netdev-linux: Use event-driven netlink notifications. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/cirrus-robot success cirrus build: passed
ovsrobot/github-robot-_Build_and_Test success github build: passed

Commit Message

Adrián Moreno Dec. 22, 2025, 3:23 p.m. UTC
Updating the netdev's information on demand or via stats is pretty much
the same thing. Remove duplicated code.

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
---
 lib/netdev-linux.c | 41 +++--------------------------------------
 1 file changed, 3 insertions(+), 38 deletions(-)
diff mbox series

Patch

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;