Commit Graph

31 Commits

Author SHA1 Message Date
yamt b1286467f1 ip/tcp/udp checksum offloading support for i82550.
largely from FreeBSD.
2003-05-26 16:14:49 +00:00
wiz b1c7ac0e6d "definitions" has lots of 'i's, but that's not reason to leave one out. 2002-09-29 23:23:56 +00:00
mycroft 44024682c7 The FIX_RESUME_BUG hack does not work, so remove it.
Also, attempt to clarify the message slightly when updating the EEPROM.
2002-05-20 15:23:01 +00:00
thorpej 317ab784d9 Bump the number of Tx DMA segments from 8 to 16 (the zero-copy socket
code sometimes sees more than 8).
2002-05-03 00:07:02 +00:00
thorpej 60e2bbd09a 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.
2002-04-05 19:51:04 +00:00
thorpej 4c49d6fa2a Split the Tx and Rx interrupt routines into separate functions,
and add some (optional) event counters.
2001-06-15 22:16:00 +00:00
wiz 0a600be867 receive, not recieve 2001-06-12 15:17:10 +00:00
thorpej 2da55b9a39 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.
2001-06-02 01:04:01 +00:00
thorpej 188e0d6625 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.
2001-05-22 15:29:30 +00:00
thorpej a5a03e13dd Report 82558, 82559, etc. based on chip revision. Also, remember which
revsion we have for feature enables later.
2001-05-22 01:23:25 +00:00
thorpej 611e112566 A little slight cleanup. 2001-05-22 00:27:01 +00:00
thorpej 0064d69faf Re-arrange the transmit control data somewhat so that we can
use the extended TxCB format (that change will happen later).
2001-05-21 23:58:44 +00:00
thorpej 00f922fa70 Change NTXSEGS from 16 to 8, and the TXQUEUE len from 128 to 256. Also
increase the number of Rx buffers from 64 to 128.

These mirror some performance tweaks made to the sip(4) driver.
2001-05-21 22:20:31 +00:00
thorpej b4538a0165 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.
2001-05-21 21:47:52 +00:00
thorpej e7a0ef6145 ANSI'ify. 2001-05-21 20:59:38 +00:00
jhawk 1e59d99d28 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.
2000-05-29 17:37:12 +00:00
tsutsui e3427d8f2c Call bus_dmamap_sync() properly before/after reading fcd_stats
in fxp_control_data.
2000-05-26 19:11:24 +00:00
jhawk e0292df01c sc_ih (interrupt cookie) is not pci-specific data
and needs to remain in fxp_softc rather than fxp_pci_softc;
otherwise we break cardbus.
2000-05-12 18:46:33 +00:00
jhawk 6622f20fc1 Move pci-specific data to fxp_pci_softc from fxp_pci_softc.
Add some more pci-specific data to fxp_pci_softc.
2000-05-12 03:36:18 +00:00
thorpej fc96443d15 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.
2000-03-23 07:01:25 +00:00
enami 01868857df Add activate routine and check device active flag also in one second
tick handler.
2000-02-12 04:05:49 +00:00
joda d40e2b51ee add detach code 2000-02-09 22:15:57 +00:00
thorpej 014cd3fcc1 Take a stab at making this work on big-endian systems. 1999-12-12 17:46:36 +00:00
sommerfeld db05febdfa 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.
1999-10-30 16:07:58 +00:00
sommerfeld 652701006d 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.
1999-10-28 19:21:51 +00:00
thorpej 191ab2b8e4 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.
1999-08-05 01:35:40 +00:00
thorpej 5ea625fe90 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.
1999-08-04 05:21:18 +00:00
thorpej 11e9392b3e Only tick the MII if we are using it. 1999-08-04 00:17:28 +00:00
thorpej 1051ab605d G/c a flag. 1999-08-03 23:18:32 +00:00
thorpej 3012cf91af 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.
1999-08-03 22:43:28 +00:00
thorpej 206460244e Bus-independent back-end driver for Intel i82557 fast Ethernet chips. 1999-06-20 16:33:28 +00:00