Home | History | Annotate | Download | only in ic
History log of /src/sys/dev/ic/i82557reg.h
RevisionDateAuthorComments
 1.25  02-Sep-2011  msaitoh 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.24  17-Apr-2009  tsutsui Check revisions and print names of i82551/i82551ER, per Intel manual.
 1.23  11-Mar-2009  tsutsui u_intNN_t -> uintNN_t
 1.22  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.21  03-Dec-2008  tsutsui branches: 1.21.4;
Add a workaround for hardware ip4csum-tx bug and enable it.
Confirmed on i82550 rev 12 and UDP fragment packets by ttcp(1).
 1.20  28-Apr-2008  martin branches: 1.20.6; 1.20.8; 1.20.10;
Remove clause 3 and 4 from TNF licenses
 1.19  08-Dec-2007  tsutsui branches: 1.19.12; 1.19.14; 1.19.16;
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.18  11-Dec-2005  christos branches: 1.18.24; 1.18.34; 1.18.38; 1.18.44; 1.18.46; 1.18.56; 1.18.58;
merge ktrace-lwp.
 1.17  29-May-2005  christos branches: 1.17.2;
- sprinkle const.
- avoid variable shadowing.
 1.16  27-Feb-2005  perry nuke trailing whitespace
 1.15  16-May-2004  thorpej branches: 1.15.4; 1.15.6;
Patch from HITOSHI Osada:
* Add PAUSE-related event counters.
* Return flow control bits in fxp_mii_mediastatus().
 1.14  19-Feb-2004  yamt support h/w assisted vlan tag removal.
 1.13  02-Nov-2003  wiz deferred, not deffered. Inspired by Tom Cosgrove.
 1.12  26-May-2003  yamt branches: 1.12.2;
ip/tcp/udp checksum offloading support for i82550.
largely from FreeBSD.
 1.11  05-Apr-2002  thorpej Define the command block used for loading microcode into the chip.
 1.10  02-Jun-2001  thorpej branches: 1.10.2;
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.9  25-May-2001  hannken Fix two typos in the BYTE_ORDER != LITTLE_ENDIAN case.
 1.8  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.7  22-May-2001  thorpej Report 82558, 82559, etc. based on chip revision. Also, remember which
revsion we have for feature enables later.
 1.6  22-May-2001  thorpej A little slight cleanup.
 1.5  22-May-2001  thorpej Add some additional register definitions, from FreeBSD.
 1.4  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.3  12-Dec-1999  thorpej branches: 1.3.4; 1.3.6;
Take a stab at making this work on big-endian systems.
 1.2  03-Aug-1999  thorpej branches: 1.2.2; 1.2.8;
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 i82557reg.h was added on branch chs-ubc2 on 1999-07-01 23:32:28 +0000
 1.2.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.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.3.6.2  17-Apr-2002  nathanw Catch up to -current.
 1.3.6.1  21-Jun-2001  nathanw Catch up to -current.
 1.3.4.1  06-Jun-2002  he Pull up revisions 1.4-1.10 (requested by mycroft):
Work around a bug which can cause some machines to randomly hang.
Drag along performance improvements and improved hardware support.
 1.10.2.1  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.12.2.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.12.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.12.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.12.2.1  03-Aug-2004  skrll Sync with HEAD
 1.15.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.15.4.1  29-Apr-2005  kent sync with -current
 1.17.2.1  21-Jan-2008  yamt sync with head
 1.18.58.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.18.56.1  08-Dec-2007  ad Sync with head.
 1.18.46.1  09-Jan-2008  matt sync with HEAD
 1.18.44.1  09-Dec-2007  jmcneill Sync with HEAD.
 1.18.38.1  03-Jun-2008  skrll Sync with netbsd-4.
 1.18.34.1  09-Dec-2007  reinoud Pullup to HEAD
 1.18.24.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.19.16.2  04-May-2009  yamt sync with head.
 1.19.16.1  16-May-2008  yamt sync with head.
 1.19.14.1  18-May-2008  yamt sync with head.
 1.19.12.2  17-Jan-2009  mjf Sync with HEAD.
 1.19.12.1  02-Jun-2008  mjf Sync with HEAD.
 1.20.10.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.20.8.3  28-Apr-2009  skrll Sync with HEAD.
 1.20.8.2  03-Mar-2009  skrll Sync with HEAD.
 1.20.8.1  19-Jan-2009  skrll Sync with HEAD.
 1.20.6.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.21.4.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.

RSS XML Feed