15
15
* with this program; if not, write to the Free Software Foundation, Inc.,
16
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
* Copyright (C) 2005 - 2011 Red Hat, Inc.
18
* Copyright (C) 2005 - 2012 Red Hat, Inc.
19
19
* Copyright (C) 2006 - 2008 Novell, Inc.
25
25
#include <linux/if.h>
26
26
#include <linux/if_infiniband.h>
27
27
#include <netinet/ether.h>
28
#include <linux/sockios.h>
29
#include <linux/version.h>
30
#include <linux/ethtool.h>
31
#include <sys/ioctl.h>
29
34
#include "nm-device-wired.h"
30
35
#include "nm-device-private.h"
57
63
} NMDeviceWiredPrivate;
66
/* Returns speed in Mb/s */
68
ethtool_get_speed (NMDeviceWired *self)
72
struct ethtool_cmd edata = {
77
g_return_val_if_fail (self != NULL, 0);
79
fd = socket (PF_INET, SOCK_DGRAM, 0);
81
nm_log_warn (LOGD_HW, "couldn't open control socket.");
85
memset (&ifr, 0, sizeof (struct ifreq));
86
strncpy (ifr.ifr_name, nm_device_get_iface (NM_DEVICE (self)), IFNAMSIZ);
87
ifr.ifr_data = (char *) &edata;
89
if (ioctl (fd, SIOCETHTOOL, &ifr) < 0)
92
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
95
speed = ethtool_cmd_speed (&edata);
98
if (speed == G_MAXUINT16 || speed == G_MAXUINT32)
107
set_speed (NMDeviceWired *self, const guint32 speed)
109
NMDeviceWiredPrivate *priv;
111
g_return_if_fail (NM_IS_DEVICE (self));
113
priv = NM_DEVICE_WIRED_GET_PRIVATE (self);
114
if (priv->speed == speed)
118
g_object_notify (G_OBJECT (self), "speed");
120
nm_log_dbg (LOGD_HW | NM_DEVICE_WIRED_LOG_LEVEL (NM_DEVICE (self)),
121
"(%s): speed is now %d Mb/s",
122
nm_device_get_iface (NM_DEVICE (self)),
60
127
carrier_action_defer_clear (NMDeviceWired *self)
538
606
NMDeviceWiredPrivate *priv;
540
g_return_val_if_fail (dev != NULL, -1);
608
g_return_val_if_fail (dev != NULL, FALSE);
542
610
priv = NM_DEVICE_WIRED_GET_PRIVATE (dev);
543
611
return priv->carrier;
615
* nm_device_wired_get_speed:
616
* @dev: an #NMDeviceWired
620
* Return value: @dev's speed in Mb/s
623
nm_device_wired_get_speed (NMDeviceWired *dev)
625
NMDeviceWiredPrivate *priv;
627
g_return_val_if_fail (dev != NULL, 0);
629
priv = NM_DEVICE_WIRED_GET_PRIVATE (dev);