[clue] [tech] How to get explicit notification from a network device driver?
Jim Ockers
ockers at ockers.net
Mon Apr 23 14:19:09 MDT 2012
Hi everyone,
The state of the art in determining ethernet link state, and taking any
action based on changes, seems to be to run a daemon that repeatedly
polls the network interface and using an ioctl (SIOCGMIIPHY,
SIOCETHTOOL) finds out if there is an ethernet link or not.
It seems like it would be more deterministic, and less resource
intensive, to just have the network card device driver DO something (or
cause something to be done) when the link state changes. For an
embedded device with limited CPU I think while(1) polling is
sub-optimal. It also seems like it should not be too hard to get the
device driver to do something useful in addition to its printk() message
about the changed link state.
How could I do this? I think system() is a bad idea because I'm not sure
a device driver should be starting other processes that may block or
something. Also system() requires unistd.h and the kernel compile/build
system doesn't seem to give drivers access to that sort of normal libc
functions. Anyway I welcome any ideas.
For example the driver doesn't compile with the 2 lines I added (marked
with +), and also unistd.h is not found even though I #included it:
if (!port->link) {
netif_carrier_off(dev);
printk(KERN_INFO "%s: link down\n", dev->name);
+ printk(KERN_INFO "%s: link down, running
/usr/bin/wanlinkdown\n", dev->name);
+ system("/usr/bin/wanlinkdown");
return;
}
I'm not heart-broken that this doesn't work because I didn't like this
approach to begin with, but I'm still not sure exactly what would be the
best way to get a notification without polling. So far the only
"notification" is the KERN_INFO message that gets printed to the dmesg
log and also whatever is specified in syslog.conf (kern.info goes to *,
which includes the console). In addition to the notification I want it
to run a program or something so I get explicit real-time notification
of link state changes without constantly polling.
Thanks,
Jim
--
Jim Ockers, P.E., P.Eng. (ockers at ockers.net)
Contact info: http://www.ockers.net/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cluedenver.org/pipermail/clue/attachments/20120423/953974da/attachment.html
More information about the clue
mailing list