diff --git a/ChangeLog b/ChangeLog index f298208f28..46f775cc3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-27 Tambet Ingo + + * 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 Attempt to compensate for modems that don't enable full AT parsing before diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c index 6fd3987bcf..4ef4ee1e42 100644 --- a/src/nm-device-ethernet.c +++ b/src/nm-device-ethernet.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -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);