Index: /trunk/src/VBox/Main/src-server/linux/NetIf-linux.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/linux/NetIf-linux.cpp	(revision 43667)
+++ /trunk/src/VBox/Main/src-server/linux/NetIf-linux.cpp	(revision 43668)
@@ -150,21 +150,31 @@
         }
         /*
-         * I wish I could do simple ioctl here, but older kernels require root
-         * privileges for any ethtool commands.
+         * Don't even try to get speed for non-Ethernet interfaces, it only
+         * produces errors.
          */
-        char szBuf[256];
-        /* First, we try to retrieve the speed via sysfs. */
-        RTStrPrintf(szBuf, sizeof(szBuf), "/sys/class/net/%s/speed", pszName);
-        fp = fopen(szBuf, "r");
-        if (fp && fscanf(fp, "%u", &pInfo->uSpeedMbits) == 1)
-            fclose(fp);
-        else
-        {
-            /* Failed to get speed via sysfs, go to plan B. */
-            int rc = NetIfAdpCtlOut(pszName, "speed", szBuf, sizeof(szBuf));
-            if (RT_SUCCESS(rc))
-                pInfo->uSpeedMbits = RTStrToUInt32(szBuf);
-            else
-                pInfo->uSpeedMbits = 0;
+        pInfo->uSpeedMbits = 0;
+        if (pInfo->enmMediumType == NETIF_T_ETHERNET)
+        {
+            /*
+             * I wish I could do simple ioctl here, but older kernels require root
+             * privileges for any ethtool commands.
+             */
+            char szBuf[256];
+            /* First, we try to retrieve the speed via sysfs. */
+            RTStrPrintf(szBuf, sizeof(szBuf), "/sys/class/net/%s/speed", pszName);
+            fp = fopen(szBuf, "r");
+            if (fp)
+            {
+                if (fscanf(fp, "%u", &pInfo->uSpeedMbits) != 1)
+                    pInfo->uSpeedMbits = 0;
+                fclose(fp);
+            }
+            if (pInfo->uSpeedMbits == 0)
+            {
+                /* Failed to get speed via sysfs, go to plan B. */
+                int rc = NetIfAdpCtlOut(pszName, "speed", szBuf, sizeof(szBuf));
+                if (RT_SUCCESS(rc))
+                    pInfo->uSpeedMbits = RTStrToUInt32(szBuf);
+            }
         }
     }
