2008-10-27 Tambet Ingo <tambet@gmail.com>
authorTambet Ingo <tambet@gmail.com>
Mon, 27 Oct 2008 10:50:21 +0000 (10:50 +0000)
committerTambet Ingo <tambet@gmail.com>
Mon, 27 Oct 2008 10:50:21 +0000 (10:50 +0000)
* src/nm-device-ethernet.c (nm_device_ethernet_get_speed): Implement
correct speed reporting for fast devices (kernel >= 2.6.27).

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4226 4912f4e0-d625-0410-9fb7-b9a5a253dbdc

ChangeLog
src/nm-device-ethernet.c

index f298208..46f775c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-10-27  Tambet Ingo  <tambet@gmail.com>
+
+       * src/nm-device-ethernet.c (nm_device_ethernet_get_speed): Implement
+       correct speed reporting for fast devices (kernel >= 2.6.27).
+
 2008-10-26  Dan Williams  <dcbw@redhat.com>
 
        Attempt to compensate for modems that don't enable full AT parsing before
index 6fd3987..4ef4ee1 100644 (file)
@@ -29,6 +29,7 @@
 #include <stdlib.h>
 #include <linux/types.h>
 #include <linux/sockios.h>
+#include <linux/version.h>
 #include <linux/ethtool.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
@@ -453,7 +454,14 @@ nm_device_ethernet_get_speed (NMDeviceEthernet *self)
        if (ioctl (fd, SIOCETHTOOL, &ifr) == -1)
                goto out;
 
-       speed = edata.speed != G_MAXUINT16 ? edata.speed : 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
+       speed = edata.speed;
+#else
+       speed = ethtool_cmd_speed (&edata);
+#endif
+
+       if (speed == G_MAXUINT16 || speed == G_MAXUINT32)
+               speed = 0;
 
 out:
        close (fd);