Commit Graph

31 Commits

Author SHA1 Message Date
thorpej a473ed5477 Fix omission in previous. 1999-02-18 19:24:39 +00:00
thorpej 982603ce5b Don't reset the interface when the media changes. 1999-02-18 01:24:29 +00:00
thorpej 78e18b8d8c Back out to the previous stable revision of the fxp driver. The latest
one had too many stability problems.
1999-02-18 01:23:41 +00:00
thorpej 70b91539e9 Restructure the interrupt handler and 1-second timer a bit, and tidy up
the lazy-transmit-interrupt logic, fixing a few minor logic problems.

Now unable to reproduce the lockup problem described in PR #6767.  Changing
PR's state to "feedback".
1999-02-13 02:12:59 +00:00
thorpej d15dc38fd9 Changes from FreeBSD:
Implemented a more sophisticated mechanism for handling transmitter
interrupts which now defers them until the transmit queue if filled
up with completed buffers. This has two advantages: first, it reduces
the number of transmitter interrupts to just 1/120th of the rate
that they occured previously, and two, running down many buffers
at once has much improved cache effects.

Defer rundown (m_freem) of completed transmit buffers for no longer
than 1 second.

This brings us up-to-date with the most recent "fxp" driver in FreeBSD.
1998-12-19 01:14:37 +00:00
explorer 9595b984ec teach fxp about rnd_*() 1998-12-17 23:25:29 +00:00
bouyer cc6a0ef02b Use bus_dma(9) for the DMA ops in fxp_init() too. Without this the driver
was stuck in the while (!(cbp->cb_status & FXP_CB_STATUS_C)); loop,
I think because the relevent CPU cache entry was never updated.
This was on a compaq deskpro system.
1998-11-25 17:19:09 +00:00
thorpej 7fe67ebc21 Add support for the Seeq 80c24 AutoDUPLEX media interface which was nuked
when this driver was changed to use the MAC-independent MII code.  This
"PHY" does not have a programming interface, but simply senses the duplex
mode from the link partner.  Since it is not possible to read the 80c24
to determine the link type or status, we consider this to be "manual".
1998-11-03 05:47:38 +00:00
thorpej cbcaaa3bc3 Make sure that a delay loop actually has some delay in it, and use IFF_OACTIVE
as appropriate.
1998-11-03 05:04:49 +00:00
thorpej f69c40b8be Fix a memory leak in fxp_stop(), from the FreeBSD driver. 1998-10-19 23:51:15 +00:00
thorpej 85c6c03e2a Change the 32-bit fields of the RFA to an arrays of bytes, so that
egcs won't attempt to optimize inline copies of them into a single
load/store (the RFA is not 4-byte aligned in the DMA area).

Just use memcpy() to copy those fields, now, not our own home-grown.
1998-08-25 01:08:15 +00:00
thorpej 1301693108 Adapt to new MII code. 1998-08-11 00:11:39 +00:00
mycroft e2686d0a1b Use splnet, not splimp. 1998-08-08 23:51:39 +00:00
jonathan 011f2bda08 defopt NS, NSIP. 1998-07-05 06:49:00 +00:00
jonathan 3751946b97 defopt INET, NETATALK. 1998-07-05 00:51:04 +00:00
thorpej ea3a1d9c44 Nuke __BROKEN_INDIRECT_CONFIG. 1998-06-08 06:55:54 +00:00
cgd 2102dd3e20 check that memory access is enabled before bothering to do the
pci_mapreg_info() call.  pci_mapreg_map() implies this check,
but code which calls pci_mapreg_info() has to check it explicitly.
Otherwise, if memory space is disabled, the driver does the wrong
thing, and tries to use memory space anyway, potentially resulting
incorrect driver operation and no useful error message.
1998-05-18 17:14:32 +00:00
thorpej ec6c5c10d7 Add necessary bus_dmamap_sync() calls for memory mapped with the COHERENT
hint, per bus_dma(9).
1998-02-04 08:26:42 +00:00
thorpej 8abe76d2f0 Add offset and length parameters to bus_dmamap_sync(), used for specifiying
partial syncs of a DMA mapping.
1998-02-04 05:12:46 +00:00
thorpej 296d96f42c Add dm_mapsize to bus_dmamap_t and rename BUS_DMAMEM_NOSYNC to
BUS_DMA_COHERENT.
1998-02-04 00:38:50 +00:00
thorpej 9359316f6f Add support for the 82553[AC] PHY by treating it like an 82555. From
Soren S. Jorvang <soren@t.dk>, PR #4840.
1998-01-28 18:31:37 +00:00
thorpej b89119c134 Convert this driver to use the bus_dma interfaces. 1998-01-28 07:26:42 +00:00
thorpej 0916ab379b Sync w/ FreeBSD-current-980122:
- Rewrite fxp_start() for better clarity and efficiency.
- Remove unused #includes.
1998-01-22 08:31:33 +00:00
thorpej ed13bba51f Fix two register mapping problems:
- Fall back on i/o space if mem space isn't available.
- Card reports mem space as prefetchable, but mapping the card into dense
  space fails in nasty ways on the Alpha.  Force mapping into sparse
  space by clearing the BUS_SPACE_MAP_CACHEABLE bit (XXX!).
1998-01-22 08:04:56 +00:00
thorpej 06ce220790 Update for config changes. 1998-01-12 09:39:57 +00:00
thorpej b6ac221d7c Type/alignment cleanup in EEPROM code. 1997-11-11 06:35:46 +00:00
thorpej cdc616ca77 Port the latest FreeBSD "fxp" driver to NetBSD-current. Changes include:
- Work around a bug in the 82557 that causes the receiver to lock up
  in certain conditions by kicking the multicast address filter if we
  haven't heard anything come down the wire for some period of time.
- Fix a bug that could cause TxCB descriptor chains to cross page boundaries
  on the Alpha.
- Remove some unneeded register masking.
- Fix a bug where too much data was copied from the config template, causing
  memory corruption.
- Fix handing of if_timer (it was be cleared too early in some cases).
- Attempt to reduce the chances of receiver overrun by doubling the
  number of receive DMA segments, and processing receive interrupts
  before transmit interrupts.
- Remove a gratuitous assignment.
- Fix a bug where incoming packets were counted twice.
1997-10-20 01:15:53 +00:00
thorpej 782324102f Use if_media to change media type, not IFF_LINK*. 1997-08-25 22:39:55 +00:00
thorpej 12ef0b5d17 Merge the FreeBSD-current-970823 version of the "fxp" driver, adds support
for more PHYs.  Closes PR #3953.
1997-08-23 09:28:13 +00:00
thorpej f2317e1c5b Changes to support NetBSD, written by me, tested by Matthias Drochner:
- Add NetBSD autoconfiguration support.
- Rearrange code slightly to minimize the number of #ifdefs.
- Don't use a structure to access CSRs.  Use macros that DTRT for
  the NetBSD and FreeBSD cases.
- Deal with alignment contraint on Alpha - add 2-byte padding at the
  beginning of the RFA, so that the data will be 4-byte aligned, after
  the 14-byte Ethernet header.
Thanks to Matthias Drochner for the testing, and David Greenman for
the feedback on the changes.
1997-06-05 02:01:55 +00:00
thorpej 7fa6876537 Import FreeBSD's Intel EtherExpress PRO 10/100B driver, written
by David Greenman.
1997-06-05 01:50:48 +00:00