This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Event driven ethernet status change
- From: Jonathan Larmour <jifl at eCosCentric dot com>
- To: Matt Jerdonek <maj1224 at yahoo dot com>
- Cc: Discussion eCos <ecos-discuss at sources dot redhat dot com>
- Date: Thu, 04 Mar 2004 04:12:06 +0000
- Subject: Re: [ECOS] Event driven ethernet status change
- References: <20040303172712.99776.qmail@web14201.mail.yahoo.com>
Matt Jerdonek wrote:
Hi Folks,
I need a way for an ethernet driver (but specifically
the powerpc/fec driver) to inform an application of a
loss and restoral of ethernet carrier.
If possible, I want avoid having the application poll
the driver for its status. Instead, I'd like driver
to inform the application of status changes.
It looks like I can call if_down(...) or if_up(...)
from the ethernet driver, then, in the application,
listen on the routing socket for status changes. Is
this a reasonable approach? Is there a better way?
I'm not definite, but your way might risk losing data since the interfaces
are administratively down for a while so any threads trying to send would
instantly get errors (no route to host probably), even if the link loss is
entirely transient. That's not the way "big UNIX" works anyway.
Instead up versus down is an administrative thing. I think the flag you'd
want to change if anything is IFF_RUNNING although that may interact badly
with the way the generic eth layer uses that flag, I'm not sure.
But the driver can get at those flags:
struct ifnet *ifp = &sc->sc_arpcom.ac_if;
ifp->if_flags &= ~IFF_RUNNING;
So if you enable the HBERR in the IEVENT mask for the FEC you can diddle
the flags.
*However* the IFF_RUNNING status is not passed to the routing socket so
you'll still end up polling.
So either you can add your own private hook to the FEC driver to make a
callback, or you would poll.
Jifl
--
eCosCentric http://www.eCosCentric.com/ The eCos and RedBoot experts
>>>>> Visit us in booth 2527 at the Embedded Systems Conference 2004 <<<<<
March 30 - April 1, San Francisco http://www.esconline.com/electronicaUSA/
--["No sense being pessimistic, it wouldn't work anyway"]-- Opinions==mine
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss