Messages in this thread | | | Subject | Re: [PATCH] add sysfs attribute 'carrier' for net devices | From | Stephen Hemminger <> | Date | Mon, 27 Sep 2004 10:29:13 -0700 |
| |
On Mon, 2004-09-27 at 00:51 +0200, Jesper Juhl wrote: > Hi, > > Here's a patch that adds a new sysfs attribute for net devices. The new > attribute 'carrier' exposes the result of netif_carrier_ok() so that when > a network device has carrier the attribute value is 1 and when there is no > carrier the attribute value is 0. > Very rellevant attribute for network devices in my oppinion, and sysfs is > the logical place for it. > > I've tested this only on my own machine, but I get the expected results: > > With network cable plugged into eth0 : > > juhl@dragon:~$ cat /sys/class/net/eth0/carrier > 1 > juhl@dragon:~$ > > With network cable unplugged : > > juhl@dragon:~$ cat /sys/class/net/eth0/carrier > 0 > juhl@dragon:~$ > > Please review and consider applying. > > Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk> > > diff -u linux-2.6.9-rc2-bk5-orig/net/core/net-sysfs.c linux-2.6.9-rc2-bk5/net/core/net-sysfs.c > --- linux-2.6.9-rc2-bk5-orig/net/core/net-sysfs.c 2004-09-14 23:19:53.000000000 +0200 > +++ linux-2.6.9-rc2-bk5/net/core/net-sysfs.c 2004-09-27 00:24:01.000000000 +0200 > @@ -126,8 +126,21 @@ > return -EINVAL; > } > > +static ssize_t show_carrier(struct class_device *dev, char *buf) > +{ > + struct net_device *net = to_net_dev(dev); > + if (netif_running(net)) { > + if (netif_carrier_ok(net)) > + return snprintf(buf, 3, "%d\n", 1); > + else > + return snprintf(buf, 3, "%d\n", 0);
Using snprintf in this way is kind of silly. since buffer is PAGESIZE. The most concise format of this would be: return sprintf(buf, dec_fmt, !!netif_carrier_ok(dev));
> + } > + return -EINVAL; > +} > + > static CLASS_DEVICE_ATTR(address, S_IRUGO, show_address, NULL); > static CLASS_DEVICE_ATTR(broadcast, S_IRUGO, show_broadcast, NULL); > +static CLASS_DEVICE_ATTR(carrier, S_IRUGO, show_carrier, NULL); > > /* read-write attributes */ > NETDEVICE_SHOW(mtu, fmt_dec); > @@ -186,6 +199,7 @@ > &class_device_attr_type, > &class_device_attr_address, > &class_device_attr_broadcast, > + &class_device_attr_carrier, > NULL > }; >
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |