Commit Graph

2057 Commits

Author SHA1 Message Date
Poul-Henning Kamp
61301f74d0 Remove unused variable.
Found by:       FlexeLint
2003-05-31 19:56:09 +00:00
Poul-Henning Kamp
5a87a6f702 Move some FALLTHROUGH comments so they work.
Fix indentation error.
Make boardid string long enough.
Remove unused variable.

Found by:       FlexeLint
2003-05-31 19:46:58 +00:00
John Baldwin
4fb8dd97a7 Fix support for 256 MB aperture sizes on chipsets such as the 845 and
865.  The APSIZE register has a variable-sized field of enabled bits.
To figure out how many bits a specific host bridge supports, write the
maximum width and see how many bits are set in the hardware.  We then
use this mask for setting and getting the aperture size.  Prior to this,
the agp(4) driver would treat an aperture size of 256 MB as 128 MB and
would not allocate enough physical memory for the GART as a result.

MFC after:	3 days
Sponsored by:	The Weather Channel
Approved by:	re (rwatson)
2003-05-27 20:13:44 +00:00
John Baldwin
ebca65b627 Grr, fix compile. The bane of trying to split out patches into two
commits.

Reported by:	Lukas Ertl <l.ertl@univie.ac.at>
With hat:	re
Pointy hat to:	jhb
2003-05-27 19:42:18 +00:00
John Baldwin
e9ff34a5e2 Add support for the Intel 865 chipset.
MFC after:	3 days
Sponsored by:	The Weather Channel
Approved by:	re (murray)
2003-05-27 18:23:56 +00:00
Martin Blapp
f956e0b3f0 Only use a SIA/SYM media info block if no MII block is detected.
The submitter of PR 32118 told me that this patch also fixes autoselecting
for znyx 4 port cards (10baseT, 100baseTX did work already).

PR:		32118
Reviewed by:	imp
Approved by:	rwatson (re)
2003-05-15 16:53:29 +00:00
Martin Blapp
7eac366be1 Add support for 3Com OfficeConnect 10/100B.
PR:		49059, 50747
Submitted by:	Dax Eckenberg <daxbert@dweebsoft.com>
Reviewed by:	imp, jhb
Approved by:	jhb
MFC after:	2 weeks
2003-05-12 19:50:21 +00:00
Olivier Houchard
0be8f80357 Don't call timeout() in sis_tick(), this is done earlier by mii_tick(), and it
leads to a panic at unload time, as we own 2 instances of callout and
untimeout() only one.
Will I'm there, remove a call to callout_handler_init(), one is enough.

Reviewed by:	wpaul
2003-05-06 02:00:01 +00:00
Hartmut Brandt
2102bdf21a Define a link layer MIB for ATM. Most fields of this MIB are needed by
ILMI daemons. Factor out common softc fields for all ATM interfaces that
need to be externally visible into an ifatm structure and make the midway
driver using this structure and fill the MIB.
2003-05-05 16:35:52 +00:00
Martin Blapp
acc1bccccd Use only a 64bit hash filter table for ADM-Centaur cards like the
Accton EN2242 and the ADMtek AN985 cards.

PR:		32699
Submitted by:	Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
Reviewed by:	phk
MFC after:	2 weeks
2003-05-01 09:31:01 +00:00
Hartmut Brandt
d2c96fc51f Add module data and version to the atm_subr and reference this info from the
(currently) only consumer (en).

Add a sysctl node hw.atm where the atm drivers will hook on their hardware
sysctl sub-trees.

Make atm_ifattach call if_attach and remove the corresponding call to if_attach
from en. Create atm_ifdetach and use that in en.

While the last change actually changes the interface this is not a problem in
practice because the only other consumer of this API is an older LANAI driver
on the net, that is not ready for current anyway.

Reviewed by:	-atm
2003-04-29 08:07:44 +00:00
Hartmut Brandt
33cfde03bc Convert the midway driver to use busdma. Except for this conversion the
following changes have been done:

- stylify. The original code was too hard to read.
- get rid of a number of compilation options (Adaptec-only, Eni-only, no-DMA).
- more debugging features.
- locking. This is not correct yet in the absence of interface layer locking,
  but is correct enough to not to cause lock order reversals.
- remove RAW mode. There are no users of this in the tree and I doubt that
  there are any.
- remove NetBSD compatibility code. There was no way to keep NetBSD non-busdma
  and FreeBSD busdma code together.
- if_en now buildable as a module.

This has been actively tested on sparc64 and i386 with ENI server and
client cards and an Adaptec card (thanks to kjc).

Reviewed by:	mdodd, arr
2003-04-25 16:14:03 +00:00
Warner Losh
214073e5e4 Use newly minted device_is_attached rather than device_is_alive to see
if attach succeeded.  device_is_alive just tells us that probe
succeeded.  Since we were using it to do things like detach net
interfaces, this caused problems when there were errors in the attach
routine.

Symptoms of problem reported by: martin blapp
2003-04-21 18:34:04 +00:00
David E. O'Brien
152385d122 Explicitly declare 'int' parameters. 2003-04-21 16:27:46 +00:00
MIHIRA Sanpei Yoshiro
97f9172896 Add support for Planex FNW-3602-T(CardBus 100M/10M).
Submitted by:	kazz <kazz@v001.vaio.ne.jp>
Obtained from:	[bsd-nomads:16637]
2003-04-18 15:42:25 +00:00
Nate Lawson
693f4477b1 Revise attach/detach resource cleanup
- Unconditionally call *_stop() if device is in the tree. This is to
  prevent callouts from happening after the device is gone. Checks for
  bus_child_present() should be added in the future to keep from touching
  potentially non-existent hardware in *_detach().  Found by iedowse@.
- Always check for and free miibus children, even if the device is not in
  the tree since some failure cases could have gotten here.
- Call ether_ifdetach() in the irq setup failure case
- ti(4), xl(4): move ifmedia_init() calls to the beginning of attach so
  that ifmedia_removeall() can be unconditionally called on detach. There
  is no way to detect whether ifmedia has been initialized without using
  a separate variable (as tl(4) does).
