Commit Graph

1623 Commits

Author SHA1 Message Date
Jason Evans
0384fff8c5 Major update to the way synchronization is done in the kernel. Highlights
include:

* Mutual exclusion is used instead of spl*().  See mutex(9).  (Note: The
  alpha port is still in transition and currently uses both.)

* Per-CPU idle processes.

* Interrupts are run in their own separate kernel threads and can be
  preempted (i386 only).

Partially contributed by:	BSDi (BSD/OS)
Submissions by (at least):	cp, dfr, dillon, grog, jake, jhb, sheldonh
2000-09-07 01:33:02 +00:00
Poul-Henning Kamp
bfb752885a Register resources in a more opportune order for the hardware. 2000-09-05 21:08:48 +00:00
Peter Wemm
741f2944a9 Add compaq hotplug PCI device id.
Tidy up some loose ends.  Be a little more consistent how the ign driver
probes with the rest of the drivers in this file.
2000-09-05 00:33:22 +00:00
Peter Wemm
28ea1bf869 When dumping the 'found devices' list in verbose mode, actually show the
bus/slot/function numbers.  The old PCI code used other markers or
something, but without it here under the new pci code it is very hard to
tell which device is which (this only affects bootverbose mode).
2000-09-05 00:32:19 +00:00
Peter Wemm
edc31306f7 Fix pci-pci bridges (I hope).
In the nexus case, there are no ivars for children of nexus devices,
and we were passing data in from before the device existed, hence ivars
are convenient as the softc doesn't really exist yet.
However, for pci->pci bridges, the pcib occupies a pci device itself,
which *does* already have ivars.  However, softc is available and stable
at this point since we've been identified and are locating the bus during
attach.  So, use softc for this version of pcib devices for storing the
physical bus number in.
2000-09-03 08:30:10 +00:00
Bill Paul
21aff61248 Define some more bits in CSR15 needed for previous change. 2000-09-02 00:02:51 +00:00
Bill Paul
918434c883 Make the blinkylights on non-MII 21143 cards work. We need to enable
the link and activity LED control bits in CSR15 in order for the
controller to drive the LEDs correctly. This was largely done for the
ZNYX multiport cards, but should also work with the DEC DE500-BA
and other non-MII cards.
2000-09-01 23:59:54 +00:00
Mike Smith
f7c7ba14bf If a base address register has been set up by the BIOS, but the relevant
enable bit hasn't been set in the command register, set the bit and
honour the register.  It seems that quite a few lazy BIOS writers
aren't bothering to do this, which upsets the existing code and causes
us to miss out on properly-configured devices.
2000-09-01 23:09:02 +00:00
Peter Wemm
280b4748af Take a shot at fixing multiple pci busses on i386.
pcib_set_bus() cannot be used on the new child because it is
meant to be used on the *pci* device (it looks at the parent internally)
not the pcib being added.  Bite the bullet and use ivars for the bus
number to avoid any doubts about whether the softc is consistant between
probe and attach.  This should not break the Alpha code.
2000-08-31 23:11:35 +00:00
Peter Wemm
54613737b4 Remove duplicate static definition of pci_devclass 2000-08-31 21:27:51 +00:00
Warner Losh
23b7b12ddc Add a detach method to allow this device to be unloaded. 2000-08-30 06:57:38 +00:00
Warner Losh
a7d5d6a892 Add TI-1031 id. It doesn't work yet, but it is nice to have it.
These were on cards that were pci pccard (not cardbus) bridges that
lived in SparcUltras that picked up on ebay.
2000-08-29 04:40:17 +00:00
Doug Rabson
21c3015a24 * Completely rewrite the alpha busspace to hide the implementation from
the drivers.
* Remove legacy inx/outx support from chipset and replace with macros
  which call busspace.
* Rework pci config accesses to route through the pcib device instead of
  calling a MD function directly.

With these changes it is possible to cleanly support machines which have
more than one independantly numbered PCI busses. As a bonus, the new
busspace implementation should be measurably faster than the old one.
2000-08-28 21:48:13 +00:00
Bill Paul
4e2499823f Add support for the 3Com 556 and 556B mini-pci adapters used on some
laptops. I've checked that this still works with the other cards and
it works with the 3c556 that I have access to, but I want to check that
it works with the 556B mentioned in PR #20878 before I close out the PR
and merge to -stable.
2000-08-28 20:40:03 +00:00
Matt Jacob
84267b9edd remove clause 3 licence 2000-08-27 23:39:23 +00:00
Jun Kuriyama
3eb2d54771 Correct messages for VIA Apollo Pro133A. 2000-08-25 08:30:51 +00:00
Bill Paul
343d203cf1 Fix up the sis driver, largely to improve the NatSemi DP83815 support:
- Modify the driver to poll the link state and positively set the
  MAC to full or half duplex as needed. Previously, it was possible
  for the MAC to remain in half duplex even though the PHY had negotiated
  full duplex with its link partner, which would result in bursty
  performance.

- Program some of the NatSemi's registers as specified by the datasheet.
  The manual says these are necessary for "optimum perofrmance," though
  a couple of them are marked as reserved in the register map. *shrug*

- Select the TX DMA burst size correctly for 10 and 100mbps modes.
  Previously I was using 64 bytes in both modes, which worked in
  100mbps mode, but resulting in spotty performance in 10mbps.
  32 bytes works much better; without this change, the natsemi
  chip yields piss poor performance at 10mbps.

With these fixes, the NatSemi chip finally performs to my satisfaction.
I should be merging the support for this controller into -stable shortly.

Phew.
2000-08-22 23:26:51 +00:00
David Malone
a5c4836d39 Replace the mbuf external reference counting code with something
that should be better.

The old code counted references to mbuf clusters by using the offset
of the cluster from the start of memory allocated for mbufs and
clusters as an index into an array of chars, which did the reference
counting. If the external storage was not a cluster then reference
counting had to be done by the code using that external storage.

NetBSD's system of linked lists of mbufs was cosidered, but Alfred
felt it would have locking issues when the kernel was made more
SMP friendly.

The system implimented uses a pool of unions to track external
storage. The union contains an int for counting the references and
a pointer for forming a free list. The reference counts are
incremented and decremented atomically and so should be SMP friendly.
This system can track reference counts for any sort of external
storage.

Access to the reference counting stuff is now through macros defined
in mbuf.h, so it should be easier to make changes to the system in
the future.

The possibility of storing the reference count in one of the
referencing mbufs was considered, but was rejected 'cos it would
often leave extra mbufs allocated. Storing the reference count in
the cluster was also considered, but because the external storage
may not be a cluster this isn't an option.

The size of the pool of reference counters is available in the
stats provided by "netstat -m".

PR:		19866
Submitted by:	Bosko Milekic <bmilekic@dsuper.net>
Reviewed by:	alfred (glanced at by others on -net)
2000-08-19 08:32:59 +00:00
Bill Paul
069363018f Fix a bug brought to light by the people working on SMPng. I don't quite
understand exactly what it is about SMPng that tickles this bug. What I
do know is that the foo_init() routine in most drivers is often called
twice when an interface is brought up. One time is due to the ifconfig(8)
command calling the SIOCSIFFLAGS ioctl to set the IFF_UP flag, and another
is probably due to the kernel calling ifp->if_init at some point. In any
case, the SMPng changes seem to affect the timing of these two events in
such a way that there is a significant delay before any packets are sent
onto the wire after the interface is first brought up. This manifested
itself locally as an SMPng test machine which failed to obtain an address
via DHCP when booting up.

It looks like the second call to fxp_init() is happening faster now than
it did before, and I think it catches the chip while it's in the process
of dealing with the configuration command from the first call. Whatever
the case, a FXP_CSR_SCB_CNA interrupt event is now generated shortly after
the second fxp_init() call. (This interrupt is apparently never generated
by a non-SMPng kernel, so nobody noticed.)

There are two problems with this: first, fxp_intr() does not handle the
FXP_CSR_SCB_CNA interrupt event (it never tests for it or does anything
to deal with it), and second, the meaning of FXP_CSR_SCB_CNA is not
documented in the driver. (Apparently it means "command unit not active.")
Bad coder. No biscuit.

The fix is to have the FXP_CSR_SCB_CNA interrupt handled just like the
FXP_SCB_STATACK_CXTNO interrupt. This prevents the state machine for
the configuration/RX filter programming stuff from getting wedged for
several seconds and preventing packet transmission.

