]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNetDevSwitchdevFeature: Make failure to get 'family_id' non-fatal
authorMichal Privoznik <mprivozn@redhat.com>
Sun, 19 Apr 2020 05:25:34 +0000 (07:25 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 20 Apr 2020 09:30:37 +0000 (11:30 +0200)
I've just got a new machine and I'm still converging on the
kernel config. Anyway, since I don't have enabled any of SRIO-V
drivers, my kernel doesn't have NET_DEVLINK enabled (i.e.
virNetDevGetFamilyId() returns 0). But this makes nodedev driver
ignore all interfaces, because when enumerating all devices via
udev, the control reaches virNetDevSwitchdevFeature() eventually
and subsequently virNetDevGetFamilyId() which 'fails'. Well, it's
not really a failure - the virNetDevSwitchdevFeature() stub
simply returns 0.

Also, move the call a few lines below, just around the place
where it's needed.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/util/virnetdev.c

index 3431aaf6a91d6c84a682eb95a0ae1bddf8fe77bf..ff86aa1fc9b66f1038eff989d1549d08792fd5a1 100644 (file)
@@ -3146,9 +3146,7 @@ virNetDevSwitchdevFeature(const char *ifname,
     int is_vf = -1;
     int ret = -1;
     uint32_t family_id;
-
-    if (virNetDevGetFamilyId(DEVLINK_GENL_NAME, &family_id) <= 0)
-        return ret;
+    int rv;
 
     if ((is_vf = virNetDevIsVirtualFunction(ifname)) < 0)
         return ret;
@@ -3168,6 +3166,9 @@ virNetDevSwitchdevFeature(const char *ifname,
         goto cleanup;
     }
 
+    if ((rv = virNetDevGetFamilyId(DEVLINK_GENL_NAME, &family_id)) <= 0)
+        return rv;
+
     if (!(nl_msg = nlmsg_alloc_simple(family_id,
                                       NLM_F_REQUEST | NLM_F_ACK))) {
         virReportOOMError();