- Add comments to indicate assumptions of code path
2003-04-17 20:32:06 +00:00
Ian Dowse
2ea36df806 Revert part of revision 1.97 by calling dc_stop() unconditionally
in dc_detach() instead of only calling it if the hardware is preset.
This is a workaround for page faults in softclock() after a `dc'
device was detached, caused by not disabling a timer before freeing
its memory. The bus_child_present() checks should probably be
re-added later, but only to avoid the hardware accesses and not the
other resource cleanups in dc_stop().

Approved by:	njl
2003-04-17 08:36:52 +00:00
John Baldwin
918f6e721b Remove another unused variable. 2003-04-16 15:24:17 +00:00
John Baldwin
c3bc903d9a Remove an unused variable so this compiles again. 2003-04-16 15:19:55 +00:00
Matthew N. Dodd
046d2c31c8 Remove some code that managed to escape from my local repository. 2003-04-16 13:18:27 +00:00
Matthew N. Dodd
67a452057c - Remove a block of code I missed in the previous commit.
- Call tl_ifmedia_upd() in tl_init() for cards with bitrate devices.
2003-04-16 06:51:26 +00:00
Matthew N. Dodd
533294b956 - Don't call pci_enable_io() in drivers (unless needed for resume).
- Don't test memory/port status and emit an error message; the PCI
  bus code will do this now.
2003-04-16 03:16:57 +00:00
Matthew N. Dodd
f246e4a17f - Express hard dependencies on bus (pci, isa, pccard) and
network layer (ether).
- Don't abuse module names to facilitate ifconfig module loading;
  such abuse isn't really needed.  (And if we do need type information
  associated with a module then we should make it explicit and not
  use hacks.)
2003-04-15 06:37:30 +00:00
Mike Silbersack
75d8feb42a Rework the rl_encap failure case. Previously, we would stuff the
unencapsulated packet back into the IFQ.  Unfortunately, the only reason
rl_encap would fail was due to m_defrag failing, which should only happen
when we're low on mbufs.  Hence, it was possible for us to end up with
an IFQ full of packets which could never clear the queue because they could
never be defragmented because they were themselves taking up all the mbufs.

To solve this, take if_xl's approach to the problem of encapsulation failure:
drop the packet.

MFC after:	3 days
2003-04-15 04:06:01 +00:00
Maxime Henrion
acabcf7d83 Correct maxsize/maxsegsz parameters to bus_dma_tag_create(). 2003-04-09 15:05:19 +00:00
Mike Silbersack
db5f2ca8df Fix if_vr's handling of vr_encap failures. 3 parts:
- Don't bother setting OACTIVE when the descriptors are all full
  or there's a vr_encap failure, it doesn't help anything.
- Correctly roll back on the descriptor list after a failure
  so as not to corrupt the list.
- Add a missing VR_UNLOCK().

Without these changes, vr_encap failure (which is assured during
a low mbuf situation) would result in the card locking until
the watchdog could fire.

MFC after:	1 week
2003-04-09 02:21:54 +00:00
Mike Silbersack
2590e88477 Quick fix so that the watchdog timer is not set unless packets are
actually queued for transmission.  Without this, a low memory situation
would trigger false watchdog timeouts.

MFC after:	1 week
2003-04-08 03:32:52 +00:00
Mike Silbersack
ee9ad95f0e Fix up callers of xl_encap so that they handle a failure response
properly (likely due to mbuf exhaustion.)  Previously, the driver
got somewhat wedged.

Also, remove the annoying messages printed every time xl_encap
couldn't allocate a mbuf; they served no useful purpose, and just made
an mbuf exhaustion situation more annoying.

MFC after:	1 week
2003-04-08 01:05:54 +00:00
Murray Stokely
887938c12f Fix typo.
PR:		kern/50504
Submitted by:	Alex Semenyaka <alexs@snark.ratmir.ru>
MFC after:	3 days
2003-04-07 10:06:48 +00:00
Maxime Henrion
cc9beb7b77 Use bus_dmamap_load_mbuf() instead of bus_dmamap_load() for the
RX part of this driver too.  It's better since the code wasn't
dealing with bus_dmamap_load() returning EINPROGRESS, and this
can't happen with bus_dmamap_load_mbuf().

Submitted by:	jake
2003-04-05 23:24:23 +00:00
David E. O'Brien
8368cf8f75 Use __FBSDID rather than rcsid[]. 2003-04-03 21:36:33 +00:00
Poul-Henning Kamp
6f46bf604d Fix KASSERT syntax error. 2003-04-01 08:57:28 +00:00
Poul-Henning Kamp
c8d01707ba Fix KASSERT syntax errors.
Please compile LINT before commiting.
2003-04-01 08:10:21 +00:00
John Baldwin
59f47d29b7 Add missing ()'s so that these drivers all compile again.
Noticed by:	jake
Tested on:	i386 (compile)
2003-03-31 20:22:00 +00:00
John Baldwin
726f07979c If we fail to find our PCI ID in attach (this should never happen), then
just return ENXIO directly instead of calling tl_detach() since that would
panic since the softc mutex isn't initialized until after this check.
2003-03-31 19:24:37 +00:00
Nate Lawson
54f1f1d1e6 Clean up locking and resource management for pci/if_*
- Remove locking of the softc in the attach method, instead depending on
  bus_setup_intr being at the end of attach (delaying interrupt enable until
  after ether_ifattach is called)
- Call *_detach directly in the error case of attach, depending on checking
  in detach to only free resources that were allocated.  This puts all
  resource freeing in one place, avoiding thinkos that lead to memory leaks.
- Add bus_child_present check to calls to *_stop in the detach method to
  be sure hw is present before touching its registers.
- Remove bzero softc calls since device_t should do this for us.
- dc: move interrupt allocation back where it was before.  It was unnecessary
  to move it.  This reverts part of 1.88
- rl: move irq allocation before ether_ifattach.  Problems might have been
  caused by allocating the irq after enabling interrupts on the card.
- rl: call rl_stop before ether_ifdetach
- sf: call sf_stop before ether_ifdetach
- sis: add missed free of sis_tag
- sis: check errors from tag creation
- sis: move dmamem_alloc and dmamap_load to happen at same time as tag creation
- sk: remove duplicate initialization of sk_dev
- ste: add missed bus_generic_detach
- ti: call ti_stop before ether_ifdetach
- ti: add missed error setting in ti_rdata alloc failure
- vr: add missed error setting in I/O, memory mapping cases
- xl: add missed error setting in I/O, memory mapping cases
- xl: remove multi-level goto on attach failure
- xl: move dmamem_alloc and dmamap_load to happen at same time as tag creation
- Calls to free(9) are unconditional because it is valid to call free with a
  null pointer.

Reviewed by:	imp, mdodd
2003-03-31 17:29:43 +00:00
Mike Silbersack
709b85c372 Switch rl_encap over to using m_defrag.
No functional change, the previous rl_encap was correct wrt long
mbuf chains; this just reduces code duplication.

MFC after:	2 weeks
2003-03-30 03:45:28 +00:00
Mike Silbersack
63b9b38eb8 Switch vr_encap over to using m_defrag instead of its own version
of the function.

No functional change, this driver already handled long mbuf chains
correctly.

MFC after:	2 weeks
2003-03-29 21:39:49 +00:00
Mike Silbersack
cda97c506e Update if_dc to use m_defrag, removing the semi-duplicate dc_coal
function.

Also, use m_defrag where appropriate to defrag long mbuf chains
in the same fashion as was done in if_sis.c.  Before this change,
if_dc would blow up and take down the interface if fed a really long
mbuf chain.

MFC after:	2 weeks
2003-03-29 21:27:07 +00:00
Mike Silbersack
58b2ce3bee Have sis_encap use m_defrag if:
1.  The chain passed in is > 31 fragments long
or
2.  The chain will not fit in the remaining descriptors without
    defragmentation.

This is slightly less clear than other network drivers because the sis
chips share one descriptor list for all packets, it seems.

Before this change, a > 127 fragment chain would get stuck in the IFQUEUE
permanently, bringing all network traffic to a halt.

MFC after:	2 weeks
2003-03-29 17:50:37 +00:00
Mike Silbersack
cb3b23ef1e Fix up the long mbuf chain recovery code to use m_defrag; the old
code messed up on B & C chipsets because it lost the packet header
and therefore the flag indicating the need for hardware checksums.

MFC after:	2 weeks
2003-03-29 06:34:25 +00:00
Jake Burkholder
227f9a1c58 - Add vm_paddr_t, a physical address type. This is required for systems
where physical addresses larger than virtual addresses, such as i386s
  with PAE.
- Use this to represent physical addresses in the MI vm system and in the
  i386 pmap code.  This also changes the paddr parameter to d_mmap_t.
- Fix printf formats to handle physical addresses >4G in the i386 memory
  detection code, and due to kvtop returning vm_paddr_t instead of u_long.

Note that this is a name change only; vm_paddr_t is still the same as
vm_offset_t on all currently supported platforms.

Sponsored by:	DARPA, Network Associates Laboratories
Discussed with:	re, phk (cdevsw change)
2003-03-25 00:07:06 +00:00
Matthew N. Dodd
868d8b6286 - Use if_broadcastaddr from struct ifnet rather than relying on
extern 'etherbroadcastaddr'.
- Make 'etherbroadcastaddr' static.

Reviewed by:	 imp
2003-03-21 17:53:16 +00:00
Mike Silbersack
af498ca9eb Make sure to free the correct resources when the card fails to attach
properly.  (Broken in the previous commit.)

Noticed by:	"Niels Chr. Bank-Pedersen" <ncbp@bank-pedersen.dk>
2003-03-19 01:48:14 +00:00
MIHIRA Sanpei Yoshiro
1017eea32d Add support for Planex FNW-3800-TX(CardBus 100M/10M).
Submitted by:	Kunihiro Arai <araik@attglobal.net>
Obtained from:	[bsd-nomads:16625]
2003-03-18 14:57:09 +00:00
Mike Silbersack
16a930f6cb Instead of relying on a compile time define to determine whether the xl
driver should use port or memory based IO, determine it dynamically
at runtime, preferring MMIO where possible.  This helps us support newer
arches which dislike port based access better.

Tested on i386 & sparc64, with 3c900, 905, 905b, and 905C cards.
(in varying combinations by both jake and myself)
2003-03-18 06:29:51 +00:00
Søren Schmidt
64eca1e1f2 Add pci id# for the sis648 2003-03-13 07:55:53 +00:00
Bosko Milekic
544244654a Fix bug introduced in 1.130. For the < MHLEN case, we should
be doing a m_gethdr(), not an m_get().

Pointed out by: Hiten Pandya <hiten@unixdaemons.com>
Pointy hat to: Me
2003-03-04 20:19:26 +00:00
Poul-Henning Kamp
7ac40f5f59 Gigacommit to improve device-driver source compatibility between
branches:

Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.

This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.

Approved by:    re(scottl)
2003-03-03 12:15:54 +00:00
Poul-Henning Kamp
dd7a14618b Spell noread() and nowrite() correctly (ie: not "NULL") 2003-03-02 19:23:31 +00:00
Dag-Erling Smørgrav
521f364b80 More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9). 2003-03-02 16:54:40 +00:00
Yoshihiro Takahashi
a5459e94a5 Use rman_get_start() to get start address of the resource. 2003-02-26 13:46:40 +00:00
Maxime Henrion
07159f9c56 Cleanup of the d_mmap_t interface.
- Get rid of the useless atop() / pmap_phys_address() detour.  The
  device mmap handlers must now give back the physical address
  without atop()'ing it.
- Don't borrow the physical address of the mapping in the returned
  int.  Now we properly pass a vm_offset_t * and expect it to be
  filled by the mmap handler when the mapping was successful.  The
  mmap handler must now return 0 when successful, any other value
  is considered as an error.  Previously, returning -1 was the only
  way to fail.  This change thus accidentally fixes some devices
  which were bogusly returning errno constants which would have been
  considered as addresses by the device pager.
- Garbage collect the poorly named pmap_phys_address() now that it's
  no longer used.
- Convert all the d_mmap_t consumers to the new API.

I'm still not sure wheter we need a __FreeBSD_version bump for this,
since and we didn't guarantee API/ABI stability until 5.1-RELEASE.

Discussed with:		alc, phk, jake
Reviewed by:		peter
Compile-tested on:	LINT (i386), GENERIC (alpha and sparc64)
Runtime-tested on:	i386
2003-02-25 03:21:22 +00:00
Marcel Moolenaar
907cf80fbf Remove support for running in SimOS. The support has rotted over
time and there's no indication that it will improve anytime soon.
By removing support for SimOS it is possible to build LINT on
Alpha, which is considered more important at the moment.

Not objected to on: alpha@
2003-02-25 00:42:40 +00:00
Dan Moschuk
25b803ef49 Add support for Peppercon ROL-F Card.
Submitted by: Sascha Holzeiter <sascha@root-login.org>
PR: 48559
2003-02-23 23:35:35 +00:00
Bosko Milekic
fd18f292bd Make xl use m_getcl() to allocate an mbuf and a cluster in one shot,
as opposed to one after the other.  This is faster in both -CURRENT
and -STABLE.  Additionally, there is less code duplication for
error-checking.

One thing to note is that this code seems to return(1) when no buffers
are available; perhaps ENOBUFS should be the correct return value?

Partially submitted & tested by: Hiten Pandya <hiten@unixdaemons.com>
MFC after: 1 week
2003-02-22 14:46:31 +00:00
Maxime Henrion
5e303db539 Fix panic on sparc64 introduced in my last commit. I really
wish the busdma APIs were more consistent accross architectures.

We should probably move all the other DMA map creations in
xl_attach() where we can really handle them failing, since
xl_init() is void and shouldn't fail.

Pointy hat to:	mux
Tested by:	Anders Andersson <anders@hack.org>
2003-02-19 18:33:29 +00:00
Warner Losh
a163d034fa Back out M_* changes, per decision of the TRB.
Approved by: trb
2003-02-19 05:47:46 +00:00
Maxime Henrion
44250c5cd8 - Fix mbuf leak when we successfully allocate a new mbuf but fail to
bus_dmamap_load() it.
- Make it so reusing mbufs when we can't allocate (or map) new ones
  actually works.  We were previously trying to reuse a mbuf which
  was already bus_dmamap_unload()'ed.

Reviewed by:	silby
2003-02-18 18:50:54 +00:00
Eric Anholt
05d1e23aa7 Split the arch-specific AGP files into the appropriate files.* and do the same
for the agp module, and add agp to the list of modules to compile for alpha.
Add an alpha_mb() to agp_flush_cache for alpha -- it's not correct but may
improve the situation, and it's what linux and NetBSD do.
2003-02-14 06:33:52 +00:00
Eric Anholt
11c6a5f80d Remove an extra agp_flush_cache(). The i810 case that needs it already has it. 2003-02-14 06:31:45 +00:00
Eric Anholt
27afae53db Add agpreg.h missed in commit to agp_i810 (adding i85x/i86x AGP support). 2003-02-13 19:24:19 +00:00
Eric Anholt
7978e21002 Add Intel 85x/86x AGP support.
Submitted by:	David Dawes <dawes@xfree86.org>
2003-02-13 07:17:39 +00:00
Warner Losh
6d0dd93192 Minor correction to comment: PNIC and XIRCOM have eeprom, its just
non-standard.
2003-02-12 07:16:15 +00:00
Nate Lawson
3f54508cba Clean up exit path from rl_attach() to remove multiple returns 2003-02-09 22:32:50 +00:00
Matthew N. Dodd
df79cfe4a6 Fix an oversight in some code I added to the last commit. 2003-02-08 21:06:03 +00:00
Matthew N. Dodd
31d20f96fc - Remove duplicate call to callout_handle_init() in pcn_attach().
- Conditionalize mtx_destroy() in pcn_attach().
- Assert driver lock in pcn_intr().

Submitted by:	 Hiten Pandya <hiten@unixdaemons.com>
2003-02-08 20:38:26 +00:00
Martin Blapp
eecb384463 Fix the breakage resulting from Rev. 1.80. Get the eeprom width
for all but two cards. This should fix broken cards like these:

DM9102 (Davicom, DEVICE_ID: 0x9002)
DM9009 (Davicom, DEVICE_ID: 0x9009)
DM9100 (Davicom, DEVICE_ID: 0x9100)
98713/98713_CP (Macronix PMAC, DEVICE_ID: 0x0512)
98713_CP (Macronix PMAC, DEVICE_ID: 0x0512)
987x5 (Macronix PMAC, DEVICE_ID: 0x0531)
98727  (Macronix PMAC, DEVICE_ID: 0x0532)
82C115 (Lite-On PNIC II, DEVICE_ID: 0xc115)
AX88140A (ASIX Dev_ID: DEVICE_ID: 0x1400)
EN1217 (Accton EN1217, DEVICE_ID: 0x1217)

Note that these cards sould still work in STABLE.

Reviewed by:	imp
2003-02-07 23:12:51 +00:00
Martin Blapp
259b8d8489 Add missing braces.
Found by:       FlexeLint (phk)
Reviewed by:	wpaul, phk
2003-02-07 13:55:02 +00:00
Matthew N. Dodd
0642caee99 Turn off interrupts in pcn_stop(). 2003-02-07 13:13:34 +00:00
Matthew N. Dodd
ec050a6488 Consolidate resource release code on error condition. 2003-02-06 21:21:39 +00:00
Martin Blapp
028a849180 Move the DC_SETBIT to the attach function.
Reviewed by:		phk
2003-02-05 21:21:26 +00:00
Mike Silbersack
1a984aad84 Add deviceids for 6105 and 6105M chips. Further changes will be necessary
to fully support these new chips, but preliminary evidence suggests that
they work acceptable with our present driver.

MFC after:	1 week
2003-02-01 01:27:05 +00:00
Mike Silbersack
97e6eca55d Switch the if_vr driver from using our generic MII routines over to
using the Rhine's internal shift registers which are designed
for the job.  This reduces the amount of time we wait around shifting
bits, and seems to work better with some chips.

Also, provide a workaround for some newer cards which report fake PHYs
at multiple addresses.  (As more cards are ID'd, I'm sure this part
of the code will have to be expanded to cover more cases.)

Submitted by:	Thomas Nystrom <thn@saeab.se>
MFC after:	1 week
2003-02-01 01:18:26 +00:00
Mike Silbersack
b72d483eb5 Fixes from Thomas Nystrom to fix hanging problems experienced by vr cards
under load.

This patch has been tested by Thomas and other for more than a month now,
and all (known) hangs seem to be solved.

Thomas's explanation of the patch:

*  Fix the problem with the printing of the RX-error.

*  Code from if_fet do better deal with the RX-recovery including a
   timeout of the RX-turnoff.

*  The call to vr_rxeof before vr_rxeoc have been moved to a point
   where the RX-part of the chip is turned off. Otherwise there is a
   window where new data could have been written to the buffer chain
   before the RX-part is turned off. If this happens the chip will see
   a busy rx-buffer. I have no evidence that this have occured but
   god knows what the chip will do in this case!

*  I have added a timeout of the TX-turnoff. I have checked and in
   my 900 MHz system the flags for turnoff (both RX & TX) is seen at
   the first check in the loop.

*  I could see that I got the VR_ISR_DROPPED interrupt sometimes and
   started to thinking about this. I then realized that no recovery is
   needed for this case and therefore I only count it as an rxerror
   (which was not done before).

*  Finally I have changed the FIFO RX threshhold to 128 bytes. When I
   did this the VR_ISR_DROPPED interrupt went away. Theory: The chip
   will receive a complete frame before it tries to write it out to
   memory then the RX threshold is set to store'n'forward. IF the frame
   is large AND the next rx frame also is large AND the bus is busy
   transfering a TX frame to the TX fifo THEN the second received
   frame wont fit in the FIFO and is then dropped. By having the RX
   threshold set to 128 the RX fifo is emptied faster.

MFC after:	5 days
2003-01-31 07:37:06 +00:00
Maxime Henrion
eddf67296e Fix typo in an unused macro. 2003-01-29 21:56:10 +00:00
Josef Karthauser
96d11470c8 Migrate the PCI bus logic for ohci and uhci from sys/pci to sys/dev/usb. 2003-01-29 00:13:29 +00:00
Martin Blapp
14f19ee835 Add PCI revision number for 630A and 900B. Enable parity error detection
on 900B and 635(A).

Re-add the enhanced PHY access register method again for older chipsets,
they do not seem to work with all old chips.

Reviewed by:		phk
MFC after:		7 days
2003-01-28 10:55:38 +00:00
Maxime Henrion
ff301db64c Remove the now unused sys/malloc.h header. 2003-01-24 02:42:22 +00:00
Mike Silbersack
e02d5926c3 Correctly identify the 3C920B chipset; although it may ship with some Nforce2
boards, it's definitely not an Nvidia chip.

Info from: Nvidia's Linux Network driver & pciids.sourceforge.net
2003-01-22 17:14:33 +00:00
Alfred Perlstein
44956c9863 Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
2003-01-21 08:56:16 +00:00
David E. O'Brien
aac0e9388e Complete the support of the on-board xl(4) on nVidia nForce2 mobo's.
Submitted by:	Mikko S. Hyvarinen <morphy@morphy.iki.fi>
2003-01-19 04:47:54 +00:00
Thomas Moestl
a712d94e68 Make the xl driver work on sparc64:
- Add conversions to/from little endian for fields that the NIC accesses
  by DMA as required.
- Add some bus_dmamap_sync() calls, and correct some existing ones.
- Read the receiver information from the EEPROM in an endian-neutral
  manner.
- Load all RX and TX descriptors in a single DMA map up front, and
  get the bus addresses of individual descriptors by address arithmetic;
  this fixes multiple use of the descriptor tags, which would have
  undesired effects.
It seems that xl still does not work on e250 boxen, for reasons which
are not clear yet.

Reviewed by:	mux
2003-01-19 00:23:59 +00:00
Nate Lawson
608654d473 Remove bogus locking from dc(4). Instead, move interrupt allocation
and ether_ifattach() to end.  This fixes a "could sleep" case and
simplifies error exit cases as well.  Also be sure to set errno
and clean up resources in !mac error case.

Tested by:	Ryan Beasley
2003-01-14 19:31:27 +00:00
David E. O'Brien
f9b7742405 Partial support for the nVidia nForce2 chipset's on-board Broadcom/Altima PHY
and 3com MAC.  Specifications for the Altima PHY are available at:
   http://www.altimacom.com/products/ac101L.html

Submitted by:	Mikko S. Hyvarinen <morphy@morphy.iki.fi>
2003-01-12 21:03:38 +00:00
Eric Anholt
55dbef54ca Add support for the Intel 82820 UP-only AGP bridge.
PR:		41466
Submitted by:	NIIMI Satoshi <sa2c@sa2c.net>
MFC after:	1 week
2003-01-11 20:08:28 +00:00
Dag-Erling Smørgrav
9af714a731 FBSDIDize and clean up whitespace nits. 2003-01-11 16:11:21 +00:00
Dag-Erling Smørgrav
f4be139a67 Read sanpei's mind, and unbreak the build. 2003-01-11 16:08:59 +00:00
MIHIRA Sanpei Yoshiro
fe41c67cfc Add support for Corega FEtherII CB-TXD (CardBus 100M/10M).
Fix typo (Coreaga->Corega)
2003-01-11 07:10:35 +00:00
Martin Blapp
bcd1ede826 Make newer integrated SiS900 cards working.
Allow to read EEPROM from LAN. It is shared
between a 1394 controller and the NIC and each
time we access it, we need to set SIS_EECMD_REQ.

Idea from:	linux driver source

Reviewed by:	luoqi
Obtained from:	linux driver source (idea)
2003-01-10 08:16:03 +00:00
Martin Blapp
b9e58d7b73 Sis no longer implements the enhanced phy control
register, and phy has to be directly accessed via mdio.

Patch converted to CURRENT from STABLE.

Submitted by:	luoqi
Reviewed by:	luoqi (again)
MFC after:	2 weeks
2003-01-10 08:14:07 +00:00
Martin Blapp
91f8432fab SIS_CFG_EDB_MASTER_EN indicates the EDB bus is used instead of
the PCI bus. When this bit is set, the Max DMA Burst Size
for TX/RX DMA should be no larger than 64 bytes.

Reviewed by:	luoqi
Obtained from:	(idea from linux driver source)
MFC after:	2 weeks
2003-01-10 08:12:20 +00:00
Martin Blapp
e808cf6260 When reading PHY regs over the i2c bus, the turnaround ACK bit
is read one clock edge too late. This bit is driven low by
slave (as any other input data bits from slave) when the clock
is LOW. The current code did read the bit after the clock was
driven high again.

Reviewed by:	luoqi
MFC after:	2 weeks
2003-01-10 08:09:58 +00:00
Warner Losh
948c244d94 Add preliminary support for the Hawking PN672TX CardBus cards.
# Preliminary because there are some subtle things the NetBSD driver does
# that we don't do yet.  My card works for me w/o them.
2003-01-10 05:37:15 +00:00
Tom Rhodes
38deb45fc3 Add support for the Davicom DM9009 chipset.
PR:		46859
Submitted by:	Boaz Haberman <boaz@ool-182f8b09.dyn.optonline.net>
Approved by:	rwatson
2003-01-09 20:51:39 +00:00
Maxime Henrion
d21682e5d3 o Only try to recopy the mbuf into an mbuf cluster if
bus_dmamap_load_mbuf() returned EFBIG.
o Fix mbuf leaks in an error (rare) code path.
o Reuse the TX descriptor if xl_encap() failed instead of
  just picking the next one.
o Better error messages.
2003-01-07 01:01:20 +00:00
Mike Silbersack
81f045c0d2 Ooops, use the full name of XL_FLAG_EEPROM_OFFSET_30
Noticed by:	Niels Chr. Bank-Pedersen <ncbp@bank-pedersen.dk>
2003-01-06 01:55:12 +00:00
Mike Silbersack
9363b90153 Add support for the 3c555 miniPCI chipset.
Submitted by:	johannes <johannes@paradise.net.nz>
PR:		46603
MFC after:	3 days
2003-01-06 00:46:03 +00:00
Mike Silbersack
e7e21ec663 Add two MII_SETs to provide a bit more time between operations in
xl_sync; this appears to be necessary with certain systems.

Requested by:	Michael Class <michael_class@gmx.net>
2003-01-06 00:36:13 +00:00
Jake Burkholder
69a0015af3 Tweaks to make if_rl work on sparc64.
Mostly submitted by:	tmm
Tested on:		i386, sparc64
2003-01-05 21:36:59 +00:00
Jens Schweikhardt
9d5abbddbf Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup,
especially in troff files.
2003-01-01 18:49:04 +00:00
Jens Schweikhardt
d64ada501a Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/
Add FreeBSD Id tag where missing.
2002-12-30 21:18:15 +00:00
Maxime Henrion
c9257029fd Leave only one of the two $FreeBSD$ tag, and use __FBSDID(). 2002-12-30 12:46:08 +00:00
Poul-Henning Kamp
828463d085 Change the chip description from "DFE-550TX" to "DL10050".
The DL10050 chip is used on the 550TX and 580TX cards, probably
others as well.
2002-12-23 21:50:47 +00:00
Alan Cox
e7863f186a - Hold the page queues lock around vm_page_wakeup(). 2002-12-23 21:47:46 +00:00
Maxime Henrion
71ffa67746 Fix bug with 3c90xB cards and newer. We weren't trying to
copy the mbuf chain into an mbuf cluster when there is
more than 63 mbufs in the chain.  We were trying with older
cards though.
2002-12-18 23:16:22 +00:00
Semen Ustimenko
0f953c65d1 Fix the missspelt letter in DC_CTYPE_PUP_AUTOSENSe define.
Submitted by:	marius@alchemy.franken.de
MFC after:	3 days
2002-12-18 22:45:43 +00:00
Maxime Henrion
e7c30f884f Convert the xl(4) driver to the busdma API. This should make
it possible to use this driver under ia64, sparc64 (though
there may be endianness issues with this one) and other archs.

Tested on:	i386, alpha (gallatin)
2002-12-17 00:08:49 +00:00
Scott Long
1f380ae506 Move the amd(4) driver to it's own directory in preparation for it growing
an sbus front-end.
2002-12-13 22:59:18 +00:00
Maxime Henrion
84c64d8895 Correct a harmless problem when creating the DMA tag
used to map mbufs.  The maximum size should be MCLBYTES
and not SIS_TX_LIST_SZ.  This is probably a typo in
the original commit.

Tested by:	cognet
2002-12-13 21:34:35 +00:00
Warner Losh
e7b01d0727 Xircom cards store the MAC address in the CIS, so get it from the new
pci_get_ether accesor, which gets it from the CIS for cardbus cards
(and from other pci-like buses via whatever mechanism is used there).

Submitted by: sam
Approved by: re (blanket)
2002-11-27 07:04:10 +00:00
Luigi Rizzo
5d6dfbbb5e Fix handling of IFF_ALLMULTI. The same bug in various forms affects
the following drivers:

    dc mn sf sk ste ti tl xl an bge em gem gx ie lge sr aue cue kue wi xe

Approved by: re
2002-11-25 19:28:01 +00:00
Mike Silbersack
c7c3f58e12 Import some relevant changes from Via's if_fet driver:
1.  Detect the revision of the Rhine chip we're using.
2.  Use the force reset command on revisions which support
    it whenever the normal reset command fails.

This should solve a wide range of "my vr0 locks up with reset
failed messages" problems.  (Although the root causes should
be eventually tracked down.)

Tested by:	grenville armitage <garmitage@swin.edu.au>
Obtained from:	Via's if_fet driver
MFC after:	3 days
Approved by:	re
2002-11-25 05:15:27 +00:00
Sam Leffler
9ef8b52020 o track either_ifattach/ether_ifdetach API changes
o use if_input for input packet processing
o don't strip the Ethernet header for input packets
o use BPF_* macros bpf tapping
o call ether_ioctl to handle default ioctl case
o track vlan changes

Reviewed by:	many
Approved by:	re
2002-11-14 23:49:09 +00:00
Maxime Henrion
7617255f4a Remove a bunch of #include "opt_pci.h". 2002-11-13 17:40:15 +00:00
Alfred Perlstein
a3f8cf2bbd Fix an unparenthasized macro argument. md5s differ but this is likely
to order of operations that are actually fixed by the proper parenthasizing.
2002-11-09 20:13:16 +00:00
Alfred Perlstein
29f194457c Fix instances of macros with improperly parenthasized arguments.
Verified by: md5
2002-11-09 12:55:07 +00:00
John Baldwin
4ed3ce72b0 Fix some sizeof(int) != sizeof(void *) warnings. 2002-11-08 21:30:26 +00:00
John Baldwin
ca5028328a Wrap a device_printf() that violates bus space abstractions to figure out
if it's IO port resource is IO or memory mapped for the sake of a printf
using i386-specific values in #ifdef __i386__.
2002-11-08 15:01:02 +00:00
John Baldwin
f47789c828 Use %z to print a size_t value. 2002-11-08 14:58:35 +00:00
John Baldwin
70d0dcad85 Use %z to print size_t values. 2002-11-08 14:57:18 +00:00
Warner Losh
16093e3f47 Don't take out the rl_mtx lock in the attach routine. The only way
we'd need it is if we're interrupted.  So, register the interrupt last
in the attach routine.
2002-10-29 19:02:19 +00:00
Mike Silbersack
26c138c5e2 Add some magic bits necessary to turn the transmitter on for some
(newer) 556B chips.

Requested & tested by:	Dinesh Nambisan <dinesh@nambisan.net>
Magic bits found by:	Dave Dribin & Donald Becker

MFC After:	3 days
2002-10-22 02:33:50 +00:00
Brooks Davis
4051b0fec6 Use if_printf(ifp, "blah") and device_printf(dev, "blah") instead of
printf("%s%d: blah", ifp->if_name, ifp->if_xname).  This eliminates the
need to store the unit number in the softc.
2002-10-21 02:54:50 +00:00
Poul-Henning Kamp
88647b6de5 Be consistent about functions being static.
Properly put macro args in ().

Spotted by:	FlexeLint.
2002-10-16 09:14:59 +00:00
Poul-Henning Kamp
2c876e15c8 Be consistent about functions being static.
Spotted by:	FlexeLint.
2002-10-16 09:04:52 +00:00
Poul-Henning Kamp
a917a136ff Rename struct softc to struct mn_softc. 2002-10-16 08:41:38 +00:00
Marcel Moolenaar
18e0cd7dde Fix previous commit: Don't cast integral types to pointers to
print them with %p. Cast to unsigned long and print with %#lx.

Discussed with: bde
2002-10-15 01:50:09 +00:00
Peter Wemm
962deac027 Turn off the premature locking in xl. The driver tries to use the mutexes
as spl replacements, but you cant sleep while holding mutexes.

This change has been made on many other drivers.
2002-10-14 23:58:46 +00:00
Marcel Moolenaar
a9945062b7 Make this compile on 64-bit architectures (e.g. ia64) by not assuming
pointers (but more precisely vm_offset_t) can be printed with %x. Use
%p instead and cast the argument to caddr_t.
2002-10-12 20:40:36 +00:00
Warner Losh
7efff076f4 Ooops. Need to free dc_srom on detach to not leak memory.
Pointy Hat to: The Mad Redhead of Niwot
2002-10-07 05:29:13 +00:00
Warner Losh
3097aa70be Dynamically configure the width of the srom. This code comes from
OpenBSD who got the code (or the idea) from the NetBSD tlp driver.

This gets some cardbus dc cards working (either completely or nearly
so).  It also appears to get additional pci cards working, without
breaking working ones.

# Maybe some additional work is needed here.  Also, the cardbus attachment
# might need to match on the CIS rather than on the vendor/device so we have
# a finer level of detail as to what the card is.  Technically, the
# vendor/device fields are undefined for CardBus (even though most cards are
# using common silicon with pci models).
2002-10-07 05:26:35 +00:00
Alfred Perlstein
780c174bca Static'ify a variable.
Submitted by: Matt Emmerton <matt@gsicomp.on.ca>
2002-10-03 06:44:01 +00:00
Eric Anholt
d5157cd692 Correct an indentation.
Noticed by:	phk
2002-10-03 06:10:54 +00:00
Poul-Henning Kamp
1878960dc9 Fix two misindents.
Spotted by:	FlexeLint
2002-10-01 22:27:03 +00:00
Mike Silbersack
f8f4148236 Remove all DELAY(1) calls around MII operations in the XL driver.
According to the MII specification, the delay produced by our
reads alone are sufficient for correct operation.

This reduces the time mii_tick takes from 10ms to ~1ms here.  That's
still a lot, but much better than before.

Submitted by:	Harti Brandt <brandt@fokus.gmd.de>
MFC after:	3 weeks
2002-09-22 04:48:30 +00:00
Nicolas Souchu
44e6ce01b9 Cleanup of amdpm(4).
Add of NVIDIA nForce (nfpm) smbus support.

Obtained from:	Thomas D. Dean <tomdean@speakeasy.org>
2002-09-21 21:43:49 +00:00
Martin Blapp
351267c186 Fix the support for the AN985/983 chips, which do not set the
RXSTATE to STOPPED, but to WAIT. This should fix hangs which
could only be solved by replugging the cable.

Submitted by:	jhb
Reviewed by:	phk
MFC after:	2 weeks
2002-09-20 15:18:13 +00:00
Martin Blapp
7e346229db Enable the automatic TX underrun recovery for the ADMtek chips.
This solves cvsup update on my laptop which aborts after a while
without this patch.

PR:		34236
Reviewed by:	phk
MFC after:	2 weeks
2002-09-20 15:16:06 +00:00
Peter Wemm
78ff825835 simos.c needs a to be updated from the old pci shims. Yell loudly but
stop breaking alpha LINT.
2002-09-19 03:40:17 +00:00
Doug Ambrisko
724b7a2be2 Clarify comment to "Code borrowed from if_fxp.c" to deal with running
out of fragments.

Suggested by:	jhb
2002-09-18 21:32:48 +00:00
Eric Anholt
81ac2d2606 Fix i810 after i830 commit.
Submitted by:	David Dawes <dawes@XFree86.Org>
2002-09-15 08:43:23 +00:00
Eric Anholt
ea3796796a Fix an i830/i845 test that shouldn't get hit in normal use and remove a printf.
Submitted by:	David Dawes <dawes@XFree86.Org>
2002-09-13 04:17:28 +00:00
Eric Anholt
3080733f2e Add AGP support for Intel i830M and i845 thanks to patches from moto kawasaki
<kawasaki@mbg.sphere.ne.jp> and David Dawes <dawes@XFree86.org>.
2002-09-12 04:23:18 +00:00
Doug Ambrisko
877b0861ca Only probe one PHY on the D-Link 580 version of the card (ie rev 0x12).
The 550 version is location at address 1 but since it works right we
let the code find whatever PHY it can.

Fix a fragment issue on TX.  If the number of frags are more then the
driver has allocated then bring all the frags together into one packet
and send it out.  Code derived from the fxp driver.

Tested and found by:	Francois Tigeot <francois.tigeot@nic.fr>
			Hellmuth Michaelis <hm@kts.org>

MFC after:	1 week
2002-09-11 21:26:22 +00:00
Bernd Walter
82026026e0 add missing \n to printf
Approved by:	gallatin (mentor)
2002-09-09 17:39:48 +00:00
Mitsuru IWASAKI
efd1491c3f Add support for Corega FEther CB-TXD (CardBus 100M/10M). 2002-09-06 16:38:06 +00:00
Mark Murray
3ecba1c115 Make consistent; turn spaces into tabs where there is a mixture. 2002-09-04 18:14:17 +00:00
Josef Karthauser
9f1c775798 Add a device description for Intel 82801CA/CAM (ICH3) USB controller
USB-C.

PR:	kern/41963
2002-08-28 20:24:49 +00:00
Bruce Evans
7e9e7dc4ed Include <sys/lockmgr.h> for old lock interfaces instead of depending on
namespace pollution in <sys/lock.h>.
2002-08-27 11:51:55 +00:00
Philippe Charnier
93b0017f88 Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
Alan Cox
fff6062ab6 o Retire vm_page_zero_fill() and vm_page_zero_fill_area(). Ever since
pmap_zero_page() and pmap_zero_page_area() were modified to accept
   a struct vm_page * instead of a physical address, vm_page_zero_fill()
   and vm_page_zero_fill_area() have served no purpose.
2002-08-25 00:22:31 +00:00
Alfred Perlstein
8e708563c7 style: put return types on a line by themselves. 2002-08-24 00:02:03 +00:00
Alfred Perlstein
e3d2833a26 style:
put return values on a line by themselves.
 fix some paste issues where whitespace was used instead of tabs.
2002-08-23 23:49:02 +00:00
Alfred Perlstein
26be7d1c1b Put return values from functions on a line by themselves.
Ok'd previously by: wpaul
2002-08-23 23:19:25 +00:00
Doug Ambrisko
740f8a4472 Don't read the PCI config space during mii operations. Instead save whether
or not we have to limit the PHY detection in the softc structure.  Then
just check the flag.

Suggested by:	jdp
Reviewed by:	jdp
MFC after:	3 days
2002-08-19 16:54:26 +00:00
Poul-Henning Kamp
bd86d22c62 Remove the SIS_LOCK/SIS_UNLOCK from sis_attach(). It makes WITNESS
barf and there seem to be little room for contention during attach.
2002-08-19 06:56:50 +00:00
Josef Karthauser
24177c6cb0 Use uhci_pci_match to return the device description and rework the
vendor description code.
2002-08-18 11:52:47 +00:00
Josef Karthauser
f992fafdd7 Add a comment to remind that uhci_pci_match will never return NULL.
Don't display the "New UHCI DeviceId" message unless booting verbosely.
Use a switch statement for the vendor match code.
2002-08-18 11:42:11 +00:00
Maxim Sobolev
62f7648682 Increase size of ifnet.if_flags from 16 bits (short) to 32 bits (int). To avoid
breaking application ABI use unused ifreq.ifru_flags[1] for upper 16 bits in
SIOCSIFFLAGS and SIOCGIFFLAGS ioctl's.

Reviewed by:	-hackers, -net
2002-08-18 07:05:00 +00:00
Josef Karthauser
8f5fc1b728 Consolidate the device recognition code. 2002-08-18 00:24:03 +00:00
Doug Ambrisko
74495bcdab Revert change to detect multiply PHYs in mii code. There might be cases
when this is needed.  Work around bogus second PHY in the DFE-580 card
via a change in the if_ste.c driver.

Suggested by:	jdp
Reviewed by:	jdp
MFC after:	3 days
2002-08-16 23:19:16 +00:00
Josef Karthauser
c5849647cc UHCI_DEBUG -> USB_DEBUG. 2002-08-15 22:41:20 +00:00
Mike Silbersack
f3b2d59e18 Improve handling of TX errors. Early reports indicate that this
elimiates the driver lockup problem reported by many.

Concepts used were taken from Via's if_fet driver.  Verification
and implementation were done by Thomas Nystrom.

Submitted by:	Thomas Nystrom <thn@saeab.se>
MFC after:	3 days
2002-08-15 04:04:53 +00:00
Alan Cox
fab965bf7e o Use the VM_ALLOC_WIRED flag instead of calling vm_page_wire(). 2002-08-10 18:42:13 +00:00
Doug Ambrisko
d44ef39e51 Fixes for the D-Link DFE-580 card.
This is pretty much fixes any issue I can find:
     -  Watchdog timeouts were due to starting the TX DMA engine
        before we had a packet ready for it.  So the first packet
        sent never got out only if we sent more then one packet
        at a time did the others make it out and not blow up.
        Of course reseting the chip then caused us not to transmit
        the first packet again ie. catch-22.  This required logic changes.
     -  Combine interrupts on TX packets being queued up.
     -  Don't keep running around the RX ring since we might get
        out of sync so only go around once per receive
     -  Let the RX engine recover via the poll interface which is
        similar to the TX interface.  This way the chip wakes
        up with no effort when we read enough packets.
     -  Do better hand-shaking on RX & TX packets so they don't
        start of to soon.
     -  Force a duplex setting when the link comes up after
        an ste_init or it will default to half-duplex and be
        really slow.  This only happens on subsequent ste_init.
        The first one worked.
     -  Don't call stat_update for every overflow.  We only monitor
        the collisions so the tick interval is good enough for that.
        Just read in the collision stats to minimize bus reads.
     -  Don't read the miibus every tick since it uses delays and
        delays are not good for performance.
     -  Tie link events directly to the miibus code so the port
        gets set correctly if someone changes the port settings.
     -  Reduce the extreme number of {R,T}FD's.  They would consume
        130K of kernel memory for each NIC.
     -  Set the TX_THRESH to wait for the DMA engine to complete
        before running the TX FIFO.  This hurts peak TX performance
        but under bi-directional load the DMA engine can't keep up
        with the FIFO.  Testing shows that we end up in the case
        anyways (a la dc(4) issues but worse since the RX engine hogs
	everything).
     -  When stopping the card do a reset since the reset verifies the
	card has stopped.  Otherwise on heavy RX load the RX DMA engine
	is still stuffing packets into memory.  If that happens after
	we free the DMA area memory bits get scribled in memory and
	bad things happen.

This card still has seemingly unfixable issues under heavy RX load in
which the card takes over the PCI bus.

Sponsored by:	Vernier Networks
MFC after:	1 week
2002-08-07 22:31:27 +00:00
Luigi Rizzo
ffe4fbf0fd Use new interface for ether_input().
Remove some unnecessary assignments to mbuf fields in sis_newbuf(),
the "length" fields are of no use while the mbuf is in the receive ring.

MFC after: 3 days
2002-08-07 16:08:54 +00:00
Mike Silbersack
aff8da7074 Make sure to set the DMA transfer length register, plus one
small style fix.

Submitted by:	Thomas Nystrom <thn@saeab.se>
2002-08-05 13:24:06 +00:00
Luigi Rizzo
32d273402d Use m_getcl() to allocate mbuf+cluster for the receive ring.
Remove the sis_quick variable, as it was there for testing purposes
only.

MFC after: 3 days
2002-08-04 21:52:05 +00:00
Poul-Henning Kamp
e26ebcce25 Repond properly to NGM_TEXT_CONFIG messages. 2002-08-04 20:50:50 +00:00
Mike Silbersack
16afddabdc Make sure to set both sets of registers which control the RX and TX buffer
sizes.  Previously, the end result was at the mercy of the card's default
setting.  This change will reduce the number of buffer underruns for
some users.

PR:		kern/37929
Submitted by:	Thomas Nystrom <thn@saeab.se>
MFC after:	7 days
2002-07-31 19:58:36 +00:00
John Baldwin
c038666eae If we get 0xffff back when reading the status register, assume the card
has gone away instead of spinning in the interrupt handler.  This stops
my machine from hanging when I eject a rl(4)-based cardbus card.

Reviewed by:	imp
2002-07-30 17:31:42 +00:00
Alan Cox
5ec699cdac o If the page returned by vm_page_grab(VM_ALLOC_ZERO) isn't prezeroed,
zero it.

Reviewed by:	dfr, peter
2002-07-21 04:07:26 +00:00
John Baldwin
d6ac80d12f Add PCI IDs for the A, B, and C UHCI controllers in the ICH4.
Sponsored by:	The Weather Channel
2002-07-19 22:17:02 +00:00
John Baldwin
8034890757 - Use more correct values to initialize the AGP controller during setup.
The value we use is still questionable for 440BX chipsets.
- When flushing the TLB just toggle the bit in question instead of writing
  a magic value that could trash other unrelated bits.
2002-07-17 02:52:01 +00:00
Alan Cox
613f5495ed o Lock page queue accesses by vm_page_wire(). 2002-07-14 20:40:32 +00:00
Alan Cox
1f54526952 o Complete the locking of page queue accesses by vm_page_unwire().
o Assert that the page queues lock is held in vm_page_unwire().
 o Make vm_page_lock_queues() and vm_page_unlock_queues() visible
   to kernel loadable modules.
2002-07-13 20:55:21 +00:00
Luigi Rizzo
2e4fb41fa5 Fix if_timer logic to make sure that there is always a timeout
pending if there are packets queued for transmission.

Several drivers still have the same problem.

MFC after: 3 days
2002-06-30 22:16:22 +00:00
Luigi Rizzo
bcb9ef4fe6 Fix if_timer logic to make sure that there is always a timeout
pending if there are packets queued for transmission.

MFC after: 3 days
2002-06-30 22:05:46 +00:00
Luigi Rizzo
4dfae5a5e8 Make sure that if_timer does not get reset if there are packets
still queued for transmission. This should solve the problem of
the device stalling on transmissions if some link event prevents
transmission.

There are other drivers which have the same problem and need to be
fixed in the same way.

MFC after: 3 days
2002-06-30 21:59:08 +00:00
Alfred Perlstein
7c41487d14 catch up with mextfree callback change when TI_PRIVATE_JUMBOS is defined.
Pointed out by: kdm
2002-06-29 11:26:05 +00:00
Peter Wemm
160554fbf4 Remove a couple of __P() stragglers. 2002-06-29 02:32:34 +00:00
Alfred Perlstein
69a3693f3e catch up with mextadd callback taking a void argument instead of a caddr_t. 2002-06-29 01:49:22 +00:00
Alfred Perlstein
64f0b9d749 remove or replace caddr_t with void.
make the mbuf external free function take a void * rather than caddr_t.
2002-06-28 23:48:23 +00:00
Kenneth D. Merry
98cb733c67 At long last, commit the zero copy sockets code.
MAKEDEV:	Add MAKEDEV glue for the ti(4) device nodes.

ti.4:		Update the ti(4) man page to include information on the
		TI_JUMBO_HDRSPLIT and TI_PRIVATE_JUMBOS kernel options,
		and also include information about the new character
		device interface and the associated ioctls.

man9/Makefile:	Add jumbo.9 and zero_copy.9 man pages and associated
		links.

jumbo.9:	New man page describing the jumbo buffer allocator
		interface and operation.

zero_copy.9:	New man page describing the general characteristics of
		the zero copy send and receive code, and what an
		application author should do to take advantage of the
		zero copy functionality.

NOTES:		Add entries for ZERO_COPY_SOCKETS, TI_PRIVATE_JUMBOS,
		TI_JUMBO_HDRSPLIT, MSIZE, and MCLSHIFT.

conf/files:	Add uipc_jumbo.c and uipc_cow.c.

conf/options:	Add the 5 options mentioned above.

kern_subr.c:	Receive side zero copy implementation.  This takes
		"disposable" pages attached to an mbuf, gives them to
		a user process, and then recycles the user's page.
		This is only active when ZERO_COPY_SOCKETS is turned on
		and the kern.ipc.zero_copy.receive sysctl variable is
		set to 1.

uipc_cow.c:	Send side zero copy functions.  Takes a page written
		by the user and maps it copy on write and assigns it
		kernel virtual address space.  Removes copy on write
		mapping once the buffer has been freed by the network
		stack.

uipc_jumbo.c:	Jumbo disposable page allocator code.  This allocates
		(optionally) disposable pages for network drivers that
		want to give the user the option of doing zero copy
		receive.

uipc_socket.c:	Add kern.ipc.zero_copy.{send,receive} sysctls that are
		enabled if ZERO_COPY_SOCKETS is turned on.

		Add zero copy send support to sosend() -- pages get
		mapped into the kernel instead of getting copied if
		they meet size and alignment restrictions.

uipc_syscalls.c:Un-staticize some of the sf* functions so that they
		can be used elsewhere.  (uipc_cow.c)

if_media.c:	In the SIOCGIFMEDIA ioctl in ifmedia_ioctl(), avoid
		calling malloc() with M_WAITOK.  Return an error if
		the M_NOWAIT malloc fails.

		The ti(4) driver and the wi(4) driver, at least, call
		this with a mutex held.  This causes witness warnings
		for 'ifconfig -a' with a wi(4) or ti(4) board in the
		system.  (I've only verified for ti(4)).

ip_output.c:	Fragment large datagrams so that each segment contains
		a multiple of PAGE_SIZE amount of data plus headers.
		This allows the receiver to potentially do page
		flipping on receives.

if_ti.c:	Add zero copy receive support to the ti(4) driver.  If
		TI_PRIVATE_JUMBOS is not defined, it now uses the
		jumbo(9) buffer allocator for jumbo receive buffers.

		Add a new character device interface for the ti(4)
		driver for the new debugging interface.  This allows
		(a patched version of) gdb to talk to the Tigon board
		and debug the firmware.  There are also a few additional
		debugging ioctls available through this interface.

		Add header splitting support to the ti(4) driver.

		Tweak some of the default interrupt coalescing
		parameters to more useful defaults.

		Add hooks for supporting transmit flow control, but
		leave it turned off with a comment describing why it
		is turned off.

if_tireg.h:	Change the firmware rev to 12.4.11, since we're really
		at 12.4.11 plus fixes from 12.4.13.

		Add defines needed for debugging.

		Remove the ti_stats structure, it is now defined in
		sys/tiio.h.

ti_fw.h:	12.4.11 firmware.

ti_fw2.h:	12.4.11 firmware, plus selected fixes from 12.4.13,
		and my header splitting patches.  Revision 12.4.13
		doesn't handle 10/100 negotiation properly.  (This
		firmware is the same as what was in the tree previously,
		with the addition of header splitting support.)

sys/jumbo.h:	Jumbo buffer allocator interface.

sys/mbuf.h:	Add a new external mbuf type, EXT_DISPOSABLE, to
		indicate that the payload buffer can be thrown away /
		flipped to a userland process.

socketvar.h:	Add prototype for socow_setup.

tiio.h:		ioctl interface to the character portion of the ti(4)
		driver, plus associated structure/type definitions.

uio.h:		Change prototype for uiomoveco() so that we'll know
		whether the source page is disposable.

ufs_readwrite.c:Update for new prototype of uiomoveco().

vm_fault.c:	In vm_fault(), check to see whether we need to do a page
		based copy on write fault.

vm_object.c:	Add a new function, vm_object_allocate_wait().  This
		does the same thing that vm_object allocate does, except
		that it gives the caller the opportunity to specify whether
		it should wait on the uma_zalloc() of the object structre.

		This allows vm objects to be allocated while holding a
		mutex.  (Without generating WITNESS warnings.)

		vm_object_allocate() is implemented as a call to
		vm_object_allocate_wait() with the malloc flag set to
		M_WAITOK.

vm_object.h:	Add prototype for vm_object_allocate_wait().

vm_page.c:	Add page-based copy on write setup, clear and fault
		routines.

vm_page.h:	Add page based COW function prototypes and variable in
		the vm_page structure.

Many thanks to Drew Gallatin, who wrote the zero copy send and receive
code, and to all the other folks who have tested and reviewed this code
over the years.
2002-06-26 03:37:47 +00:00
Jens Schweikhardt
21dc7d4f57 Fix typo in the BSD copyright: s/withough/without/
Spotted and suggested by:	des
MFC after:	3 weeks
2002-06-02 20:05:59 +00:00
Mike Silbersack
000c679b3c Enhance the use of the watchdog timer in this driver so that it will
allow recovery from transmission lockups which occur in the middle
of the descriptor list, rather than just at the beginning.

For some unknown reason, Rhine II chips have a tendency to stop
transmitting while under heavy load, possibly due to collisions.
Whether this behavior is due to a hardware bug or a driver glitch
is unknown as of now.

In either case, this change allows the driver to gracefully recover
from such situations.

Special thanks go to The Anarcat <anarcat@anarcat.dyndns.org>, who
bugged me into looking at this and to
Dominic Marks <dominic_marks@btinternet.com>, who performed a great
deal of testing to help characterize this problem.

MFC after:	3 days
2002-05-15 17:05:28 +00:00
John Baldwin
d204693572 Add support for the D-Link DFE-690TXD Cardbus card which has a RealTek 8139
with its own PCI ID.
2002-05-06 13:43:00 +00:00
Mitsuru IWASAKI
e8388e1466 Add suspend/resume code mostly merged from fxp/rl driver.
This is temporary hack, better and generalized solution probably
should be implemented at lower layer(MII or PCI?).
Tested by:	shoko.araki@soliton.co.jp
MFC after:	1 week
2002-05-06 10:55:42 +00:00
Poul-Henning Kamp
9ebe64ca1b Don't grab the lock until somewhat later in attach to avoid a lock
reversal.
2002-05-03 08:44:53 +00:00
Poul-Henning Kamp
45521525a7 Move us yet closer to IFM_* definitions in NetBSD. 2002-04-29 05:32:44 +00:00
Poul-Henning Kamp
b418ad5c2e Follow NetBSD and s/IFM_1000_TX/IFM_1000_T/ 2002-04-28 20:34:20 +00:00
Mike Barcroft
a30d4b3270 Move the new byte order function prototypes from <sys/param.h> to
<sys/endian.h>.  This puts us in line with NetBSD and OpenBSD.
2002-04-26 22:48:23 +00:00
Poul-Henning Kamp
14021ab570 Redo the pps bit to avoid digging into the private bits of the timecounter. 2002-04-26 21:22:02 +00:00
Poul-Henning Kamp
7bf758bff0 Simplify the RFC2783 and PPS_SYNC timestamp collection API. 2002-04-26 20:24:28 +00:00
Semen Ustimenko
9cd64fb3dd Move tx(4) driver to sys/dev/tx. BTW split hardware structures and constants
into if_txreg.h.

MFC after:	1 week
2002-04-19 22:43:57 +00:00
Luigi Rizzo
7632341a30 Add DEVICE_POLLING support to the "rl" driver.
The diffs are very similar to the ones for the "sis" driver.

MFC After: 5 days
2002-04-16 22:03:14 +00:00
Coleman Kane
9264fbc80a Fix some nits in AMD AGP driver. Remove excess malloc and move a bzero
out of the way, so it won't cause trouble.

Submitted by:	Frank Mayher <frank@exit.com>
MFC after: 1 week
2002-04-15 18:57:26 +00:00
Bill Paul
9a29439fb9 Nortel Networks sells a RealTek 8139-based NIC that's basically
the same thing as the SMC 1211, but with their own vendor ID.
Update the device list to support this NIC. (Discovered these
cards lying around the lab at work.)
2002-04-11 06:12:51 +00:00
Bill Paul
a72c060fb0 Teach the rlphy driver how to do parallel link detection. If the link partner
doesn't support NWAY, the RealTek PHY (both the integrated ones on 8139
chips and the RTL8201L 10/100 PHY) will not report the link speed via
the ANLPAR or BMSR registers. For the 8201L, we need to look in magic
vendor-specific PHY register 0x19. For the 8139 MAC+PHY combo, we have
to be able to test the RL_MEDIASTAT register.

The changes to rlphy.c are based largely on the patch from PR 30836,
however I tried to eliminate some magic numbers by creating an entry
for the 8201 PHY in miidevs.

Also updated if_rl.c to allow the rlphy driver to read the RL_MEDIASTAT
register via the rl_miibus_readreg() routine.
2002-04-07 20:55:50 +00:00