Date: Thu, 14 Jan 2010 22:18:55 +0000 (UTC) From: Pyun YongHyeon <yongari@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/dev/ste if_ste.c if_stereg.h Message-ID: <201001142219.o0EMJ6BU028174@repoman.freebsd.org>
index | next in thread | raw e-mail
yongari 2010-01-14 22:18:55 UTC
FreeBSD src repository
Modified files: (Branch: RELENG_7)
sys/dev/ste if_ste.c if_stereg.h
Log:
SVN rev 202315 on 2010-01-14 22:18:55Z by yongari
MFC r200904-200908,200910-200913
r200904:
Don't reinitialize controller if driver is already running. This
reduces number of link state UP/DOWN changes.
r200905:
Reimplement controller reset. Datasheet says full reset takes about
1ms. Since we switched to memory register mapping make sure to
flush PCI posted write by reading the register again.
While I'm here add additional delays in loop while driver waits the
completion of the reset.
r200906:
Overhaul RX filter programming.
o Let RX filter handler program promiscuous/multicast filter as
well as broadcasting.
o Remove unnecessary register access.
o Simplify ioctl handler and have set_rxfilter to handle
IFF_PROMISC and IFF_ALLMULTI change instead of directly
programming the controller.
o Removed unnecessary error variable reinitialization in ioctl
handler.
o Add IFF_DRV_RUNNING check before programming multicast filter.
o Configure maximum allowed frame length before enabling MAC.
Datasheet didn't say the exact ordering of programming sequence
but it looks more natural to set maximum allowed frame length
first prior to enabling controller.
r200907:
Don't report link status if driver is not running.
r200908:
Report the correct result of mii_mediachg(). Previously it always
used to return success without respect to the result.
While I'm here use mii_mediachg() in ste_init_locked which allows
driver to use currently configured media. ste_ifmedia_upd() is
supposed to be called whenever user changes current media settings.
r200910:
Implement hardware MAC statistics counter support. The counters
could be accessed with dev.ste.0.stats sysctl node.
r200911:
Remove unused duplicated register definition. It seems the
definition was made to access STE_ASICCTL register as 16bits but
ste(4) always access the register as 32bits so it was never used
before.
r200912:
Correct STE_COUNTDOWN register offset. The datasheet was wrong.
r200913:
We don't need to generate DMA complete interrupt for every
transmitted frames. So request interrupt for every 16th frames. Due
to the limitation of hardware we can't suppress the interrupt as
driver should have to check TX status register. The TX status
register can store up to 31 TX status so driver can't send more
than 31 frames without reading TX status register.
With this change controller would not generate TX completion
interrupt for every frame, so reclaim transmitted frames in
ste_tick().
Revision Changes Path
1.32.2.7 +223 -93 src/sys/dev/ste/if_ste.c
1.15.2.7 +43 -35 src/sys/dev/ste/if_stereg.h
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001142219.o0EMJ6BU028174>
