summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/lib/CodeGen/SplitKit.cpp
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2011-12-07 21:29:51 +0000
committeryongari <yongari@FreeBSD.org>2011-12-07 21:29:51 +0000
commit3185636e8556df8d59e8fb523b111b4df478144e (patch)
treee9f61c3ac4e29b6220bdc812a7c3f3e4525110c9 /contrib/llvm/lib/CodeGen/SplitKit.cpp
parentcac815ea0554d211072533625da9c9fa4ac5da7d (diff)
downloadFreeBSD-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/SplitKit.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud