Home | History | Annotate | Download | only in ic
History log of /src/sys/dev/ic/i82557.c
RevisionDateAuthorComments
 1.162  29-Jun-2024  riastradh if_stats(9): Add ifp argument to if_stat..._ref.

This will enable us to pass the ifp through to a dtrace probe inside.

No functional change intended in this change, but this is an API
change visible to modules so it shouldn't be pulled up.

PR kern/58377
 1.161  09-Feb-2024  andvar fix spelling mistakes, mainly in comments and log messages.
 1.160  25-Jun-2022  tsutsui Pass proper status values to rnd_add_uint32(9) as rnd(9) man page claims.
 1.159  07-Feb-2020  thorpej Use callout_setfunc() / callout_schedule().
 1.158  04-Feb-2020  thorpej Use ifmedia_fini().
 1.157  29-Jan-2020  thorpej Adopt <net/if_stats.h>.
 1.156  30-Oct-2019  msaitoh branches: 1.156.2;
if_percpuq(9) automatically increments if_ipackets, so don't add number of
RX frames from device's statistics counter to if_ipackets to avoid double
count.
 1.155  20-Sep-2019  maxv Fix direction of the loop.

Found by the lgtm bot.
 1.154  09-Jul-2019  msaitoh branches: 1.154.2;
Don't automatically set ec_capenable's ETHERCAP_VLAN_HWTAGGING bit in
vlan_config() to make it user-controllable. Instead, set the bit in
xxx_attach().
 1.153  28-May-2019  msaitoh Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
 1.152  23-May-2019  msaitoh No functional change:
- Simplify MII structure initialization and reference.
- u_int*_t -> uint*_t.
- KNF
 1.151  22-Apr-2019  msaitoh In drivers which use MII(4) and have hook SIOC[GS]IFMEDIA which just pass to
ifmedia_ioctl(), the hook is not required because ether_ioctl has it
(if_ethersubr.c rev. 1.160). These drivers don't return ENETRESET in
ifmedia_ioctl(), so no functional change.
 1.150  22-Jan-2019  msaitoh Change MII PHY read/write API from:

int (*mii_readreg_t)(device_t, int, int);
void (*mii_writereg_t)(device_t, int, int, int);
to:

int (*mii_readreg_t)(device_t, int, int, uint16_t *);
int (*mii_writereg_t)(device_t, int, int, uint16_t);

Now we can test if a read/write operation failed or not by the return value.

In 802.3 spec says that the PHY shall not respond to read/write transaction
to the unimplemented register(22.2.4.3). Detecting timeout can be used to
check whether a register is implemented or not (if the register conforms to
the spec). ukphy(4) can be used this for MII_MMDACR and MII_MMDAADR.

Note that I noticed that the following code do infinite loop in the
read/wirte function. If it accesses unimplemented PHY register, it will hang.
It should be fixed:

arm/at91/at91emac.c
arm/ep93xx/epe.c
arm/omap/omapl1x_emac.c
mips/ralink/ralink_eth.c
arch/powerpc/booke/dev/pq3etsec.c(read)
dev/cadence/if_cemac.c <- hkenken
dev/ic/lan9118.c


Tested with the following device:

axe+ukphy
axe+rgephy
axen+rgephy (tested by Andrius V)
wm+atphy
wm+ukphy
wm+igphy
wm+ihphy
wm+makphy
sk+makphy
sk+brgphy
sk+gentbi
msk+makphy
sip+icsphy
sip+ukphy
re+rgephy
bge+brgphy
bnx+brgphy
gsip+gphyter
rtk+rlphy
fxp+inphy (tested by Andrius V)
tlp+acphy
ex+exphy
epic+qsphy
vge+ciphy (tested by Andrius V)
vr+ukphy (tested by Andrius V)
vte+ukphy (tested by Andrius V)

Not tested (MAC):
arm:at91emac
arm:cemac
arm:epe
arm:geminigmac
arm:enet
arm:cpsw
arm:emac(omac)
arm:emac(sunxi)
arm:npe
evbppc:temac
macppc:bm
macppc:gm
mips:aumac
mips:ae
mips:cnmac
mips:reth
mips:sbmac
playstation2:smap
powerpc:tsec
powerpc:emac(ibm4xx)
sgimips:mec
sparc:be
sf
ne(ax88190, dl10019)
awge
ep
gem
hme
smsh
mtd
sm
age
alc
ale
bce
cas
et
jme
lii
nfe
pcn
ste
stge
tl
xi
aue
mue
smsc
udav
url

Not tested (PHY):
amhphy
bmtphy
dmphy
etphy
glxtphy
ikphy
iophy
lxtphy
nsphyter
pnaphy
rdcphy
sqphy
tlphy
tqphy
urlphy
 1.149  26-Jun-2018  msaitoh branches: 1.149.2;
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.148  26-Sep-2017  knakahara branches: 1.148.2;
VLAN ID uses pkthdr instead of mtag now. Contributed by s-yamaguchi@IIJ.

I just commit by proxy. Reviewed by joerg@n.o and christos@n.o, thanks.
See http://mail-index.netbsd.org/tech-net/2017/09/26/msg006459.html

XXX need pullup to -8 branch
 1.147  20-Feb-2017  ozaki-r branches: 1.147.6;
Apply deferred if_start to more drivers
 1.146  15-Dec-2016  ozaki-r branches: 1.146.2;
Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input

The benefits of the change are:
- We can reduce codes
- We can provide the same behavior between drivers
- Where/When if_ipackets is counted up
- Note that some drivers still update packet statistics in their own
way (periodical update)
- Moved bpf_mtap run in softint
- This makes it easy to MP-ify bpf

Proposed on tech-kern and tech-net
 1.145  10-Jun-2016  ozaki-r branches: 1.145.2;
Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.144  09-Feb-2016  ozaki-r Introduce softint-based if_input

This change intends to run the whole network stack in softint context
(or normal LWP), not hardware interrupt context. Note that the work is
still incomplete by this change; to that end, we also have to softint-ify
if_link_state_change (and bpf) which can still run in hardware interrupt.

This change softint-ifies at ifp->if_input that is called from
each device driver (and ieee80211_input) to ensure Layer 2 runs
in softint (e.g., ether_input and bridge_input). To this end,
we provide a framework (called percpuq) that utlizes softint(9)
and percpu ifqueues. With this patch, rxintr of most drivers just
queues received packets and schedules a softint, and the softint
dequeues packets and does rest packet processing.

To minimize changes to each driver, percpuq is allocated in struct
ifnet for now and that is initialized by default (in if_attach).
We probably have to move percpuq to softc of each driver, but it's
future work. At this point, only wm(4) has percpuq in its softc
as a reference implementation.

Additional information including performance numbers can be found
in the thread at tech-kern@ and tech-net@:
http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
 1.143  13-Apr-2015  riastradh Convert sys/dev to use <sys/rndsource.h>.
 1.142  10-Aug-2014  tls branches: 1.142.4;
Merge tls-earlyentropy branch into HEAD.
 1.141  12-Sep-2013  martin branches: 1.141.2;
Remove unused variable
 1.140  22-Jul-2012  matt branches: 1.140.2; 1.140.4;
Fix mii_statchg to take a 'struct ifnet *' instead of device_t. This fixes
problem with a common MDIO bus used for multiple interfaces.
Some drivers converted to CFATTACL_DECL_NEW.
 1.139  02-Feb-2012  tls Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.138  02-Sep-2011  msaitoh branches: 1.138.2; 1.138.6;
Add support for some fxp devices from FreeBSD and OpenBSD.
{Free,Open}BSD say that we have to do some work to make fxp
stable.
 1.137  30-Mar-2011  jakllsch IFF_PROMISC implys IFF_ALLMULTI.
Should fix PR#43186.
 1.136  13-Nov-2010  uebayasi branches: 1.136.2;
Include sys/proc.h for tsleep, wakeup.
 1.135  05-Apr-2010  joerg Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf
check into the inline functions as well the fourth argument for
bpf_attach.
 1.134  22-Mar-2010  dyoung Check whether the fxp(4) actually attached before calling fxp_stop().
 1.133  22-Mar-2010  dyoung In fxp_detach(), fxp_stop(), first. fxp_stop() stops the callout.
Destroy the callout in fxp_detach().
 1.132  25-Feb-2010  dyoung branches: 1.132.2;
Make fxp at cardbus detach during shutdown.

Stop calling (*cardbus_ctrl) to enable bus mastering, I/O and memory
spaces on the CardBus bridge. cbb(4) always enables that stuff,
anyway. In the process, avoid remembering what BAR we mapped by
writing CARDBUS_{IO,MEM}_ENABLE to sc_cben or sc_cbenable, and
record the BAR in use sc_bar, instead.

Replace more CARDBUS_ constants with PCI_ constants.

Compile-tested, only.
 1.131  19-Jan-2010  pooka branches: 1.131.2;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.130  15-Sep-2009  dyoung Simplify activation routines: don't call mii_activate(), it's a