Noticed by: jhb
2000-08-11 17:47:55 +00:00
Bill Paul
bf64541762 Close PR 20438. Make fix for preserving LED settings conditional on
presence Intel 21143 chip.
2000-08-07 17:03:20 +00:00
MIHIRA Sanpei Yoshiro
e52508ae0b Add the ESS Solo-1 to generic chip match.
Solo-1 Datasheet(vendor/device info at P.33)
http://www.alsa-project.org/alsa/ftp/manuals/ess/DsSolo1.pdf
2000-08-03 13:46:52 +00:00
Bill Paul
6f069b494a Add support for the Netgear GA620T copper gigabit card. 2000-08-02 18:49:17 +00:00
Bill Paul
abe1d92e0a Add call to bus_generic_attach() at the end of sk_attach(). It turns out that
if you kldload this driver, all the subordinate devices are probed/attached
as expected. But this is not the case when the driver is statically compiled
into the kernel. Since I do most of my testing with modules, I failed to
notice this. I'm not sure if it's intended behavior or not. I think it may
be, but it seems a little counter-intuitive.
2000-08-02 18:19:00 +00:00
Bill Paul
c400cb27d2 Grrrr. Add definition for DC_WDOG_CTLWREN. I made this change yesterday
but stupidly only commited to if_dc.c.
2000-08-02 16:31:11 +00:00
Bill Paul
8273d5f8b1 Apply patch supplied by John Hood <jhood@sitaranetworks.com> to fix problems
with LEDs on some cards being stomped on when clearing the "jabber disable"
bit. Using DC_SETBIT() has an unwanted side effect of setting a write enable
bit in the watchdog timer register which we really want to be cleared when
we do a write.
2000-08-01 19:34:13 +00:00
Matt Jacob
d02373f1a0 Part of major rewrite for core version 2.0- clarification of
mdvec structure, removal of printf/CFGPRINTF in place of isp_prt
calls. Parameterization of RQUEST_QUEUE_LEN/RESULT_QUEUE_LEN.
2000-08-01 05:16:49 +00:00
Peter Wemm
d244b0e95b "Fix" cast qualifier warnings using the uintptr_t intermediate trick. 2000-07-28 23:30:30 +00:00
Jeroen Ruigrok van der Werven
3759e79c20 Document the 0x12258086 PCI id.
This is in fact an Intel Orion chipset (82454KX/GX) which has been used
in HP NetServer's LS4 range.
HP Probably relabeled the DID.  That's the only explanation I can find
plausible to this `mystery'.
2000-07-27 09:54:50 +00:00
Bill Paul
51a4eb4bed Use a custom Tigon 2 firmware image, hopefully temporarily. This is
the 12.4.11 firmware with a few changes to the link handling code merged
in from the 12.4.13 release. I'm doing this because the 12.4.13 firmware
doesn't seem to handle 10/100 link settings properly on 1000baseT cards.
Note that the revision codes still identify the firmware as 12.4.13
because both ti_fw2.h and ti_fw.h have to have the same revision values,
and I wanted to keep the 12.4.13 firmware for Tigon 1 cards.

It's nice to have firmware source.
2000-07-26 23:55:34 +00:00
Bill Paul
54358bfe2b Tweak probe message so that 1000baseSX and 1000baseT cards are
explicitly identified.
2000-07-20 23:43:45 +00:00
Bill Paul
e87631b976 Update the Tigon driver to support 1000baseTX gigE over copper AceNIC
cards. This basically involves switching to the 12.4.13 firmware, plus
a couple of minor tweaks to the driver.

Also changed the jumbo buffer allocation scheme just a little to avoid
'failed to allocate jumbo buffer' conditions in certain cases.
2000-07-20 22:24:43 +00:00
Andrew Gallatin
0617522889 Fix an alpha-only race which causes the transmit side of the chip to
lock up under moderate to heavy load.

The status & command fields share a 32-bit longword.  The programming
API of the eepro apparently requires that you update the command field
of a transmit slot that you've already given to the card.  This means
the card could be updating the status field of the same longword at
the same time. Since alphas can only operate on 32-bit chunks of
memory, both the status & command fields are loaded from memory &
operated on in registers when the following line of C is executed:

                sc->cbl_last->cb_command &= ~FXP_CB_COMMAND_S;

The race is caused by the card DMA'ing up the status at just the wrong
time -- after it has been loaded into a register & before it has been
written back.  The old value of the status is written back, clobbering
the status the card just DMA'ed up. The fact that the card has sent
this frame is missed & the transmit engine appears to hang.

Luckily, as numerous people on the freebsd-alpha list pointed out, the
load-locked/store-conditional instructions used by the atomic
functions work with respect changes in memory due to I/O devices.  We
now use them to safely update the command field.

Tested by: Bernd Walter <ticso@mail.cicely.de>
2000-07-19 14:33:52 +00:00
Matt Jacob
05fbcbb000 Keep interrupts blocked for all of isp_pci_attach. Redo DMA routines
for target mode for cleanliness and accuracy.
2000-07-18 06:40:22 +00:00
Bill Paul
ead7cde9d1 Add the PCI IDs for the Macronix 98727 and 98732 parts. These are
3.3volt PCI/cardbus chipsets similar to the 98715 (and they have
512-bit hash tables). Also update the man page to mention the 98727/98732
and the SOHOware SFA110A Rev B4 card with the 98715AEC-C chip.
2000-07-17 19:27:41 +00:00
Bill Paul
79d11e0960 Apply patch to the dc driver to handle Macronix MX98715AEC-C/D/E chips,
which differ slightly from the Macronix MX98715AEC chip on the sample
adapter that I have in that the multicast hash table is only 128 bits
wide instead of 512. New adapters are popping up with this chip, and
due to improper handling of the smaller hash table, broadcast packets
were not being received correctly.
2000-07-15 17:54:30 +00:00
Bill Paul
eddceb0d2b Close PR# 19904: remember to call sf_setmulti() when initializing the
interface so the multicast filter will be programmed correctly.
2000-07-14 19:11:02 +00:00
Bill Paul
c5e8fc022f sis_miibus_writereg() was checking for SIS_TYPE_900 and phy != 0 twice
due to a small cut & paste-o on my part. It happens this didn't hurt
anything, but it's still wrong.
2000-07-14 05:30:48 +00:00
Archie Cobbs
21b8ebd926 Make all Ethernet drivers attach using ether_ifattach() and detach using
ether_ifdetach().

The former consolidates the operations of if_attach(), ng_ether_attach(),
and bpfattach(). The latter consolidates the corresponding detach operations.

Reviewed by:	julian, freebsd-net
2000-07-13 22:54:34 +00:00
Doug Rabson
e547d6fd34 Add support for Intel's i810 chipset with integrated graphics. An
associated patch to XFree86 allows the X server to work with this chipset
on FreeBSD. Additional work will include porting the Linux 3D driver.

Submitted by: Ruslan Ermilov <ru@FreeBSD.org>
2000-07-12 10:13:07 +00:00
Poul-Henning Kamp
ae74d73718 Newbusify this driver at an expense of 40 extra lines of code. 2000-07-10 19:33:41 +00:00
Matt Jacob
6e95418137 Thanks for Andrew Gallatin pointing out that freeing contigmalloc'd
items via free is bad.
2000-07-09 00:18:21 +00:00
Andrew Gallatin
19a6b3fea6 use contigfree() rather than free() to free memory allocated with
contigmalloc().

reviewed by: wpaul
2000-07-08 00:14:12 +00:00
Bill Paul
8484ad351d Fix a minor bug in the MAC address unscrambling code.
(Some shift rights should have been shift lefts.)
2000-07-06 19:21:07 +00:00
Bill Paul
95674596b9 Add support for the National Semiconductor DP83815 fast ethernet
controller chip. This chip is currently being used on the NetGear
FA312-TX adapter, which I guess is a replacement for the FA310-TX
(PNIC-based).

I added support for this chip by modifying the sis driver since
the SiS 900 and the NS DP83815 have almost the same programming
interface (the RX filter programming and PHY access methods are
different, but the general configuration, DMA scheme and register
layout are identical).

I would have had this done a lot sooner, but getting the damn MAC
address out of the EEPROM proved to be more complicated than expected.
2000-07-06 06:02:04 +00:00
Bill Paul
1be1972c4b Close PR# 19617: add support for VIA VT6102 NICs to VIA Rhine driver. 2000-07-05 21:37:21 +00:00
Matt Jacob
469b6b9efb Change startup locking. Use new isp_handle_index function
for indexing off of handles to get dma maps.
2000-07-04 01:01:15 +00:00
Poul-Henning Kamp
a5b5959dc8 Account for packets we clean out when we disconnect. 2000-07-03 13:08:56 +00:00
Alfred Perlstein
ff56ceb1da use warnings
use strict
add 'usage'
2000-06-27 22:41:12 +00:00
Matt Jacob
55b59b50f2 If swdpio1 doesn't clear, we have a reversed (or disconnected) cable. Change
the message to indicate that it could also be a disconnected cable, and
return okay from wx_hw_intialize *anyway*. This allows us to contineu to
set the station address and when we do get link up, we're ready to roll.
2000-06-25 02:04:27 +00:00
Semen Ustimenko
afb279b54b Added support for SMC9432BTX cards. 2000-06-21 19:19:49 +00:00
David Greenman
aed5349598 Implemented some optimizations which result in 14 fewer instructions in the
receive path.
2000-06-19 00:58:34 +00:00
David Greenman
55ce7b5117 Added support for the i82559ER (10/100Mbps NIC for embedded applications).
Product device ID provided by:	Les Biffle <les@ns3.safety.net>
2000-06-18 10:26:09 +00:00
Matt Jacob
56aef50302 Clean up firmware load issues and remove darn near all config options.
Force alphas to prefer mem mapping as the default.

Basically, we have a pointer to a function which we can call which will
return us a pointer to firmware for the card we have. We call this function
(if it's non-NULL) with the address of our mdvec f/w pointer.

The way this works is that if ispfw (as a module or a static) is loaded,
it initializes the pointer in isp_pci, so we can call into to it to fetch
a pointer to a f/w set.

If ispfw is MOD_UNLOADed, it's retained a pointer to our mdvec f/w pointers,
which then get zeroed out so we don't have any references to data that's
now gone from kernel memory. Removing the f/w saves ~360KBytes.

Alas, there is no autounload mechanism that works for is here.
2000-06-18 05:18:55 +00:00
Matt Jacob
a46c6a5114 Fix this driver to (finally) work with switches. Some more black
magic from the linux driver.
2000-06-16 06:28:31 +00:00
Jeroen Ruigrok van der Werven
9ca710f699 Add support for the Accton EN1217.
PR:		18735
Submitted by:	Adoal Xu <adoal@iname.com>
2000-06-11 11:54:52 +00:00
Doug Rabson
068b0778a3 Release resources properly in detach. 2000-06-10 17:53:20 +00:00
Doug Rabson
111618cb42 Fix the AMD 751 AGP minidriver so that it works with my test code. 2000-06-10 17:44:53 +00:00
Doug Rabson
597472167a A driver for programming the AGP hardware. This is only very lightly
tested on Intel BX chipsets only. The other agp minidrivers are totally
untested.

The programming api is a subset of the Linux api and is only intended to
be enough for the X server to use. There is also an in-kernel api for the
use of other kernel modules such as the 3D DRI.
2000-06-09 16:04:30 +00:00
Doug Rabson
f1954f5752 Nuke the useless chip driver. It gets in the way when you want to load
a functional driver for the device.
2000-06-09 16:00:29 +00:00
Bill Paul
042c8f6ee1 When I tweaked if_dc.c to alter the polling interval for non-MII
21143 chips, I accidentally removed the DC_MII_REDUCED_POLL flag
for all 21143 cards. This caused problems with timer-instigated
TCP retransmits, which happened to occur at the same time as an
MII poll tick on MII-based cards (e.g. D-Link DFE-570TX). Fixed this,
plus made some other cleanups. The autoneg fixes for the non-MII
cards still work. Also tested the PNIC II now that I have one again.
2000-06-07 17:07:44 +00:00
Bill Paul
4d1f3470e3 - Call mii_pollstat() after we bring up the link on a 1000baseTX card
after autoneg so we make sure to set the link state and duplex mode
  correctly.
- Make sure to set the 'ignore pause frames' bit on the XMAC.
- Small linewrap fix.
2000-06-06 02:56:37 +00:00
Bill Paul
318b02fdb9 Rework the support for the internal autonegotiation on the 21143 and
workalike chips (Macronix 98713A/98715 and PNIC II). Timing is somewhat
critical: you need to bring the link as soon as possible after NWAY
is done, and the old one second polling interval was too long. Now
we poll every 10th of a second until NWAY completes (at which point
we return to the 1 second interval again to keep an eye on the link
state).

I tested all the other cards I had on hand to make sure I didn't bust
any of them and they seem to work (including the MII-based 21143 card).
This should fix some autoneg problems with DE500-BA cards and the
built-in 10/100 ethernet on some alpha systems.

(Now before anyone asks why I never noticed this before, the old code
worked just find with the Intel swich I used for testing back in NY.
Apparently not all switches are as picky about the timing.)
2000-05-31 05:40:53 +00:00
Peter Wemm
30d1c11e3a Encapsulate the old PCI compatability support and APIs completely under
"options COMPAT_OLDPCI".  This option already existed, but now also tidies
up the declarations in #include <pci/pci*.h>.  It is amazing how much stuff
was using the old pre-FreeBSD 3.x names and going silently undetected.
2000-05-28 16:35:57 +00:00
Peter Wemm
0a8e3ce8a5 Make this compile without depending on the FreeBSD 2.2 compatability
defines.
2000-05-28 16:31:35 +00:00
Peter Wemm
2a26d3479b Do not depend on FreeBSD 2.2 compatability defines.
s/PCI_MAP_REG_START/PCIR_MAPS/
2000-05-28 16:18:58 +00:00
Peter Wemm
46dff442be Fix some leakage from inside #ifdef PCI_COMPAT (the FreeBSD 2.2 compat
stuff).
2000-05-28 16:17:18 +00:00
Peter Wemm
86b0a953e2 Use the correct register name. s/PCI_COMMAND_STATUS_REG/PCIR_COMMAND/ 2000-05-28 16:13:43 +00:00
Peter Wemm
94278c74bb Use the correct name for the PCI command register (PCIR_COMMAND). Don't
use constant that used to be a variable in our (very) old pci code.
2000-05-28 16:06:56 +00:00
Peter Wemm
c48cc9ce1e Use the correct register names. s/PCI_COMMAND_STATUS_REG/PCIR_COMMAND/ 2000-05-28 16:02:05 +00:00
Peter Wemm
84c27d0735 ncr.c is no longer a COMPAT_OLDPCI device - remove the warning. 2000-05-28 10:45:06 +00:00
Doug Rabson
20e1658bc2 Update to use newbus and busspace. 2000-05-27 09:27:36 +00:00
Jake Burkholder
e39756439c Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by:		msmith and others
2000-05-26 02:09:24 +00:00
Jun Kuriyama
569e965893 Add OPTi 82C700 chipset.
Submitted by:	sanpei@sanpei.org
PR:		kern/18155 (part of)
2000-05-24 09:03:30 +00:00
Jun Kuriyama
3cc13eb5b1 Add 440MX chipset.
Submitted by:	YOSHIMURA Hideaki <hideakiy@cs-tokyo01.chuosystem.co.jp>
References:	[bsd-nomads:13764]
2000-05-24 02:24:38 +00:00
Archie Cobbs
d61b89e4b3 Avoid double-call to bpf_mtap(). This is now handled in ether_input(). 2000-05-24 00:05:44 +00:00
Jake Burkholder
740a1973a6 Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by:	phk
Reviewed by:	phk
Approved by:	mdodd
2000-05-23 20:41:01 +00:00
Warner Losh
df28f2b764 It turns out that I was wrong. The chip in my machine is not a
CXD1847A, but a CXD1947A.  I checked by visual inspection after
prompting from onoe-san.
2000-05-22 03:43:16 +00:00
Jun Kuriyama
119c7d5d6a CXD1847A and CXD1947A have same product ID.
Approved by:	imp (original CXD1847A addition)
2000-05-22 03:20:18 +00:00
Doug Rabson
2e9a65c474 Print the correct value for the map type on a verbose boot.
PR:	kern/18662
Submitted by: tamaru@ap.t.u-tokyo.ac.jp
2000-05-18 20:28:15 +00:00
Paul Richards
b78111b137 Remove if_pci_p.c from old location. 2000-05-14 18:25:51 +00:00
Archie Cobbs
2e2de7f23f Move code to handle BPF and bridging for incoming Ethernet packets out
of the individual drivers and into the common routine ether_input().
Also, remove the (incomplete) hack for matching ethernet headers
in the ip_fw code.

The good news: net result of 1016 lines removed, and this should make
bridging now work with *all* Ethernet drivers.

The bad news: it's nearly impossible to test every driver, especially
for bridging, and I was unable to get much testing help on the mailing
lists.

Reviewed by:	freebsd-net
2000-05-14 02:18:43 +00:00
Doug Rabson
ff13eb73c1 Use bus_space for all register accesses. 2000-05-13 18:47:24 +00:00
John Baldwin
6492f6750d Only display the 'Disable PNP-OS BIOS option' message on the i386 arch.
Alpha's don't have a PNP BIOS option.

Reviewed by:	n_hibma
2000-05-11 20:17:28 +00:00
Nick Hibma
659df154a5 Do the attach (and detach) properly. Store the cookies.
This is a first step to make usb unloadable.
2000-05-07 20:16:25 +00:00
Matt Jacob
ec3da347ca Update 'hose' (actually, MCPCIA instance #) for Alpha Rawhide systems.
We have *got* to fix this bogosity of trying to steal part of the PCI
address space for this stuff.
2000-05-07 04:56:19 +00:00
Jonathan Lemon
3e48370f70 Bounce a copy of the mbuf to the bpf listener when we submit the frames
for transmit to the adapter, not when we receive a transmit interrupt
indicating that they were sent.  This fix now allows tcpdump to produce
sane results by recording the timestamp at the point where the mbuf was
actually transmitted.
2000-05-06 15:53:59 +00:00
Bill Paul
af020b6e13 Apply patch to rl_rxeof() to really enforce payload alignment in
the case where we receive a packet that wraps from the end of the
RX buffer back to the start. This fixes an unaligned access trap on
the alpha with NFS.
2000-05-05 12:47:47 +00:00
Poul-Henning Kamp
9626b608de Separate the struct bio related stuff out of <sys/buf.h> into
<sys/bio.h>.

<sys/bio.h> is now a prerequisite for <sys/buf.h> but it shall
not be made a nested include according to bdes teachings on the
subject of nested includes.

Diskdrivers and similar stuff below specfs::strategy() should no
longer need to include <sys/buf.> unless they need caching of data.

Still a few bogus uses of struct buf to track down.

Repocopy by:    peter
2000-05-05 09:59:14 +00:00
Peter Wemm
365c5db0a7 Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
Bruce Evans
3aae7b16d2 Fixed the type of some ivar access functions. Ivars have type uintptr_t,
not u_long.  On i386's with 64-bit longs, returning u_longs indirectly
in (more than) the space reserved for uintptr_t's tended to corrupt the
previous frame pointer in the stack frame, so it was not easy to debug.
The type mismatches are hidden by the bogus cast in DEVMETHOD().
2000-04-30 10:01:56 +00:00
Peter Wemm
5a54cb4145 Add a missing MODULE_DEPEND() on miibus.. I was working from
KMODDEPS which this driver didn't have.
2000-04-29 15:25:56 +00:00
Peter Wemm
95a1645553 Depend on miibus.
Note that if_aue doesn't strictly depend on usb because it uses the
method interface for calls rather than using internal symbols, and
because it's a child driver of usb and therefore will not try and do
anything unless the parent usb code is loaded at some point.  if_aue does
strictly depend on miibus as it will fail to link if it is missing.
2000-04-29 13:41:57 +00:00
Julian Elischer
a4ec03cfa8 Two simple changes to the kernel internal API for netgraph modules,
to support future work in flow-control and 'packet reject/replace'
processing modes.

reviewed by: phk, archie
2000-04-28 17:09:00 +00:00
Poul-Henning Kamp
d4032b0b10 Ignore tulip chips on LanMedia WAN cards. 2000-04-25 21:45:45 +00:00
Bill Paul
27440dd237 Update the Tigon firmware to 12.3.21. This fixes a few bugs and adds support
for cards with 2MB of on-board SRAM.
2000-04-24 17:44:45 +00:00
Bill Paul
bd80fa2c7f Reoganize/update the SysKonnect driver:
- Break out the support for the XMAC II's PHY into an miibus driver.

- Reorganize the probe/attach stuff using newbus. Each XMAC is now
  attached to the parent GEnesis controller using newbus. This is
  necessary since each XMAC must also have an attached miibus, and
  the miibus read/write register routines need to be able to get
  at the softc struct for each XMAC, not the one for the parent
  controller. This allows me to get rid of the grotty code I added
  for selecting the unit numbers for the ifnet interfaces: the unit
  numbers are now derived from the newbus-assigned unit numbers,
  which should track with the ifnet interface numbers. I think.
  At the very least, there should never be any collisions.

- Add support for the SK-9821 and SK-9822 1000baseTX adapters. Special
  thanks to SysKonnect for loaning me two adapters for testing.
2000-04-22 02:16:41 +00:00
Warner Losh
748fdadaad Add TI-1211 chipset from datasheet info 2000-04-20 03:16:49 +00:00
Poul-Henning Kamp
3389ae9350 Remove ~25 unneeded #include <sys/conf.h>
Remove ~60 unneeded #include <sys/malloc.h>
2000-04-19 14:58:28 +00:00
Poul-Henning Kamp
ed6aff7387 Remove unneeded <sys/buf.h> includes.
Due to some interesting cpp tricks in lockmgr, the LINT kernel shrinks
by 924 bytes.
2000-04-18 15:15:39 +00:00
Yoshihiro Takahashi
f3e2cba02f Set the value of rid variable for bus_alloc_resource(dev, SYS_RES_IOPORT,...)
to PCI_BASE_ADDR0 (== 0x10).

Tested by:	Brian Somers <brian@Awfulhak.org>
2000-04-12 11:21:55 +00:00
Semen Ustimenko
0f9ee76b22 Driver is now using miibus, and newbus.
PR:		kern/17601
2000-04-12 06:51:43 +00:00
Doug Rabson
f7b7769172 * Factor out the object system from new-bus so that it can be used by
non-device code.
* Re-implement the method dispatch to improve efficiency. The new system
  takes about 40ns for a method dispatch on a 300Mhz PII which is only
  10ns slower than a direct function call on the same hardware.

This changes the new-bus ABI slightly so make sure you re-compile any
driver modules which you use.
2000-04-08 14:17:18 +00:00
Yoshihiro Takahashi
249253e7a0 Newbusify amd driver.
Some error messages are added by Brian Somers <brian@Awfulhak.org>.
2000-04-07 11:36:11 +00:00
Mitsuru IWASAKI
2058e7f3e0 Fix typo in description of Cirrus Logic PD6832 PCI-CardBus Bridge.
This don't hurt anything.
	PCI/CardBus Bridge -> PCI-CardBus Bridge

Submitted by:	Takeshi Shibagaki <sibagaki@lsi.melco.co.jp>
Obtained from:	bsd-nomads ML in Japan
2000-03-30 18:47:00 +00:00
Bill Paul
7cfa339426 Two fixes for the RealTek:
- Only call m_pullup() when necessary.

- Check return value from rl_encap() in rl_start() to avoid panic when
  we run out of mbufs. (Fixes PR kern/17582)

PR:		kern/17582
2000-03-29 20:06:15 +00:00
Chris Piazza
7e1e216acf Add NVidia GeForce 2 and Quadro 2
Ids and names were taken from nv4_disp.inf in the latest windows drivers.
2000-03-29 06:49:25 +00:00
David Greenman
e9bf2fa7b3 Added support for cards and on-motherboard NICs that use an SEEPROM
address size that is different than the standard 6bits. This fixes
support for the Compaq NC3121 card, certain newer Intel Pro/100+
cards, and should also fix integrated NICs on SuperMicro and Compaq
motherboards.
The auto-sizing algorithm was taken from NetBSD (thanks!), which I
think got it from Linux originally.
Thanks also to Andrew Sparrow <spadger@best.com> and Joe Moore
<jomor@ahpcns.com> for supplying me with unworking Compaq and Intel
cards to develop and test the fixes with.
2000-03-28 04:41:42 +00:00
Warner Losh
d0d3b8345b Ahhrggg. Put the test for the compat shims AFTER the file that includes
them.

Pointed out by: bde
2000-03-27 20:24:02 +00:00
Poul-Henning Kamp
b9d308bed2 Allow reuse of hooks.
Remove debugging printfs.
Now compatible with ports/net/mpd-netgraph
2000-03-27 20:05:04 +00:00
Warner Losh
2b2ca8019f This file is obsolete, having long since been copied to sys/dev/adw/adw_pci.c
Pointed out by: gibbs
2000-03-27 19:57:40 +00:00
Jonathan Lemon
db4f9cc703 Add support for offloading IP/TCP/UDP checksums to NIC hardware which
supports them.
2000-03-27 19:14:27 +00:00
Warner Losh
76fbc068b8 Per conversations in -current, add #error to these drivers when you don't
have the right compatibility shims enabled.  ISA drivers to follow later.
2000-03-27 18:32:45 +00:00
Warner Losh
6ea2fbe9be More fully initialize cardbus bridges. We now call the new generic
cardbus bridge init routine for all cardbuses.  This routine attempts
to compensate for BIOSes that do not setup the cardbus bridge into
legacy mode.  Since this is becoming more common, and cardbus pci
cards have appeared on the market, this makes sense.

Do some TI113x specific initialization.  This came in as part of the
patch.  Report TI1[1234]XX specific config registers protected by
bootverbose.

Minor code cleanup while I'm here.  I've also removed the unused code
present in the original patches, and cleaned it up slightly in places
as well.

The original patches supported more than one card, but these patches
support just one.  We should likely revisit this in the future.

This makes the Compaq card that Walnut Creek CD purchased for me work
in my bouncer box.

This is a MFC candidate.  However, I'd like to get some airtime on
these patches on as many laptops as possible before doing the MFC.  It
does change things somewhat.  In theory, apart from the minor TI
tweaks, this shouldn't change anything if the bridge is in legacy mode
already.

Submitted by: sanpei@sanpei.org (MIHIRA Yoshiro)
2000-03-25 20:29:55 +00:00
Warner Losh
190701a53a Two new chips found in Steve Passe's Protoge' laptop:
Lucent 56Flex DVS LTMOTEM (winmodem and unsupported)
	Cinemaster C 3.0 DVD Decoder
2000-03-25 17:01:59 +00:00
Bill Fumerola
a68c41beea Add Mach64-LB graphics accelerator
Submitted by:	Brandon Martus <bmartus@chc-chimes.com> (unwittingly)
Obtained from:	NetBSD (syssrc/sys/dev/pci/pcidevs)
2000-03-24 19:31:02 +00:00
Poul-Henning Kamp
91266b96c4 Isolate the Timecounter internals in their own two files.
Make the public interface more systematically named.

Remove the alternate method, it doesn't do any good, only ruins performance.

Add counters to profile the usage of the 8 access functions.

Apply the beer-ware to my code.

The weird +/- counts are caused by two repocopies behind the scenes:
	kern/kern_clock.c -> kern/kern_tc.c
	sys/time.h -> sys/timetc.h
(thanks peter!)
2000-03-20 14:09:06 +00:00
Peter Wemm
0ae2f9bf04 A fairly simple newbusification of if_de 2000-03-20 09:18:46 +00:00
Peter Wemm
d213a95368 Unused definitions. 2000-03-20 08:21:52 +00:00
Peter Wemm
56dac036b6 Bandaid for src/sys/modules which broke world 2000-03-20 01:22:27 +00:00
Peter Wemm
80060e8897 Connect the ISA and PCI compatability shims to an option. In this case
it's options COMPAT_OLDISA and COMPAT_OLDPCI.  This is meant to be a
fairly strong incentive to update the older drivers to newbus, but doesn't
(quite) leave anybody hanging with no hardware support.  I was talking with
a few folks and I was encouraged to simply break or disable the shims but
that was a bit too drastic for my liking.
2000-03-19 13:07:12 +00:00
Nick Hibma
e5399702e8 Print the PCI resources even if they are disabled. This shows more clearly
when the BIOS is forgetful about initialising the USB controllers.
2000-03-18 19:18:36 +00:00
Bill Paul
827a61b63d Update Tigon firmware yet again, this time to version 12.3.20. 2000-03-18 01:30:36 +00:00
Matt Jacob
17d75f8ecb Alpha 8200 port: Until we fix things better, determine which alpha CPU
platform we're running on so we know how many bits to reserve at the top
end for the 'hose' value. It turns out that there's *just* enough room
to support all possible hoses on TurboLaser.
Reviewed by:	gallatin@freebsd.org, dfr@free3bsd.org
2000-03-15 23:50:31 +00:00
Nick Hibma
d0ba6675ce Add an ID for the SiS 5571.
Remove the unnecessary use of parent.
2000-03-15 22:26:17 +00:00
Peter Wemm
931fe729ca Remove left over pci_ide* after wd removal. 2000-03-15 21:58:27 +00:00
Poul-Henning Kamp
5111e26e96 Updates for new FALC chips and other nits.
(And try to make it first post-freeze commit :-)
2000-03-13 09:13:36 +00:00
Chris Piazza
4951dddb33 Recognize newer NVidia graphics cards. (GeForce and Quadro families)
Approved by:	jkh
2000-03-12 01:24:15 +00:00
Mike Smith
510a809e64 Teach the 'dc' driver how to pick up settings left over by the
SRM on alpha systems.  This is an expedient if not entirely
elegant solution to the problem.

Submitted by:	gallatin
Approved by:	jkh
2000-03-11 05:20:56 +00:00
Robert Watson
c8cf61e182 Introduce ethernet bridge support for if_dc
Approved by:	jkh
2000-03-09 19:28:19 +00:00
Poul-Henning Kamp
1285d5557c Fix a initialization bug.
Report xmit queue length.
Remove old magic and clean up some printfs.
2000-03-01 21:04:54 +00:00
Bill Fumerola
2394baefd8 'driver support' -> 'driver supports' 2000-02-29 10:02:29 +00:00
Matt Jacob
2e56bc770d Clean up defines for correct 12160/1080 exclusion. Final 4.0.
approved: JKH
2000-02-29 05:48:46 +00:00
Bruce Evans
71c458de9d Fixed configuration of fast interrupts for the pci cy driver. They were
an early newbus casualty.  The fix in rev.1.28 didn't work because the
most important part of it used a wrong macro name.

Approved by:	jkh
2000-02-28 08:12:24 +00:00
Poul-Henning Kamp
90a822243f Implement queue-limiting based on bandwidth.
Approved by:	jkh
2000-02-26 18:28:24 +00:00
Bill Fumerola
bebfe1cadb o No need to print the vendor/device ID for things that matched succesfully.
o ``<device name>'' versus ``device name'' for things that fall under nomatch.

Reviewed by:	dfr (in principle)
Approved by:	Baron von Hubbard
2000-02-22 21:44:39 +00:00
Bill Fumerola
a91df2ff09 Add the ESS Maestro and the ATI Mobility-1 to the generic chip match and
the vga match (respectivly, though they aren't much different anymore..)

These can be found on newer Dell laptops.

Approved by: Sir Hubbard
2000-02-21 21:46:19 +00:00
Nick Hibma
5e78bf3190 Move the warning on wrong IRQ values to the right place, before any
resource allocation is attempted.

It will present the user with a message that he has to switch on USB
support in his BIOS.
2000-02-20 14:22:44 +00:00
Doug Rabson
6874d62958 Remove the vga-pci driver. It serves no purpose and it hides the hardware
from useful drivers such as the 3D DRI drivers I will be porting for
hardware accelerated OpenGL. The hardware will still be reported during
boot using the nomatch system.

Approved by: jkh
2000-02-19 09:44:06 +00:00
Warner Losh
e6157956d2 Add the VIA 82C596B PCI ISA south bridge on my ASUS P3V133.
Approved by: jkh
2000-02-17 06:12:16 +00:00
Matt Jacob
af077239b6 Include the file that defines PCIM_CMD_BUSMASTEREN. 2000-02-16 02:22:37 +00:00
Mike Smith
7af42aebc4 Ensure that the busmaster enable bit is set; we can't assume that all
BIOS code will get this right (and some certainly doesn't).

Submitted by:	W. Gerald Hicks <jhix@mindspring.com>
Approved by:	jkh
2000-02-16 01:12:09 +00:00
Matt Jacob
e142669a43 If the CDB length is greater than 12 for parallel SCSI, ispscsicmd has
made the initial queue entry a EXTENDED CMD queue entry, so we have to
go straight to continuation segments for any data segments.

approved: jkh
2000-02-15 00:50:01 +00:00
Peter Wemm
be6ccf3f6c Do a trivial conversion of xrpu to newbus.
Reviewed by:	phk  ("commit it!" :-)
Pre-Approved by: jkh
2000-02-12 07:56:44 +00:00
Matt Jacob
960f6939af Add in 12160 (Ultra3) support. Redo things to use the newbus code.
Approved: jkh@freebsd.org

PR:		16141
2000-02-11 19:45:17 +00:00
Bill Paul
74ea2d6f60 Update the Tigon driver to use the 12.3.18 firmware release from Alteon.
(No changes to the driver code itself.)

Approved by: jkh
2000-02-10 00:37:48 +00:00
Matthew N. Dodd
d00d79c12c Remove the old copy of this file. It is now active in its new location.
Implicit Approval by:	 jkh
2000-02-09 04:18:41 +00:00
Nick Hibma
4f2e8d6383 Add PCI Id's for i810 chipsets.
PR:		16517
Submitted by:	SAKIYAMA Nobuo <sakichan@lares.dti.ne.jp>
Approved by:	jhk
2000-02-07 12:50:33 +00:00
Nick Hibma
ef4da90333 Disable the generation of SMIs (System Management Interrupts). Always set
the PIRQD bit.

This fixes the problem of uhub0 hanging forever during boot when USB
keyboard support is switched on in the BIOS on motherboards with Intel
chipsets (UHCI).

Approved by:	The Sheep
2000-02-06 14:52:27 +00:00
Nick Hibma
b70b9ce019 Commit missing bits, forgotten when committing support for suspend/resume
for USB.

Call uhci_power when suspending and resuming.

Approved by: The One.
2000-02-04 10:18:37 +00:00
Peter Wemm
872309ccd4 Update the pci->pcic compatability module to newbus. This is a simple
conversion to eliminate the compatability shims without making any
significant changes.  This eliminates the shim warnings.

Obtained from:	n_himba (tweaked by me, don't blame him for this)
Approved by:	jkh
2000-02-02 16:49:21 +00:00
Peter Wemm
483df2dd3b Spell "pci_delete_resource" correctly.
Approved by:	jkh (who must be very sick of requests now :-)
2000-02-01 18:02:12 +00:00
Nick Hibma
9a69e6509a bus_release_resource is spellt like bus_release_resource not like
bus_delete_resource.

Fixes a problem when the probe succeeded, but the attach failed. The
release of the resources was done inproperly.

Approved by:	jkh
2000-01-31 14:05:21 +00:00
Peter Wemm
269a49497f Remove #include "wd.h" and #if NWDC > 0 as that's always true as this
file is 'optional wdc'  (note wd.h has both NWDC and NWD in it because
of config quirks)
2000-01-29 16:59:53 +00:00
Peter Wemm
cebf86fa3f Put a FYI in the compatability shims so that people are aware that they
are using an old unconverted driver.  Most (if not all) of the drivers
for common hardware are newbus these days.  However, we don't want
to encourage people to take the easy way out and write new drivers
using the shims.  This is just passive "encouragement".

Reviewed by:	phk
2000-01-29 15:37:36 +00:00
Kazutaka YOKOTA
6c94c9a4f7 Add more PCI VGA graphics card descriptions.
PR: 10095, 15299, 13850, 16356
Submitted by:  Alex Zepeda, Vladimir Kushnir, Alex Vasylenko, Alex.
Obtained from: XFree86 and NetBSD
2000-01-27 12:02:06 +00:00
Nick Hibma
2aff98945c Properly teardown the allocated and initialised stuff when an error
occurs (OHCIwas already done for UHCI).

Get rid of the usbus variable. It is confusing.

Align uhci_pci.c and ohci_pci.c again.
2000-01-26 10:52:27 +00:00
Nick Hibma
9e2bdb4369 Don't set ivars until we checked the return value from device_add_child. 2000-01-26 10:27:12 +00:00
Matt Jacob
8dc7582ba5 put things in place for jumbograms 2000-01-25 06:09:53 +00:00
Matt Jacob
110bbc0dcf define jumbo packet size 2000-01-25 04:11:33 +00:00
Bill Paul
f43d9309a5 Add support for DM9102A boards with Davicom DM9801 HomePNA PHYs. 2000-01-24 17:19:37 +00:00
Peter Wemm
fe8140cd15 Fix some warnings. 2000-01-23 19:27:11 +00:00
Gerard Roudier
4f6c691377 Add 53C895A and 53C1510D device description to the ncr chip table. 2000-01-23 12:27:49 +00:00
Matt Jacob
1d575e0fd3 Correctly put the place to mark EOP where we actually do the packet
transmission- this handles the odd and rare case of a list terminating
with a zero length mbuf.
2000-01-23 03:19:49 +00:00
Matt Jacob
1c3c868623 add PREVIOUS index macro for transmit side 2000-01-23 03:18:14 +00:00
Matt Jacob
4931a540da Remove some debugging code, replace one line that had spaces with tabs,
and fix a silly botch for reinit.
2000-01-23 02:07:31 +00:00
Matt Jacob
6d918197cd Get rid of the WX_XMIT_SMALL code- we've fixed that problem. Restructure
the receive code so that it correctly chains receive descriptors together
and handles the case that only a part of a packet is done at the time
we get here.
2000-01-23 01:49:11 +00:00
Matt Jacob
c792f629d8 Add a pointer in the softc that will point to partially received packet.
Set up index increments for receive descriptors based on whether
the PADDED_CELL define is set.
2000-01-23 01:41:17 +00:00
Matt Jacob
e2e6935a6f Add in a define for the optimal cache line size. 2000-01-23 01:39:13 +00:00
Nick Hibma
bd7bdb532c Add ID for the AMD-756 OHCI controller 2000-01-21 10:46:29 +00:00
Nick Hibma
5fa5aeec53 Properly remove interrupts if initialisation fails. 2000-01-20 21:36:07 +00:00
Bill Paul
88d739dc5f Add support for the Davicom DM9102A 10/100 ethernet controller chip.
This is just to make sure we initialize the chip correctly: we need to
make the sure the port select bit in CSR6 is set properly so that we
use the internal PHY for 10/100 support. (The eval boards I have also
include an external HomePNA PHY, but I need to play with that more
before I can support it.)
2000-01-19 19:03:08 +00:00
Matt Jacob
a5d8019e08 add a R_PREV_IDX macro 2000-01-18 01:42:11 +00:00
Bill Paul
b822a5eae9 Add the vendor/device ID for the Farallon PN9000SX gigabit ethernet
card, which is apparently also a Tigon 2 device.
2000-01-18 00:26:29 +00:00
Bill Paul
09bc5c209e Fix the tl driver so it doesn't run off the end of the RX descriptor list
and panic in out of mbufs condition.
2000-01-15 20:14:49 +00:00
Matt Jacob
003a310f5f Remove compile warning not seen when compiling with target mode enabled. 2000-01-15 07:06:44 +00:00
Matt Jacob
65b024e1bf Redo FC target mode dma routine to try and generate an extra CTIO
in the not so odd case of Moving Data *AND* Sending Status in last CTIO *AND*
status is a CHECK CONDITION *AND* we have Sense Data to send.
2000-01-15 01:54:36 +00:00
Peter Wemm
c5191a983c Pre 4.0 tidy up.
Collect together the components of several drivers and export eisa from
the i386-only area (It's not, it's on some alphas too).  The code hasn't
been updated to work on the Alpha yet, but that can come later.

Repository copies were done a while ago.
Moving these now keeps them in consistant place across the 4.x series
as the newbusification progresses.

Submitted by:   mdodd
2000-01-14 07:14:17 +00:00
Justin T. Gibbs
9bfb3cb2c7 The error status for a scsi status error is "CAM_SCSI_STATUS_ERROR", not 0. 2000-01-14 03:39:30 +00:00
Peter Wemm
101c72e44b Remove duplicate DEC 21050 PCI-PCI bridge (0x00011011)
Add an entry for the Toshiba Fast Infra Red controller (0x07011179)
2000-01-13 08:40:10 +00:00
Matthew N. Dodd
69eae97a91 Add a few devices IDs and clarify the SiS 85c496 entry. 2000-01-13 08:01:53 +00:00
Andrew Gallatin
6a82a4ba50 add entries for several DEC PCI-PCI bridges & the Cypress PCI-ISA bridge found
on newer alpha workstations and servers
2000-01-13 02:47:36 +00:00
Bill Paul
fda39fd069 Reintroduce the dc_coal() workaround routine for coalescing outbound
packets into a single buffer, and set the DC_TX_COALESCE flag for the
Davicom DM9102 chip. I thought I had escaped this problem, but... This
chip appears to silently corrupt or discard transmitted frames when
using scatter/gather DMA (i.e. DMAing each packet fragment in place
with a separate descriptor). The only way to insure reliable transmission
is to coalesce transmitted packets into a single cluster buffer. (There
may also be an alignment constraint here, but mbuf cluster buffers are
naturally aligned on 2K boundaries, which seems to be good enough.)

The DM9102 driver for Linux written by Davicom also uses this workaround.
Unfortunately, the Davicom datasheet has no errata section describing
this or any other apparently known defect.

Problem noted by: allan_chou@davicom.com.tw
2000-01-12 22:24:05 +00:00
Kazutaka YOKOTA
689e7081eb Added PCIR_BIOS (0x30). 2000-01-10 12:53:19 +00:00
Justin T. Gibbs
dbf94fd693 Avoid setting DPARCKEN until I can figure out why it causes
spurious parity errors on some controllers.
2000-01-10 01:47:51 +00:00
Bill Paul
234c72c615 Close PR# 15986: issue an RX reset command when initializing the interface,
but only for those cards that don't use miibus (i.e. all the 10mbps only
cards, and the 100baseFX card).

PR:	kern/15986
2000-01-09 21:12:59 +00:00
Peter Wemm
f671bf82e4 Show the port/mem/irq of pci devices too. 2000-01-08 10:12:21 +00:00
Peter Wemm
4a1e4cb727 Clean up the cfgmech/pci_mechanism debris. The reason for the existance
of this is no longer an issue as we have a replacement driver for the
one that needed it.

Reviewed by:	dfr
2000-01-08 08:31:24 +00:00
Justin T. Gibbs
1a24969d60 Turn on parity error reporting before configuring external sram. This
makes it a little easier to notice that parity checking an 8bit sram
isn't working.

Turn on scb and internal data-path parity checking for all pci chips types.
We were only doing this for ultra2 chips.

After clearing the parity interrupt status, clear the BRKADRINT.  This
avoids seeing a bogus BRKADRINT interrupt after external SCB probing
once normal interrupts are enabled.
2000-01-08 05:31:38 +00:00
Justin T. Gibbs
c971c124a1 Really enable external SCB ram on Ultra2 capable controllers.
Don't even bother to look for SCB ram on controllers < aic7870.

Clear any parity errors generated by looking at external SCB ram.
2000-01-08 00:32:08 +00:00
Justin T. Gibbs
77dd846834 Add detection logic for the U160 family of adaptec controllers. These
controllers will run at U2 speeds until I can complete the U160 support
for this driver.

Correct a termination buglet for the 2940UW-Pro.

Be more paranoid in how we probe and enable external ram, fast external
ram timing and external ram parity checking.  We should now work on
20ns and 8bit SRAM parts.

Perform initial setup for the DT feature on cards that support it.

Factorize and clean up code.  Use tables where it makes sense, etc.

Add some delays in dealing with the board control logic.  I've never
seen this code fail, but with the ever increasing speed of processors,
its better to insert deterministic delays just to be safe.  This stuff
is only touched during probe and attach, so the extra delay is of no
concern.
2000-01-07 22:53:37 +00:00
Bill Fumerola
36a288c5b4 Fix paste-o in NeoMagic audio probe.
Submitted by:	cg
2000-01-07 06:59:10 +00:00
Peter Wemm
bcae942098 Zap pci_map_dense() and pci_map_bwx() - they were for compatability but
are not used.  All the drivers that use memory mapped IO on the Alpha have
been ported already.
2000-01-05 16:40:10 +00:00
Matt Jacob
78dda2ae0c Add first pass of the Intel Gigabit Ethernet (wiseman) driver. This
driver seems relatively functional, but could use some souping up,
particularly in the performance area. This has both NetBSD and FreeBSD
attachment code and a fair amount of effort has been put into making
it easy to port to different *BSD platforms.

The basic design is a one tfd per mbuf transmit (with no transmit
related interrupts- tfds are gc'd as needed). The receive ring
uses a 2K buffer per rfd with a +2 byte adjust for the ethernet
header (so the payload is aligned). There's support that *almost*
works for doing large packets- the rfd chaining code works, but there's
some problem with getting good checksums at the IP reassembly level
(ditto for doing short tfd's too).

The chip has support for TCP checksums insertion for transmit and
TCP checksum calculation on receive (for both you have to do some
appropriate backoff && twiddling), but this isn't in place.

This is nearly entirely reverse engineered from the released Intel
driver, so there's a lot of "We have to do this but do not know why"
stuff. There is somebody who has the chip specs who works in FreeBSD
but they're being a bit standoffish about even sharing hints which
is somewhat annoying. It's also apparent that all I had to work with
were the first rev boards.

This driver has been lightly tested on intel && alpha, but only
point-to-point. There may be some issues with switches- use of
boot time environment variables that override EEPROM settings
(e.g., 'set wx_ilos=1' which inverts the sense of optical signal
loss) may help with this.

I had this out for review for three weeks, and nobody said anything
negative or positive, ergo, this checkin has no 'reviewed by' field
which I would have preferred.
2000-01-04 11:12:42 +00:00
Matt Jacob
4242692117 Add in an isp_tdebug environment variable. Clean up some debugging
printouts for clarity.
2000-01-04 03:41:40 +00:00
Matt Jacob
9e11e5bea2 Support target mode operations. This involves having some variant
dma mapping callback routines to select from as target mode
entries are handled a fair bit differently from normal initiator
mode entries.
2000-01-03 23:50:13 +00:00
Bill Paul
73bf949c34 It appears that under certain circumstances that I still can't quite pin
down, the dc driver and receiver can fall out of sync with one another,
resulting in a condition where the chip continues to receive packets
but the driver never notices. Normally, the receive handler checks each
descriptor starting from the current producer index to see if the chip
has relinquished ownership, indicating that a packet has been received.
The driver hands the packet off to ether_input() and then prepares the
descriptor to receive another frame before moving on to the next
descriptor in the ring. But sometimes, the chip appears to skip a
descriptor. This leaves the driver testing the status word in a descriptor
that never gets updated. The driver still gets "RX done" interrupts but
never advances further into the RX ring, until the ring fills up and the
chip interrupts again to signal an error condition. Sometimes, the
driver will remain in this desynchronized state, resulting in spotty
performance until the interface is reset.

Fortunately, it's fairly simple to detect this condition: if we call
the rxeof routine but the number of received packets doesn't increase,
we suspect that there could be a problem. In this case, we call a new
routine called dc_rx_resync(), which scans ahead in the RX ring to see
if there's a frame waiting for us somewhere beyond that the driver thinks
is the current producer index. If it finds one, it bumps up the index
and calls the rxeof handler again to snarf up the packet and bring the
driver back in sync with the chip. (It may actually do this several times
in the event that there's more than one "hole" in the ring.)

So far the only card supported by if_dc which has exhibited this problem
is a LinkSys LNE100TX v2.0 (82c115 PNIC II), and it only seems to happen
on one particular system, however the fix is general enough and has low
enough overhead that we may as well apply it for all supported chipsets.
I also implemented the same fix for the 3Com xl driver, which is apparently
vulnerable to the same problem.

Problem originally noted and patch tested by: Matt Dillon
2000-01-03 15:28:47 +00:00
Bill Fumerola
cf8123ed18 Update NeoMagic entries.
Obtained from:	NetBSD's pcidevs and billf's Dell laptop.
2000-01-03 10:04:01 +00:00
Bill Fumerola
4eb47ecfab Fill in the blanks for some of the Texas Instruments cardbus controllers.
Obtained from:	NetBSD (syssrc/sys/dev/pci/pcidevs)
1999-12-31 07:22:24 +00:00
Bill Fumerola
f88e599fcb Copy Texas Instruments cardbus controllers from pcisupport.c, the pcisupport.c
probes are at the 'chip' level and will get overridden by pcic_p if it is
compiled in. It's still nice to get the better probe message if it's not...

Requested by:	imp
1999-12-29 13:33:37 +00:00
Bill Fumerola
6f4159efe4 Add the Texas Instruments PCI14xx pccard/cardbus controllers device ids. 1999-12-29 05:33:57 +00:00
Peter Wemm
c447342094 Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot).  This is consistant with the other
BSD's who made this change quite some time ago.  More commits to come.
1999-12-29 05:07:58 +00:00
Bill Fumerola
280ac20136 Add the Id for the NeoMagic 256ZX, the display from which I'm seeing this.. 1999-12-29 02:47:02 +00:00
Bill Fumerola
ecfa9802f0 Fix a small typo in the comments. 1999-12-28 06:04:29 +00:00
Bruce Evans
64c6ef6e8f Removed unnecessary const poisoning (redundant casting) which was added
in rev.1.4.
1999-12-24 15:16:10 +00:00
Bill Paul
9d378ed009 Fix problem reported by Matt Dillon. Occasionally, very small received
frames would be handled incorrectly due to bad usage of m_pullup() in
the case where the frame wraps from the end of the receive buffer back
the beginning.

Also, when manually extending small packets to pad them to the minimum
frame length during transmission, zero out the pad area to make some
really paranoid people happy.
1999-12-23 19:05:58 +00:00
Eivind Eklund
793f0e7bb6 Add #ifdef notyet around uncalled code that is later going to become DDB
commands.

Discussed with:	phk (driver author)
1999-12-21 18:11:48 +00:00
Eivind Eklund
369dc8ceb8 Change incorrect NULLs to 0s 1999-12-21 11:14:12 +00:00
Bill Paul
968b1a711d Update the xl driver to recognize yet another 3c905B/3c905C class NIC:
the 3c450-TX HomeConnect. Like the 3cSOHO100-TX OfficeConnect, this NIC
uses the same ASIC as the 3c905B/3c905C but is targeted for a particular
market segment (home users). It is somewhat less expensive than the
3c905B/3c905C ($49, according to the 3Com web site), comes with its
own custom driver kit and is bundled with various goofy Windows software
packages designed to demonstrate the niftyness of home networking (networked
game demos, etc...).

Changes are:

- Add PCI ID to list in if_xlreg.h.
- Update xl_devs table in if_xl.c.
- Update xl_choose_xcvr() to consider the HomeConnect the
  same as all the other 10baseT/100baseTX cards.
1999-12-16 18:33:57 +00:00
Matt Jacob
22e1dc858b Add Dual LVD bus (1280) support 1999-12-16 05:42:02 +00:00
Bill Paul
91cc2adb2e Fix some problems reported by Mike Pritchard:
- Add a flag DC_TX_INTR_ALWAYS which causes the transmit code to
  request a TX done interrupt for every packet. The PNIC seems to need
  this to insure that the sent TX buffers get reaped in a timely fashion.

- Try to unreset the SIA as soon as possible after resetting the whole
  chip.

- Change dcphy to support either 10/100 or 10Mbps only NICs. The
  built-in 21143 ethernet in Compaq Presario machines is 10Mbps only
  and it doesn't work right if we try to advertise 100Mbps modes during
  autoneg. When restricted to only 10mbps modes, it works fine.

  Note that for now, I detect this condition by checking the PCI
  subsystem ID on this NIC (which has a Compaq vendor/device ID).
  Yes, I know that's what the SROM is supposed to be for. I'm deliberately
  ignoring the SROM wherever possible. Sue me.

The latter two fixes allow if_dc to work correctly with the built-in
ethernet on certain Compaq Presario boxes. There are liable to be quite
a few people using these as their home systems who might want to try
FreeBSD; may as well be nice to them.

Now if anybody out there has an Alpha miata with 10Mbps ethernet and
can show me the output from pciconf -l on their system, I'd be grateful.
1999-12-13 21:45:13 +00:00
Peter Wemm
acf5b0bacb Remove some horrible #if 0'd code that has no hope of working now. It
used to edit the old-style isa_devtab config tables to insert a mapping
for a pci device into the isa tables so that the wdc driver could probe
it later.  This has been #if 0'd since April.
1999-12-12 14:47:23 +00:00
Justin T. Gibbs
e0b0c6aad5 When booting verbose, indicate if we are using manual termination
settings for U2 cards.

Don't assume that all aic7859 cards are 2930CUs.
1999-12-12 04:54:14 +00:00
Peter Wemm
dfea8af9f4 Make the usb and ide/ata device identification a little saner. Rather than
attaching to the device via chip*, use the newbus nomatch method to report
the device.  This leaves them unattached so that a driver can be easily
loaded to grab them later.
1999-12-10 17:44:22 +00:00
Kenneth D. Merry
64ae346b52 [ repository copy of sys/pci/pci_ioctl.h to sys/sys/pciio.h happened in the
background ]

Rename sys/pci/pci_ioctl.h to sys/sys/pciio.h to make it easier for
userland programs to use this interface.  Reformat the file, and add a
BSD-style copyright to it.

Add a new man page for pci(4).  The PCIOCGETCONF, PCIOCREAD, and PCIOCWRITE
ioctls are documented, but the PCIOCATTACHED ioctl is not documented
because it is not implemented.

Change includes of <pci/pci_ioctl.h> to <sys/pciio.h> or remove them
altogether.  In many cases, pci_ioctl.h was unused.

Reviewed by:	steve
1999-12-08 17:44:04 +00:00
Bill Paul
a2c195896a Spruce up the Sundance ST201 driver:
- Convert to using TX descritor polling similar to the xl driver (the
  ST201 is a clone of the 3c90xB chipset and offers the same transmit
  polling scheme). This should reduce TX overhad a little.

- Make sure to reset PHY when switching mode, as in the starfire driver.

- Fix instances of free() that should be contigfree().

- Remove dead code.
1999-12-07 20:14:42 +00:00
Bill Paul
d675147e39 Tweak the DC_REDUCED_MII_POLL code in dc_mii_tick() for the DC_IS_INTEL()
case. The idea is to reduce how often we call mii_tick(), however currently
it may not be called often enough, which prevents autonegotiation from
being driven correctly.

This should improve the chances of successfully autonegotiating media
settings on non-MII 21143 NICs. (Still waiting for confirmation from
some testers, but the code is clearly wrong in any case.)
1999-12-07 19:18:41 +00:00
Justin T. Gibbs
820379186b Simplify my license.
Don't arbitrarily limit the initiator ID of the card to something <= 7.

Fix a bug in the checksum code that would incorrectly prevent a valid
checksum of zero. (cp)

Don't touch rely on seeprom data when configuring termination.  We may
not have seeprom data. (cp)

Treat all ULTRA2 capable adapters the same way when reading or writing
the BRDCTL register.  We previously only did this correctly for aic7890/91
chips.  This should correct some problems with termination settings on
aic7896/97 adapters. (cp)

Changes marked with "(cp)"
Pointed out by:	Chuck Paterson <cp@bsdi.com>
1999-12-06 18:29:03 +00:00
Bill Paul
d25bb2d026 Modify the Adaptec "starfire" driver to reset the PHY on the MII bus
before selecting a mode. The Seeq PHY chips on the Adaptec cards that
use the AIC-6915 controller seem to need it in order to get them to
change modes correctly.

This corrects a problem that I noticed where my ANA-62022 board failed
to correctly program the full duplex bit in the macconfig1 register
when the interface was brought up. Running ifconfig sf0 would mask this
problem in some cases because polling the PHY status would cause the
miibus code to notice that full duplex was now needed and the statchg
callback would be invoked to configure the duplex setting. However it
would still get it wrong other times.

Also changed sf_miibus_statchg() to program the IPG register to match
the duplex setting in accordance with Adaptec manual's recommendations
(0x15 for full duplex, 0x11 for half duplex).
1999-12-05 20:02:45 +00:00
Peter Wemm
150e211545 Raise the pci compat driver match priority a bit so that it's not
quite so close to the chip* drivers.
1999-12-05 18:50:22 +00:00
Peter Wemm
2765c00ce8 Lower (a lot!) the chip* probe so it doesn't steal the pci ID from
ide_pci which still uses the pci driver compat shims.
1999-12-05 18:46:33 +00:00
Bill Paul
96f2e892a7 Add the if_dc driver and remove all of the al, ax, dm, pn and mx drivers
which it replaces. The new driver supports all of the chips supported
by the ones it replaces, as well as many DEC/Intel 21143 10/100 cards.

This also completes my quest to convert things to miibus and add
Alpha support.
1999-12-04 17:41:31 +00:00
Matthew N. Dodd
fe0d408987 Remove the 'ivars' arguement to device_add_child() and
device_add_child_ordered().  'ivars' may now be set using the
device_set_ivars() function.

This makes it easier for us to change how arbitrary data structures are
associated with a device_t.  Eventually we won't be modifying device_t
to add additional pointers for ivars, softc data etc.

Despite my best efforts I've probably forgotten something so let me know
if this breaks anything.  I've been running with this change for months
and its been quite involved actually isolating all the changes from
the rest of the local changes in my tree.

Reviewed by:	peter, dfr
1999-12-03 08:41:24 +00:00
Nick Hibma
b47337d347 Fix the 'usb0: USB revision unknown, not supported' people have been seeing
by identifying the version in the PCI drivers.

The OHCI driver just presets this to 1.0 as it is not specified in the
PCI registers anywhere. This should be revisited once USB 2.0 is in
wide spread use.
1999-12-03 01:34:42 +00:00
Julian Elischer
a793b9c097 Add NULL for new entrypoint. 1999-12-01 09:37:28 +00:00
Peter Wemm
5700c63bc7 Make the pci driver compat shim return a preference for probe
rather than an "it's mine!" so that other newbus-aware drivers can
bid for the device too.  This should allow the sym driver to out-bid
the ncr driver for devices it supports without having to modify ncr.c
at all.  ncr would then function as a catch-all.
1999-11-30 01:34:46 +00:00
Eivind Eklund
e9f0f7d4ad Add the PCI id for the TI PCI-1251B PCI-CardBus bridge.
Submitted by:   Martin Blapp <mb@imp.ch>
1999-11-28 13:37:35 +00:00
Søren Schmidt
84d1d01b7a Add 3 more parts of the VIA 82C686. 1999-11-24 21:07:29 +00:00
Archie Cobbs
25792ef324 Change the prototype of the strto* routines to make the second
parameter a char ** instead of a const char **.  This make these
kernel routines consistent with the corresponding libc userland
routines.

Which is actually 'correct' is debatable, but consistency and
following the spec was deemed more important in this case.

Reviewed by (in concept):	phk, bde
1999-11-24 01:03:08 +00:00
Nick Hibma
c577d56d33 Feh, kind of went wrong the previous commit. dev should child (in some
cases) plus a typo.
1999-11-22 14:39:21 +00:00
Nick Hibma
aa7e2ba7b6 Move the pretty printing of the description for USB controllers to
pci_probe_nomatch, so it won't be in the way when loading USB as a module.

The reason for them being there in the first place is that every
motherboard comes with USB kit and this way it looks more pretty (peter).
The real solution will be to define some method of detaching a driver
after it has attached.
1999-11-22 03:34:43 +00:00
Nick Hibma
66272d3701 Remove some bogus bus methods peter added. We are hardly doing
anything as a bus.
1999-11-22 03:22:43 +00:00
Boris Popov
1a7c256983 Add text for Rendition Verite V1000 and V2000 video cards. 1999-11-21 17:08:47 +00:00
Matt Jacob
9637d68c97 Fix dmasetup functions to have 16 bit queue indices. Get the chip revision
out of the PCI CLASS reg and store it in the softc. Use the getenv_quad
function to get a WWN override from the environment. Look for a config
value for same. Make slightly less lame the wwn seed construction.
1999-11-21 02:56:17 +00:00
Jun Kuriyama
31de378d47 s/Brige/Bridge/. 1999-11-21 00:53:23 +00:00
Bill Paul
5fb449fd94 Minor tweak: the subsystem device ID code for the quad port 62044 card
is documented to be 0x18 in the Adaptec manual, however there appears to
be a newer board rev with code 0x19. I added a #define for this and
updated the probe code so that this board will be properly identified
in the probe messages. (Currently it's just identified generically as
an AIC-6915 chip.)
1999-11-20 18:29:44 +00:00
Peter Wemm
5ab0514321 Allow NULL for startp and/or countp in bus_get_resource() so that you can
get one of the two without having to use a dummy variable.
1999-11-20 14:56:55 +00:00
Warner Losh
64369dfb59 Initial import of cardbus bridge driver (cbb) from the latest
newconfig code.  This is a raw import and doesn't compile yet.

Obtained from: newconfig project
1999-11-18 07:14:54 +00:00
Poul-Henning Kamp
119ce71e82 Do timeouts in terms of hz
Spotted by:     julian
1999-11-17 21:40:14 +00:00
Bill Paul
eb86c09749 Fix usage of m_pullup(). 1999-11-16 15:34:52 +00:00
Andrew Gallatin
a3f09ae6e1 Remove calls to alpha_register_pci_scsi(). After Mike's recent boot
changes, it no longer exists and is preventing alpha kernels from building.

reviewed by: msmith
1999-11-05 13:10:39 +00:00
Andrew Gallatin
870c4cf8eb now that a map's base addr is 64-bits, the alpha multi-hose hack needs
to be cast to 64-bits in pci_add_map.  This should allow XP1000s and
DS20s to boot -current again.
1999-11-03 22:43:03 +00:00
Poul-Henning Kamp
fa52394878 Remove compat cruft. 1999-11-03 14:15:18 +00:00
Poul-Henning Kamp
e118f907db New driver: Nx64kbit/s E1/T1 cards based on Munich32x&Falc54.
This is a netgraph driver.
1999-11-02 14:23:14 +00:00
Bill Paul
8562ad200e Do some more work on the mxphy pseudo-driver to make it better at media
detection and remove the long delays that I had used previously. Everything
should be handled by timeouts now.
1999-11-01 17:10:26 +00:00
Matt Jacob
fed92c475e Organize things to cope with the (possible) lack of downloadable
firmware a bit better.
1999-10-30 19:35:11 +00:00
Poul-Henning Kamp
02c58685a4 Change useracc() and kernacc() to use VM_PROT_{READ|WRITE|EXECUTE} for the
"rw" argument, rather than hijacking B_{READ|WRITE}.

Fix two bugs (physio & cam) resulting by the confusion caused by this.

Submitted by:   Tor.Egge@fast.no
Reviewed by:    alc, ken (partly)
1999-10-30 06:32:05 +00:00
Poul-Henning Kamp
7254edcfaf Don't test boolean return against != 1.
Don't needlessly assign the error variable in an if statement.
1999-10-29 19:03:18 +00:00
Semen Ustimenko
1d45e38736 Added code to enable BusMaster operations.
Kurt D. Starsinic <kstar@chapin.edu> had reported
this patch fixing strange behaviour (like timeouts
and RX/TX DMAs stopping errors).
1999-10-29 09:56:52 +00:00
Warner Losh
077e8ab387 I'm told this makes more laptops work with the new attachment code.
Submitted by: archie cobbs
1999-10-29 04:41:07 +00:00
Doug Rabson
f8ef46e907 Fix some resource allocation peculiarities of the intpm device. 1999-10-28 08:06:59 +00:00