diff options
author | yongari <yongari@FreeBSD.org> | 2011-12-07 21:29:51 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2011-12-07 21:29:51 +0000 |
commit | 3185636e8556df8d59e8fb523b111b4df478144e (patch) | |
tree | e9f61c3ac4e29b6220bdc812a7c3f3e4525110c9 /contrib/llvm/lib/CodeGen/GCStrategy.cpp | |
parent | cac815ea0554d211072533625da9c9fa4ac5da7d (diff) | |
download | FreeBSD-src-3185636e8556df8d59e8fb523b111b4df478144e.zip FreeBSD-src-3185636e8556df8d59e8fb523b111b4df478144e.tar.gz |
Rework link state tracking and TX/RX MAC configuration.
o Do not report link status if driver is not running.
o TX/RX MAC configuration should be done with resolved speed,
duplex and flow control after establishing a link so it can't
be done in driver initialization routine.
Move the configuration to miibus_statchg callback which will be
called whenever any link state change is detected.
At this moment, flow-control is not enabled yet mainly because
I was not able to set correct flow control parameters to
generate TX pause frames.
o Now TX/RX MAC is enabled only when a valid link is detected.
Rearragnge hardware initialization routine a bit to leave
enabling MAC to miibus_statchg callback. In order to that,
TX/RX DMA engine is enabled in et_init_locked().
o Introduce ET_FLAG_LINK flag to track current link state.
o Introduce ET_FLAG_FASTETHER flag to mark whether controller is
fast ethernet. This flag is checked in miibus_statchg callback
to know whether PHY established a valid link.
o In et_stop(), TX/RX MAC is explicitly disabled instead of
relying on et_reset(). And move et_reset() from et_stop() to
controller initialization. Controler reset is not required here
and it would also clear critial registers(i.e station address,
RX filter configuration, WOL etc) that are required to make WOL
work.
o Switching to current media is done in et_init_locked() after
setting IFF_DRV_RUNNING flag. This should ensure reliable
auto-negotiation/manual link establishment.
o In et_start_locked(), check whether driver got a valid link
before trying to send frames.
o Remove checking a link in et_tick() as this is done by
miibus_statchg callback.
Diffstat (limited to 'contrib/llvm/lib/CodeGen/GCStrategy.cpp')
0 files changed, 0 insertions, 0 deletions