no-op. Don't block interrupts, if_deactivate() does it.
Compile-tested, only.
 1.129  16-Mar-2009  tsutsui Pull a fix from hme.c rev 1.73 (to #if 0'ed out part):
> Fix a bug in calculation of checksum deduction:
> - To get 16 bit one's complement value from uint32_t variable,
> higher 16 bits should be ignored.
> - RFC 1624 describes methods to recalculate checksum field in headers,
> i.e. one's complement of one's complement sum that could be 0x0000,
> but we don't have to use the strategy to deduct one's complement sum
> itself which won't be zero but should be 0xffff.
 1.128  15-Mar-2009  tsutsui Tweak comments and conditionals about EXT_RFA and IPCB.
 1.127  11-Mar-2009  tsutsui u_intNN_t -> uintNN_t
 1.126  09-Mar-2009  tsutsui Computed checksum value by the FXPF_82559_RXCSUM feature includes data
in IP headers, so we have to deduct not only IP option headers but all
IP headers. But in TCP/UDP layer we can assume the IP header is valid
and a sum of the IP header part should be 0xffff, so we don't have to
bother to deduct it from the computed checksum.
 1.125  07-Mar-2009  tsutsui Add TCPv4/UDPv4 RX hardware checksum support for i82559 and later chips
which don't have EXT_RFA and IPCB support. From hme(4) driver and
FreeBSD's fxp(4). Tested on i82559.

XXX: Probably we should have a common function to parse RX packet headers
XXX: to handle a raw checksum value and share it among hme(4) and gem(4) etc.
 1.124  04-Mar-2009  tsutsui Use FXPF_EXT_RFA flag instead of FXPF_EXT_TXCB to see IPCB capability
because EXT_RFA for RX cksum is always available with IPCB for TX cksum
but i82558 and i82559 have only EXT_TXCB without IPCB.

Tested on the following fxp cards:
fxp0 at pci0 dev 14 function 0: Intel i82557 Ethernet, rev 2
fxp0 at pci0 dev 14 function 0: i82559 Ethernet, rev 8
fxp0 at pci0 dev 14 function 0: i82550 Ethernet, rev 12
 1.123  20-Feb-2009  mrg - remove FXPF_IPCB flag. it should always/only be used with the code
conditional on FXPF_EXT_TXCB, so, replace all uses with that
- for the pci frontend, reestablish some flags lost the the prior
changes and simplify one of the cases

this fixes PR 40677 and may fix PR 40431.
 1.122  18-Jan-2009  mrg branches: 1.122.2;
The PCI revision numbers are unique to a PCI vendor/product
ID pair. Misuse of the revision numbers was causing some of the chip
features to be disabled on some integrated Intel chips. So, move the
determination of the features into the bus frontend, where the
vendor/product ID is known. (Note: sc_rev should be removed. The
microcode patch stuff is also busted and needs to be fixed.) Also,
poll the actual flow control status in inphy, rather than making
assumptions.

contributed anonymously.
 1.121  05-Dec-2008  tsutsui Wrap long lines.
 1.120  04-Dec-2008  tsutsui Don't pass uint8_t values to le16toh() in fxp_rx_hwcksum().
fxp(4)'s RX hwcksum results weren't used at all on big endian machines.

Checked by i82550 and vmstat -ev on macppc GENERIC kernel with
options INET_CSUM_COUNTERS,TCP_CSUM_COUNTERS,UDP_CSUM_COUNTERS.
 1.119  04-Dec-2008  tsutsui Add a missed htole32() on the previous ip4csum-tx bug workaround.
 1.118  04-Dec-2008  tsutsui Sort Tx/Rx macro in previous.
 1.117  03-Dec-2008  tsutsui Add a workaround for hardware ip4csum-tx bug and enable it.
Confirmed on i82550 rev 12 and UDP fragment packets by ttcp(1).
 1.116  03-Dec-2008  tsutsui Call BUS_DMASYNC_PREREAD more strictly on polling DMA descriptors.
 1.115  31-Jul-2008  ws branches: 1.115.2; 1.115.4;
Calling fxp_init within the interrupt handler results in
a hang (continuous assertion of FXP_SCB_STATACK_RNR).
Instead do it in the ioctl routine after receiving a
signal from the interrupt handler.
 1.114  09-Jul-2008  joerg - device/softc split for fxp(4)
 1.113  28-Apr-2008  martin branches: 1.113.2; 1.113.4; 1.113.6;
Remove clause 3 and 4 from TNF licenses
 1.112  08-Apr-2008  cegger branches: 1.112.2; 1.112.4;
use aprint_*_dev and device_xname
 1.111  07-Feb-2008  dyoung branches: 1.111.6;
Start patching up the kernel so that a network driver always has
the opportunity to handle an ioctl before generic ifioctl handling
occurs. This will ease extending the kernel and sharing of code
between drivers.

First steps: Make the signature of ifioctl_common() match struct
ifinet->if_ioctl. Convert SIOCSIFCAP and SIOCSIFMTU to the new
ifioctl() regime, throughout the kernel.
 1.110  19-Jan-2008  dyoung Make many ethernet drivers share the common code for MII media
handling, ether_mediastatus() and ether_mediachange(). Check for
a non-ENXIO error return from mii_mediachg(). (ENXIO indicates
that a PHY is suspended.)

This patch shrinks the source code size by 979 lines. There was
a 5100-byte savings on the NetBSD/i386 kernel configuration, ALL.

I have made a few miscellaneous changes, too:

gem(4): use LIST_EMPTY(), LIST_FOREACH().
mtd(4): handle media ioctls, for a change!
axe(4): do not track link status in sc->axe_link any longer
nfe(4), aue(4), axe(4), udav(4), url(4): do not reset all PHYs
on a change of media

Except for the change to mtd(4), no functional changes are intended.

XXX This patch affects more architectures than I can feasibly
XXX compile and run. I have compiled macppc, sparc64, i386. I
XXX have run the patches on i386 boxen with bnx(4) and sip(4).
XXX Compiling and running on evbmips (MERAKI, ADM5120) is in
XXX progress.
 1.109  29-Dec-2007  tsutsui Fix typo in comments.
 1.108  17-Dec-2007  tsutsui Fix from YAMAGUCHI Takahiro in PR kern/30023:
Pass correct EEPROM address in fxp_write_eeprom().
 1.107  13-Dec-2007  degroote Remove the shutdown hook (pmf takes care about it already), as suggested by joerg@
 1.106  10-Dec-2007  degroote branches: 1.106.2;
Register fxp @ pci to the pmf framework
Kill reference to old powerhook framework.
 1.105  08-Dec-2007  tsutsui branches: 1.105.2;
Pull several fixes from OpenBSD's fxp.c:

Rev 1.41:
> use a nop with I bit set at the end of the tx chain. This avoids a race
> between status update and clearing the suspend bit on machines which can't
> write data smaller than 32bits at a time.
This should fix PR port-alpha/30560.

Rev 1.50:
> Fix nasty bug where driver would not correctly catch and handle an rnr
> condition when it was due to the the recieve buffers being exhausted with
> no packet transmits during that time. Symptom was that the fxp would
> simply stop interrupting for the next 15 seconds until the watchdog kicked
> in and reset the chip due to 15 seconds of inactivity, making the fxp very
> poorly behaved when hammered on hard.

Rev 1.61:
> Defer reinitialisation of the RU until after the interrupt handler has had
> a chance to process all pending packets, otherwise the chip may overwrite
> their mbuf clusters after we have freed them.
>
> Eliminates a race that can cause random pool corruption when reconfiguring
> an interface under heavy network load.

And one more change for RX sanity:
- put RU into suspend when the last RFA is processed.

These RNR/RU changes may fix pool corruption problems on fxp.

Tested on AlphaPC164 and i386 with i82559 and i82550.
 1.104  19-Oct-2007  ad branches: 1.104.2; 1.104.4;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.103  26-Aug-2007  dyoung branches: 1.103.2; 1.103.6;
Constify: LLADDR -> CLLADDR. I'm aiming here to make it easier to
identify sockaddr_dl abuse that remains in the kernel, especially
the potential for overwriting memory past the end of a sockaddr_dl
with, e.g., memcpy(LLADDR(), ...).
 1.102  09-Jul-2007  ad branches: 1.102.2; 1.102.6;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.101  04-Mar-2007  christos branches: 1.101.2; 1.101.4; 1.101.6;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.100  16-Nov-2006  christos branches: 1.100.2; 1.100.4; 1.100.8; 1.100.12;
__unused removal on arguments; approved by core.
 1.99  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.98  24-Sep-2006  jmcneill Add "name" parameter to powerhook_establish, to aid debugging. No objections
on tech-kern@
 1.97  20-Feb-2006  thorpej branches: 1.97.14; 1.97.16;
Use device_is_active() rather than testing dv_flags for DVF_ACTIVE
directly.
 1.96  24-Dec-2005  perry branches: 1.96.2; 1.96.4; 1.96.6;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.95  11-Dec-2005  christos merge ktrace-lwp.
 1.94  15-Oct-2005  jdolecek use VLAN_OUTPUT_TAG()
 1.93  12-Oct-2005  abs Make receiver lock-up workaround conditional on setting link1, as we have
too many false positives - should address PR/30505
 1.92  12-Aug-2005  junyoung Make microcode loading work on big endian machines.
Reported and patch supplied by yongari@freebsd a long time ago.
 1.91  29-May-2005  christos branches: 1.91.2;
- sprinkle const.
- avoid variable shadowing.
 1.90  02-May-2005  yamt split IFCAP_CSUM_xxx to IFCAP_CSUM_xxx_Rx and IFCAP_CSUM_xxx_Tx.
 1.89  23-Nov-2004  thorpej branches: 1.89.10;
Use log() instead of printf().
 1.88  30-Oct-2004  thorpej When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
 1.87  20-Sep-2004  simonb Fix a typo in a comment.
 1.86  16-May-2004  thorpej Patch from HITOSHI Osada:
* Add PAUSE-related event counters.
* Return flow control bits in fxp_mii_mediastatus().
 1.85  16-May-2004  thorpej Patch from HITOSHI Osada:
* Newer chips do not need the receiver lock-up workaround; detect when it
is required.
 1.84  28-Apr-2004  briggs When we are recovering from a resource exhaustion on receive, make sure
that the RU is stopped before issuing an RU_START.
Fix suggested by Takahiro Kambe in PR kern/10622.
 1.83  28-Apr-2004  briggs Back out revision 1.82. It seems to cause a number of device timeouts
on x86 boxes. There must be a better way to deal with this that works
well for everyone. In the meantime, back out to the version that works
for more people.
 1.82  31-Mar-2004  briggs Be more careful about issuing CU_RESUME in fxp_start()--only doing
it if we think it's probably necessary. Then do it again in the
tx interrupt handler, if we again think it's necessary. This
reduces the number of commands we issue the chip. Prior to this
change, the i82550 (running without extended feature set, so like
a '559) would sometimes fail in fxp_scb_wait() prior to issuing
another CU_RESUME, resulting in
fxp0: WARNING: SCB timed out!
messages on the console, often followed by device timeouts.
 1.81  19-Feb-2004  yamt branches: 1.81.2;
support h/w assisted vlan tag insertion.
 1.80  19-Feb-2004  yamt support h/w assisted vlan tag removal.
 1.79  09-Feb-2004  hpeyerl On some 'fast' i386 motherboards, the timing between consecutive reads
and writes of the EEPROM are too fast so invalid data is returned. So we
increase the DELAY()s. The right thing would be to check a ready bit
on the E^2 if such a thing exists. (checked by potr)
 1.78  06-Dec-2003  yamt - disable ipv4 checksum offloading as it seems to have a problem.
- add comments to describe it.
 1.77  02-Nov-2003  wiz Fix some typos. From Tom Cosgrove via jmc@openbsd.
 1.76  01-Aug-2003  scw In fxp_intr(), bail early without touching any registers if sc_enabled is
zero, otherwise we could cause PCI master aborts if the card is in D3 power
state and we happen to share a PCI interrupt line with some other device.
 1.75  26-May-2003  yamt branches: 1.75.2;
ip/tcp/udp checksum offloading support for i82550.
largely from FreeBSD.
 1.74  25-May-2003  yamt check and MCLAIM correct mbuf in fxp_copy_small path.
 1.73  26-Feb-2003  matt Add MBUFTRACE kernel option.
Do a little mbuf rework while here. Change all uses of MGET*(*, M_WAIT, *)
to m_get*(M_WAIT, *). These are not performance critical and making them
call m_get saves considerable space. Add m_clget analogue of MCLGET and
make corresponding change for M_WAIT uses.
Modify netinet, gem, fxp, tulip, nfs to support MBUFTRACE.
Begin to change netstat to use sysctl.
 1.72  04-Feb-2003  thorpej Use bus_dmamap_load_mbuf() in fxp_add_rfabuf().
 1.71  31-Jan-2003  thorpej Use aprint_*().
 1.70  06-Jan-2003  wiz synchronous, not syncronous.
 1.69  15-Nov-2002  enami Cosmetic changes.
 1.68  07-Nov-2002  thorpej Fix signed/unsigned comparison warnings.
 1.67  22-Oct-2002  fair Change the "dontcare bits" argument to ifmedia_init() to IFM_IMASK
so that it is possible select PHY instances other than the first
one (instance zero), if there is more than one PHY attached.
 1.66  06-Jun-2002  he Add newlines to the WARNING messages printed for the dynamic standby bug.
 1.65  20-May-2002  mycroft branches: 1.65.2;
The FIX_RESUME_BUG hack does not work, so remove it.
Also, attempt to clarify the message slightly when updating the EEPROM.
 1.64  05-Apr-2002  thorpej branches: 1.64.2;
Add support for the "CPUSaver" receive interrupt mitigating microcode
on the following PRO/100 chips:

* i82558 step A4
* i82558 step B0
* i82559 step A0
* i82559S step A
* i82550
* i82550 step C

The interrupt delay is configurable on all microcodable chips. The
maximum "bundle" size (packet count) is configurable on all but the
i82558.

The microcode is enabled by setting IFF_LINK0 on the interface.

Derived from code in FreeBSD.
 1.63  04-Apr-2002  thorpej Address Intel 82801BA/82801BAM Specification Update, Errata #30:

The ICH on-board Ethernet and some i82559 chips have a bug which
will cause a PCI protocol violation if the chip receives a CU_RESUME
command as it is entering the IDLE state by deasserting #CLKRUN.
(This is the so-called "resume bug" that we previously had an incomplete
work-around for on ICH chipsets.)

The work-around is to disable Dynamic Standby Mode, such that the
chip will never deasert #CLKRUN. Dynamic Standby Mode is disabled
by clearing a bit in the EEPROM and updating the EEPROM (and EEPROM
checksum).

Unfortunately, the chip will only consult the EEPROM setting after
a PCI bus reset, so a system reboot is required once the EEPROM
has been updated (the EEPROM update only needs to happen once,
and the driver usses a warning instructing the user to reboot the
system once the work-around has been applied).

Issue pointed out by David Brownlee, and code more-or-less lifted
from FreeBSD.
 1.62  04-Apr-2002  thorpej Move the code which shifts bits into the EEPROM into its own function.
 1.61  13-Nov-2001  lukem add/cleanup RCSID
 1.60  16-Sep-2001  wiz Spell 'occurred' with two 'r's.
 1.59  06-Aug-2001  enami branches: 1.59.2;
Advertize pause capability (802.3x flow control) to peer.
 1.58  19-Jul-2001  thorpej Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.
 1.57  07-Jul-2001  thorpej branches: 1.57.2;
bzero -> memset
 1.56  07-Jul-2001  thorpej bcopy -> strcpy
 1.55  15-Jun-2001  thorpej Split the Tx and Rx interrupt routines into separate functions,
and add some (optional) event counters.
 1.54  12-Jun-2001  thorpej Don't need INET or NS includes here.
 1.53  02-Jun-2001  thorpej Define some extra configuration block bits used on the i82550 (a.k.a.
PRO 100/S), including the extended RFA format. Don't hard-code the
RFA size to allow us to use the extended format in the future.
 1.52  22-May-2001  thorpej Some changes from the new FreeBSD `fxp' driver:
- Add some additional config block bits for the i82558/i82559.
- Change the config block template to only fill in the must-be-one
reserved bits, leave fxp_init() to fill in all the important things.
- On the i82558/i82559, we can use "Receive Long Frames" rather than
"Save Bad Frames" to support the VLAN MTU.
- Use 802.3x flow control on the i82558/i82559. This is all handled
transparently by the hardware. When in promiscuous mode, allow
wire-watchers to see the flow control frames.
- Use the Extended TxCB format on the i82558/i82559. This places two
Transmit Buffer Descriptors directly in the TxCB, which should cover
the vast majority of packets transmitted. This saves PCI transactions
that would otherwise be required to fetch the TBD list.

With the tansmit queue length changes from yesterday, this gets us up to
11.5MB/s TCP transmit speed, out of an absolute maximum of 12MB/s possible
on a 100Mb/s link.
 1.51  22-May-2001  thorpej A little slight cleanup.
 1.50  21-May-2001  thorpej Re-arrange the transmit control data somewhat so that we can
use the extended TxCB format (that change will happen later).
 1.49  21-May-2001  thorpej Sigh, typo in last.
 1.48  21-May-2001  thorpej Fix non-fatal typo -- CB_NOP -> CU_NOP in the ICH work-around (they
have the same value).
 1.47  21-May-2001  thorpej The 82801BA built-in Ethernet has a bug which requires us to
issue a NOP before a CU_RESUME when in 10baseT mode. Handle
this.
 1.46  21-May-2001  thorpej ANSI'ify.
 1.45  16-May-2001  lukem delint: remove volatile from fxp_mdi_read() decl
 1.44  19-Dec-2000  thorpej branches: 1.44.2;
Fix a problem with the ALTQ changes that can cause bogus memory
refernces. Problem reported by Luke Mewburn.
 1.43  14-Dec-2000  thorpej ALTQ'ify.
 1.42  26-Nov-2000  takemura Add new powerhook argument values, PWR_SOFTSUSPEND, PWR_SOFTSTANDBY and
PWR_SOFTRESUME. Apm calls powerhook with the values in normal interrupt
priority level while others are protected with splhigh().
 1.41  15-Nov-2000  thorpej Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach().
 1.40  11-Oct-2000  thorpej Use ether_ioctl().
 1.39  03-Oct-2000  thorpej Support ETHERCAP_VLAN_MTU by doing extra error checking upon packet
reception and saving other "bad frames" (i.e. ones that are larger
than the standard Ethernet frame length) if we have VLANs configured
on the interface.
 1.38  01-Oct-2000  thorpej Move the check for "promisc + unicast + not for us" into ether_input(),
and change Ethernet drivers to always pass all received frames to
ether_input() (with a few exceptions, which are documented in the
code).
 1.37  28-Sep-2000  tsutsui 6 -> ETHER_ADDR_LEN
 1.36  29-Jun-2000  thorpej Since the RFA is allocated in a normal mbuf, as opposed to DMA-safe
memory that is explicitly mapped in a DMA-coherent manner, we must
make sure to PREREAD sync the RFA after noticing a clear "complete"
bit. Without this, the clear bit will linger in the cache, and the
CPU will not notice when the chip updates the bit via DMA later.

From Izumi Tsutsui on port-arm32@netbsd.org.
 1.35  28-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.34  29-May-2000  jhawk branches: 1.34.2;
For all network drivers that call ether_ifattach(), and also
have _detach() functions:
Ensure that softc keeps state about whether the attach succeeded,
and make the detach function return immediately if the attach did
not complete.
 1.33  27-May-2000  tsutsui branches: 1.33.2;
Increase delay on EEPROM access.
CATS sometimes cannot read MAC address correctly.
 1.32  26-May-2000  tsutsui Call bus_dmamap_sync() properly before/after reading fcd_stats
in fxp_control_data.
 1.31  24-May-2000  soren Make two previous changes more correct, as shown by Izumi Tsutsui.
 1.30  24-May-2000  soren The EEPROM is little-endian.
 1.29  24-May-2000  soren Fix DMA status reading on big-endian systems. From Sanjay Lal on port-macppc.
 1.28  24-May-2000  soren And a newline after error string.
 1.27  19-May-2000  jhawk Calibrate the timeouts from rev 1.26 by using DELAY(1) so their
values are less machine-dependant. Fixes port-i386/10141, where
spurrious timeouts were being seen.
Also note the line numbers of the timeouts so it can be determined
which is being seen (via __LINE__).
 1.26  12-May-2000  jhawk Catch some potentially infinite loops in while() loops if the chip happens
to "go insane" and never complete some operations (dmasync, etc.).
 1.25  30-Mar-2000  simonb Delete redundant decls of fxp_enable(), fxp_disable() - they're in
i82557var.h.
 1.24  23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.23  20-Mar-2000  thorpej Get rid of the powerhook when we detach.
 1.22  06-Mar-2000  thorpej No longer necessary to futz with ifp->if_baudrate here.
 1.21  28-Feb-2000  joda (fxp_init): don't clear the FXPF_MII flag as this results in a panic
when detaching
 1.20  12-Feb-2000  enami Add activate routine and check device active flag also in one second
tick handler.
 1.19  12-Feb-2000  enami Cosmetic changes.
 1.18  09-Feb-2000  joda add detach code
 1.17  02-Feb-2000  thorpej Don't dry to diving MIIF_NOISOLATE in the PHY drivers. Instead, pass
flags down from the parent to child vi mii_attach().
 1.16  02-Feb-2000  thorpej Bring some order to the chaos which was the MII code function naming
"conventions".
 1.15  12-Dec-1999  thorpej Take a stab at making this work on big-endian systems.
 1.14  04-Dec-1999  sommerfeld change comment to mention that this driver also handles the '558 and '559
 1.13  19-Nov-1999  joda try to do a better job of figuring out the EEPROM size; the old code
didn't work on (some?) 557-based cards
 1.12  12-Nov-1999  thorpej Call mii_down() as appropriate.
 1.11  04-Nov-1999  thorpej Adapt to mii_phy_probe() change.
 1.10  30-Oct-1999  sommerfeld Add enable/disable support and EEPROM size selection, prerequisites
for getting the cardbus fxp attachment to work.

Tested on the built-in 82559 in a VAIO Z505S.

From Johan Danielsson / PR8631; changed slightly to KNF.
 1.9  28-Oct-1999  sommerfeld Fix suspend/resume-related problems observed on fxp0 on Sony Z505S:

Symptoms: system would crash with "data modified on free list" pool
panic from the mbuf cluster pool shortly after a resume. The cluster
in question contained a valid 82557 receive descriptor and an IP
packet. Happened sporadically in normal use. Easiest way for me to
reproduce it was to run tcpdump and a flood ping and do a
suspend/resume cycle or two.

Changes:
- in interrupt handler, if the interface isn't in IFF_RUNNING state,
just ack interrupts and return; don't try to receive packets, queue
new descriptors, etc., etc.,
- add power control hook to take interface down on suspend,
and restart it (if it was up) on resume.
- tweaks to fxp_stop and fxp_shutdown to avoid recursive panics due
to the (now fixed) bug.
 1.8  05-Aug-1999  thorpej branches: 1.8.2; 1.8.4; 1.8.6;
Since we have to go through fxp_init() to properly handle IFF_ALLMULTI
anyway, take advantage of this and greatly simplify the programming
of the multicast filter. This solves the last reported "device timeout"
problem with this driver.
 1.7  04-Aug-1999  thorpej Almost completely rewrite the receive logic, making it as close as possible
to the EPIC/100 driver's (adjusting for the fact that Intel Ethernet chips
are from Pluto):
* Don't allocate receive buffers until the interface is actually brought
up, and release all of them if the interface is taken down.
* Add a knob (defaults to off) which will copy an incoming packet to
a single header mbuf if it is small enough to fit in one, rather than
burning an entire cluster on it. Note that this change will be mostly
moot if/when sbcompress() is changed to handle compressing clusters.

Simplify some of the receive list logic:
* Rather than using a homegrown queue and additional software RX descriptors,
use an ifqueue to queue receive buffers, and M_{GET,SET}CTX() to hook DMA
maps and receive buffers together.

Clean up a bit:
* Macroize a bunch of things to make the code a bit easier to follow.
 1.6  04-Aug-1999  thorpej Only tick the MII if we are using it.
 1.5  04-Aug-1999  thorpej Be a little less selective in the transmit interrupt path.
 1.4  03-Aug-1999  thorpej Use the Interrupt bit in the command block to generate interrupts, rather
than interrupting after every Command Unit Not Active event.
 1.3  03-Aug-1999  thorpej Don't bother with interrupt-driven multicast setup.
 1.2  03-Aug-1999  thorpej Completely rewrite the transmit logic, making it look more like the
EPIC/100 driver's. Also, fix the "all multicast" logic. Also do some
general cleanup.
 1.1  20-Jun-1999  thorpej branches: 1.1.2;
Bus-independent back-end driver for Intel i82557 fast Ethernet chips.
 1.1.2.2  01-Jul-1999  thorpej Sync w/ -current.
 1.1.2.1  20-Jun-1999  thorpej file i82557.c was added on branch chs-ubc2 on 1999-07-01 23:32:28 +0000
 1.8.6.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.8.4.1  15-Nov-1999  fvdl Sync with -current
 1.8.2.4  05-Jan-2001  bouyer Sync with HEAD
 1.8.2.3  08-Dec-2000  bouyer Sync with HEAD.
 1.8.2.2  22-Nov-2000  bouyer Sync with HEAD.
 1.8.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.33.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.34.2.4  06-Jun-2002  he Pull up revisions 1.45-1.53,1.55-1.57,1.60,1.62-1.63,1.65-1.66 (via patch,
requested by mycroft):
Work around a bug which can cause some machines to randomly hang.
Drag along performance improvements and improved hardware support.
 1.34.2.3  06-May-2001  he Pull up revision 1.42 (via patch, requested by he):
Add new powerhook argument values, PWR_SOFTSUSPEND, PWR_SOFTSTANDBY and
PWR_SOFTRESUME. Apm calls powerhook with the values in normal interrupt
priority level while others are protected with splhigh().
 1.34.2.2  31-Dec-2000  jhawk Pull up revision 1.39 (requested by bouyer):
Add support for 802.1Q virtual LANs.
 1.34.2.1  29-Jun-2000  thorpej Pull up rev. 1.36:
Since the RFA is allocated in a normal mbuf, as opposed to DMA-safe
memory that is explicitly mapped in a DMA-coherent manner, we must
make sure to PREREAD sync the RFA after noticing a clear "complete"
bit. Without this, the clear bit will linger in the cache, and the
CPU will not notice when the chip updates the bit via DMA later.

>From Izumi Tsutsui on port-arm32@netbsd.org.
 1.44.2.9  07-Jan-2003  thorpej Sync with HEAD.
 1.44.2.8  11-Dec-2002  thorpej Sync with HEAD.
 1.44.2.7  11-Nov-2002  nathanw Catch up to -current
 1.44.2.6  20-Jun-2002  nathanw Catch up to -current.
 1.44.2.5  17-Apr-2002  nathanw Catch up to -current.
 1.44.2.4  14-Nov-2001  nathanw Catch up to -current.
 1.44.2.3  21-Sep-2001  nathanw Catch up to -current.
 1.44.2.2  24-Aug-2001  nathanw Catch up with -current.
 1.44.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.57.2.4  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.57.2.3  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.57.2.2  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.57.2.1  03-Aug-2001  lukem update to -current
 1.59.2.1  01-Oct-2001  fvdl Catch up with -current.
 1.64.2.2  20-Jun-2002  gehenna catch up with -current.
 1.64.2.1  30-May-2002  gehenna Catch up with -current.
 1.65.2.2  17-Jun-2003  msaitoh Pullup rev. 1.74 via patch (requested by yamt in ticket #1296):
Fix of possible null pointer dereferences.
 1.65.2.1  10-Jun-2002  tv Pull up revision 1.66 (requested by 197 in ticket #0):
Add newlines to the WARNING messages printed for the dynamic standby bug.
 1.75.2.7  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.75.2.6  29-Nov-2004  skrll Sync with HEAD.
 1.75.2.5  02-Nov-2004  skrll Sync with HEAD.
 1.75.2.4  24-Sep-2004  skrll Sync with HEAD.
 1.75.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.75.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.75.2.1  03-Aug-2004  skrll Sync with HEAD
 1.81.2.2  28-Apr-2004  tron branches: 1.81.2.2.2;
Pull up revision 1.83 (requested by briggs in ticket #218):
Back out revision 1.82. It seems to cause a number of device timeouts
on x86 boxes. There must be a better way to deal with this that works
well for everyone. In the meantime, back out to the version that works
for more people.
 1.81.2.1  01-Apr-2004  jmc Pullup rev 1.82 (requested by briggs in ticket #45)

Be more careful about issuing CU_RESUME in fxp_start()--only doing
it if we think it's probably necessary. Then do it again in the
tx interrupt handler, if we again think it's necessary. This
reduces the number of commands we issue the chip. Prior to this
change, the i82550 (running without extended feature set, so like
a '559) would sometimes fail in fxp_scb_wait() prior to issuing
another CU_RESUME, resulting in
fxp0: WARNING: SCB timed out!
messages on the console, often followed by device timeouts.
 1.81.2.2.2.2  24-Aug-2005  riz Pull up following revision(s) (requested by junyoung in ticket #5608):
sys/dev/ic/i82557.c: revision 1.92 via patch
Make microcode loading work on big endian machines.
Reported and patch supplied by yongari@freebsd a long time ago.
 1.81.2.2.2.1  24-Jan-2005  he Pull up revision 1.88 (requested by thorpej in ticket #939):
When adding or deleting multicast addresses, only change
the address filter if the interface is marked RUNNING.
Fixes PR#27678.
 1.89.10.2  15-Oct-2005  riz Pull up following revision(s) (requested by abs in ticket #886):
sys/dev/ic/i82557.c: revision 1.93
Make receiver lock-up workaround conditional on setting link1, as we have
too many false positives - should address PR/30505
 1.89.10.1  16-Aug-2005  tron Pull up revision 1.92 via patch (requested by junyoung in ticket #666):
Make microcode loading work on big endian machines.
Reported and patch supplied by yongari@freebsd a long time ago.
 1.91.2.6  11-Feb-2008  yamt sync with head.
 1.91.2.5  21-Jan-2008  yamt sync with head
 1.91.2.4  27-Oct-2007  yamt sync with head.
 1.91.2.3  03-Sep-2007  yamt sync with head.
 1.91.2.2  30-Dec-2006  yamt sync with head.
 1.91.2.1  21-Jun-2006  yamt sync with head.
 1.96.6.1  22-Apr-2006  simonb Sync with head.
 1.96.4.1  09-Sep-2006  rpaulo sync with head
 1.96.2.1  01-Mar-2006  yamt sync with head.
 1.97.16.2  10-Dec-2006  yamt sync with head.
 1.97.16.1  22-Oct-2006  yamt sync with head
 1.97.14.1  18-Nov-2006  ad Sync with head.
 1.100.12.1  02-Feb-2008  riz Pull up following revision(s) (requested by tsutsui in ticket #1028):
sys/dev/ic/i82557reg.h: revision 1.19
sys/dev/ic/i82557var.h: revision 1.36
sys/dev/ic/i82557.c: revision 1.105
Pull several fixes from OpenBSD's fxp.c:
Rev 1.41:
use a nop with I bit set at the end of the tx chain. This avoids a race
between status update and clearing the suspend bit on machines which can't
write data smaller than 32bits at a time.
This should fix PR port-alpha/30560.
Rev 1.50:
Fix nasty bug where driver would not correctly catch and handle an rnr
condition when it was due to the the recieve buffers being exhausted with
no packet transmits during that time. Symptom was that the fxp would
simply stop interrupting for the next 15 seconds until the watchdog kicked
in and reset the chip due to 15 seconds of inactivity, making the fxp very
poorly behaved when hammered on hard.
Rev 1.61:
Defer reinitialisation of the RU until after the interrupt handler has had
a chance to process all pending packets, otherwise the chip may overwrite
their mbuf clusters after we have freed them.
Eliminates a race that can cause random pool corruption when reconfiguring
an interface under heavy network load.
And one more change for RX sanity:
- put RU into suspend when the last RFA is processed.
These RNR/RU changes may fix pool corruption problems on fxp.
Tested on AlphaPC164 and i386 with i82559 and i82550.
 1.100.8.1  03-Jun-2008  skrll Sync with netbsd-4.
 1.100.4.1  12-Mar-2007  rmind Sync with HEAD.
 1.100.2.1  02-Feb-2008  riz Pull up following revision(s) (requested by tsutsui in ticket #1028):
sys/dev/ic/i82557reg.h: revision 1.19
sys/dev/ic/i82557var.h: revision 1.36
sys/dev/ic/i82557.c: revision 1.105
Pull several fixes from OpenBSD's fxp.c:
Rev 1.41:
use a nop with I bit set at the end of the tx chain. This avoids a race
between status update and clearing the suspend bit on machines which can't
write data smaller than 32bits at a time.
This should fix PR port-alpha/30560.
Rev 1.50:
Fix nasty bug where driver would not correctly catch and handle an rnr
condition when it was due to the the recieve buffers being exhausted with
no packet transmits during that time. Symptom was that the fxp would
simply stop interrupting for the next 15 seconds until the watchdog kicked
in and reset the chip due to 15 seconds of inactivity, making the fxp very
poorly behaved when hammered on hard.
Rev 1.61:
Defer reinitialisation of the RU until after the interrupt handler has had
a chance to process all pending packets, otherwise the chip may overwrite
their mbuf clusters after we have freed them.
Eliminates a race that can cause random pool corruption when reconfiguring
an interface under heavy network load.
And one more change for RX sanity:
- put RU into suspend when the last RFA is processed.
These RNR/RU changes may fix pool corruption problems on fxp.
Tested on AlphaPC164 and i386 with i82559 and i82550.
 1.101.6.1  09-Dec-2007  reinoud Pullup to HEAD
 1.101.4.1  11-Jul-2007  mjf Sync with head.
 1.101.2.3  23-Oct-2007  ad Sync with head.
 1.101.2.2  09-Oct-2007  ad Sync with head.
 1.101.2.1  01-Jul-2007  ad Adapt to callout API change.
 1.102.6.3  09-Dec-2007  jmcneill Sync with HEAD.
 1.102.6.2  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.102.6.1  03-Sep-2007  jmcneill Sync with HEAD.
 1.102.2.1  03-Sep-2007  skrll Sync with HEAD.
 1.103.6.1  25-Oct-2007  bouyer Sync with HEAD.
 1.103.2.3  23-Mar-2008  matt sync with HEAD
 1.103.2.2  09-Jan-2008  matt sync with HEAD
 1.103.2.1  06-Nov-2007  matt sync with HEAD
 1.104.4.2  26-Dec-2007  ad Sync with head.
 1.104.4.1  08-Dec-2007  ad Sync with head.
 1.104.2.1  18-Feb-2008  mjf Sync with HEAD.
 1.105.2.1  11-Dec-2007  yamt sync with head.
 1.106.2.3  20-Jan-2008  bouyer Sync with HEAD
 1.106.2.2  02-Jan-2008  bouyer Sync with HEAD
 1.106.2.1  13-Dec-2007  bouyer Sync with HEAD
 1.111.6.3  17-Jan-2009  mjf Sync with HEAD.
 1.111.6.2  28-Sep-2008  mjf Sync with HEAD.
 1.111.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.112.4.5  11-Aug-2010  yamt sync with head.
 1.112.4.4  11-Mar-2010  yamt sync with head
 1.112.4.3  16-Sep-2009  yamt sync with head
 1.112.4.2  04-May-2009  yamt sync with head.
 1.112.4.1  16-May-2008  yamt sync with head.
 1.112.2.1  18-May-2008  yamt sync with head.
 1.113.6.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.113.6.1  19-Oct-2008  haad Sync with HEAD.
 1.113.4.1  18-Jul-2008  simonb Sync with head.
 1.113.2.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.115.4.1  14-Dec-2008  bouyer Pull up following revision(s) (requested by tsutsui in ticket #181):
sys/dev/ic/i82557.c: revision 1.116-1.120
sys/dev/ic/i82557reg.h: revision 1.21
sys/dev/ic/i82557var.h: revision 1.41
doc/CHANGES: patch
Call BUS_DMASYNC_PREREAD more strictly on polling DMA descriptors.
Add a workaround for hardware ip4csum-tx bug and enable it.
Confirmed on i82550 rev 12 and UDP fragment packets by ttcp(1).
Sort Tx/Rx macro in previous.
Add a missed htole32() on the previous ip4csum-tx bug workaround.
Don't pass uint8_t values to le16toh() in fxp_rx_hwcksum().
fxp(4)'s RX hwcksum results weren't used at all on big endian machines.
Checked by i82550 and vmstat -ev on macppc GENERIC kernel with
options INET_CSUM_COUNTERS,TCP_CSUM_COUNTERS,UDP_CSUM_COUNTERS.
 1.115.2.3  28-Apr-2009  skrll Sync with HEAD.
 1.115.2.2  03-Mar-2009  skrll Sync with HEAD.
 1.115.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.122.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.131.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.132.2.3  21-Apr-2011  rmind sync with head
 1.132.2.2  05-Mar-2011  rmind sync with head
 1.132.2.1  30-May-2010  rmind sync with head
 1.136.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.138.6.1  18-Feb-2012  mrg merge to -current.
 1.138.2.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.138.2.2  30-Oct-2012  yamt sync with head
 1.138.2.1  17-Apr-2012  yamt sync with head
 1.140.4.1  18-May-2014  rmind sync with head
 1.140.2.2  03-Dec-2017  jdolecek update from HEAD
 1.140.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.141.2.1  07-Apr-2014  tls Be a little more clear and consistent about harvesting entropy from devices:

1) deprecate RND_FLAG_NO_ESTIMATE

2) define RND_FLAG_COLLECT_TIME, RND_FLAG_COLLECT_VALUE

3) define RND_FLAG_ESTIMATE_TIME, RND_FLAG_ESTIMATE_VALUE

4) define RND_FLAG_DEFAULT: RND_FLAG_COLLECT_TIME|
RND_FLAG_COLLECT_VALUE|RND_FLAG_ESTIMATE_TIME

5) Make entropy harvesting from environmental sensors a little more generic
and remove it from individual sensor drivers.

6) Remove individual open-coded delta-estimators for values from a few
places in the tree (uvm, environmental drivers).

7) 0 -> RND_FLAG_DEFAULT, actually gather entropy from various drivers
that had stubbed out code, other minor cleanups.
 1.142.4.5  28-Aug-2017  skrll Sync with HEAD
 1.142.4.4  05-Feb-2017  skrll Sync with HEAD
 1.142.4.3  09-Jul-2016  skrll Sync with HEAD
 1.142.4.2  19-Mar-2016  skrll Sync with HEAD
 1.142.4.1  06-Jun-2015  skrll Sync with HEAD
 1.145.2.2  20-Mar-2017  pgoyette Sync with HEAD
 1.145.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.146.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.147.6.2  06-Nov-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #1427):

sys/arch/arm/broadcom/bcm53xx_eth.c: revision 1.39
sys/dev/pcmcia/if_xi.c: revision 1.91
sys/dev/ic/aic6915.c: revision 1.40
sys/dev/pci/if_tl.c: revision 1.117
sys/arch/arm/gemini/gemini_gmac.c: revision 1.18
sys/dev/ic/elinkxl.c: revision 1.133
sys/dev/pci/if_ste.c: revision 1.57
sys/dev/pci/if_alc.c: revision 1.43
sys/dev/pci/if_stge.c: revision 1.72
sys/dev/pci/if_ale.c: revision 1.34
sys/dev/pci/if_age.c: revision 1.62
sys/dev/pci/if_txp.c: revision 1.60
sys/dev/ic/i82557.c: revision 1.156
sys/dev/pci/if_vte.c: revision 1.27
sys/arch/powerpc/booke/dev/pq3etsec.c: revision 1.47
sys/arch/arm/gemini/if_gpn.c: revision 1.13

if_percpuq(9) and ether_input() automatically increment if_ipackets, so don't add number of
RX frames from device's statistics counter to if_ipackets to avoid double
count.
 1.147.6.1  24-Oct-2017  snj Pull up following revision(s) (requested by knakahara in ticket #302):
sys/arch/powerpc/booke/dev/pq3etsec.c: 1.30-1.31
sys/arch/x86/pci/if_vmx.c: 1.20
sys/dev/ic/i82557.c: 1.148
sys/dev/ic/rtl8169.c: 1.152
sys/dev/pci/cxgb/cxgb_sge.c: 1.5
sys/dev/pci/if_age.c: 1.51
sys/dev/pci/if_alc.c: 1.25
sys/dev/pci/if_ale.c: 1.23
sys/dev/pci/if_bge.c: 1.311
sys/dev/pci/if_bge.c: 1.312
sys/dev/pci/if_bnx.c: 1.62
sys/dev/pci/if_jme.c: 1.32
sys/dev/pci/if_nfe.c: 1.64
sys/dev/pci/if_sip.c: 1.167
sys/dev/pci/if_stge.c: 1.63-1.64
sys/dev/pci/if_ti.c: 1.102
sys/dev/pci/if_txp.c: 1.48
sys/dev/pci/if_vge.c: 1.61
sys/dev/pci/if_wm.c: 1.538
sys/dev/pci/ixgbe/ix_txrx.c: 1.29 via patch
sys/net/agr/if_agrether_hash.c: 1.4
sys/net/if_ether.h: 1.67-1.68
sys/net/if_ethersubr.c: 1.244
sys/net/if_vlan.c: 1.100
sys/net80211/ieee80211_input.c: 1.89
sys/net80211/ieee80211_output.c: 1.59
sys/sys/mbuf.h: 1.171
VLAN ID uses pkthdr instead of mtag now. Contributed by s-yamaguchi@IIJ.
I just commit by proxy. Reviewed by joerg@n.o and christos@n.o, thanks.
See http://mail-index.netbsd.org/tech-net/2017/09/26/msg006459.html
--
only get vtag when we have vtag like the other drivers.
--
- only get the vtag if we have it like the other drivers
- mask the hardware vlan tag
--
- add a constant for the vlan mask.
- enforce that we have a tag before we get it.
only get vtag when we have vtag like the other drivers.
like if_bge.c:1.312 and if_stge.c:1.64.
fixed by s-yamaguchi@IIJ, thanks.
 1.148.2.2  26-Jan-2019  pgoyette Sync with HEAD
 1.148.2.1  28-Jul-2018  pgoyette Sync with HEAD
 1.149.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.149.2.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.149.2.1  10-Jun-2019  christos Sync with HEAD
 1.154.2.2  06-Nov-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #403):

sys/arch/arm/broadcom/bcm53xx_eth.c: revision 1.39
sys/dev/pcmcia/if_xi.c: revision 1.91
sys/dev/ic/aic6915.c: revision 1.40
sys/dev/pci/if_tl.c: revision 1.117
sys/arch/arm/gemini/gemini_gmac.c: revision 1.18
sys/dev/ic/elinkxl.c: revision 1.133
sys/dev/pci/if_ste.c: revision 1.57
sys/dev/pci/if_alc.c: revision 1.43
sys/dev/pci/if_stge.c: revision 1.72
sys/dev/pci/if_ale.c: revision 1.34
sys/dev/pci/if_age.c: revision 1.62
sys/dev/pci/if_txp.c: revision 1.60
sys/dev/ic/i82557.c: revision 1.156
sys/dev/pci/if_vte.c: revision 1.27
sys/arch/powerpc/booke/dev/pq3etsec.c: revision 1.47
sys/arch/arm/gemini/if_gpn.c: revision 1.13

if_percpuq(9) and ether_input() automatically increment if_ipackets, so don't add number of
RX frames from device's statistics counter to if_ipackets to avoid double
count.
 1.154.2.1  22-Sep-2019  martin Pull up following revision(s) (requested by maxv in ticket #217):

sys/dev/ic/i82557.c: revision 1.155

Fix direction of the loop.
 1.156.2.1  29-Feb-2020  ad Sync with head.

RSS XML Feed