Commit Graph

152 Commits

Author SHA1 Message Date
Bill Paul
b9f78d2b4a Add a device driver for the Broadcom BCM4401 ethernet controller,
written by Stuart Walsh and Duncan Barclay (with some kibbitzing by
me). I'm checking it in on Stuart's behalf.

The BCM4401 is built into several x86 laptop and desktop systems. For the
moment, I have only enabled it in the x86 kernel config because although
it's a PCI device, I haven't heard of any standalone NICs that use it. If
somebody knows of one, we can easily add it to the other arches.

This driver uses register/structure data gleaned from the Linux
driver released by Broadcom, but does not contain any of the code
from the Linux driver itself. It uses busdma.
2003-09-09 18:17:23 +00:00
Bill Paul
a94100fa9b Take the support for the 8139C+/8169/8169S/8110S chips out of the
rl(4) driver and put it in a new re(4) driver. The re(4) driver shares
the if_rlreg.h file with rl(4) but is a separate module. (Ultimately
I may change this. For now, it's convenient.)

rl(4) has been modified so that it will never attach to an 8139C+
chip, leaving it to re(4) instead. Only re(4) has the PCI IDs to
match the 8169/8169S/8110S gigE chips. if_re.c contains the same
basic code that was originally bolted onto if_rl.c, with the
following updates:

- Added support for jumbo frames. Currently, there seems to be
  a limit of approximately 6200 bytes for jumbo frames on transmit.
  (This was determined via experimentation.) The 8169S/8110S chips
  apparently are limited to 7.5K frames on transmit. This may require
  some more work, though the framework to handle jumbo frames on RX
  is in place: the re_rxeof() routine will gather up frames than span
  multiple 2K clusters into a single mbuf list.

- Fixed bug in re_txeof(): if we reap some of the TX buffers,
  but there are still some pending, re-arm the timer before exiting
  re_txeof() so that another timeout interrupt will be generated, just
  in case re_start() doesn't do it for us.

- Handle the 'link state changed' interrupt

- Fix a detach bug. If re(4) is loaded as a module, and you do
  tcpdump -i re0, then you do 'kldunload if_re,' the system will
  panic after a few seconds. This happens because ether_ifdetach()
  ends up calling the BPF detach code, which notices the interface
  is in promiscuous mode and tries to switch promisc mode off while
  detaching the BPF listner. This ultimately results in a call
  to re_ioctl() (due to SIOCSIFFLAGS), which in turn calls re_init()
  to handle the IFF_PROMISC flag change. Unfortunately, calling re_init()
  here turns the chip back on and restarts the 1-second timeout loop
  that drives re_tick(). By the time the timeout fires, if_re.ko
  has been unloaded, which results in a call to invalid code and
  blows up the system.

  To fix this, I cleared the IFF_UP flag before calling ether_ifdetach(),
  which stops the ioctl routine from trying to reset the chip.

- Modified comments in re_rxeof() relating to the difference in
  RX descriptor status bit layout between the 8139C+ and the gigE
  chips. The layout is different because the frame length field
  was expanded from 12 bits to 13, and they got rid of one of the
  status bits to make room.

- Add diagnostic code (re_diag()) to test for the case where a user
  has installed a broken 32-bit 8169 PCI NIC in a 64-bit slot. Some
  NICs have the REQ64# and ACK64# lines connected even though the
  board is 32-bit only (in this case, they should be pulled high).
  This fools the chip into doing 64-bit DMA transfers even though
  there is no 64-bit data path. To detect this, re_diag() puts the
  chip into digital loopback mode and sets the receiver to promiscuous
  mode, then initiates a single 64-byte packet transmission. The
  frame is echoed back to the host, and if the frame contents are
  intact, we know DMA is working correctly, otherwise we complain
  loudly on the console and abort the device attach. (At the moment,
  I don't know of any way to work around the problem other than
  physically modifying the board, so until/unless I can think of a
  software workaround, this will have do to.)

- Created re(4) man page

- Modified rlphy.c to allow re(4) to attach as well as rl(4).

Note that this code works for the sample 8169/Marvell 88E1000 NIC
that I have, but probably won't work for the 8169S/8110S chips.
RealTek has sent me some sample NICs, but they haven't arrived yet.
I will probably need to add an rlgphy driver to handle the on-board
PHY in the 8169S/8110S (it needs special DSP initialization).
2003-09-08 02:11:25 +00:00
Scott Long
e34c1b685e Teach sysinstall about the ServeRAID disk device. 2003-05-11 07:18:26 +00:00
Bill Paul
87b4a25958 Add device driver support for the ASIX Electronics AX88172 USB 2.0
ethernet controller. The driver has been tested with the LinkSys
USB200M adapter. I know for a fact that there are other devices out
there with this chip but don't have all the USB vendor/device IDs.

Note: I'm not sure if this will force the driver to end up in the
install kernel image or not. Special magic needs to be done to exclude
it to keep the boot floppies from bloating again, someone please
advise.
2003-04-20 19:05:33 +00:00
Maxim Sobolev
3c1493dcbd Use correct interface name (it's different on -current).
Submitted by:	Brooks Davis <brooks@one-eyed-alien.net>
MFC after:	20 days
2003-03-05 18:50:18 +00:00
Maxim Sobolev
8ad8452bd4 Remove local hack that somehow slipped into the previous commit.
MFC after:	20 days
2003-03-05 18:48:47 +00:00
Maxim Sobolev
c4020e6e93 Add missed description for the `ds' (disc(4)) pseudo-interface.
Sponsored by:	Porta Software Ltd
MFC after:	20 days
2003-03-05 18:07:59 +00:00
Tom Rhodes
acbd6988aa Teach sysinstall about the em(4) device.
PR:		46439
Submitted by:	Dan Lukes <dan@obluda.cz>
Approved by:	re (murray)
Tested?		yes
MFC:		1 day
2003-01-27 04:51:46 +00:00
John Baldwin
d1a079fb0d Add 'vlan' as a network device.
Tested by:	dcs
2003-01-17 18:51:21 +00:00
John Baldwin
f4b3927cfe Don't use fake 'c' or 'a' BSD partitions for CD-ROM devices. This fixes
sysinstall to create /cdrom entries in /etc/fstab that just use the
raw CD-ROM device /dev/cd0, etc.

Approved by:	re
2002-11-27 17:56:27 +00:00
Marcel Moolenaar
df81b3e662 Also test for type efi everywhere we currently test for type fat.
With this change there's no a priori difference between EFI and
FAT partitions. With this change and the corresponding change to
libdisk, we can create EFI partitions, just like regular FAT
partitions.
2002-11-13 05:39:59 +00:00
Jun Kuriyama
b46e66a5a5 debugMsg() should end with "\n". 2002-11-01 02:05:05 +00:00
John Baldwin
92711d3586 Add lge(4) to the list of drivers. It was present in 4-stable but not in
-current.
2002-07-02 19:56:26 +00:00
Makoto Matsushita
bb9bc62f9a Fix /dev/acdNc minor device number. This bug prevents installing FreeBSD
from CD-ROM in 4-stable.  Note that in 5-current, we use devfs so this
change (hopefully) shouldn't change anything.

I'll MFC to 4-stable later.

Tested with: FreeBSD/i386, 4.5-STABLE-20020330-JPSNAP
2002-03-30 16:59:06 +00:00
Murray Stokely
0b132dc393 Add wireless devices to device_names array. Now that ifconfig can set
session IDs, and sysinstall can load modules from the MFSROOT, it
should be possible to install FreeBSD over a wireless link.

MFC after:	2 weeks
2002-03-17 08:04:02 +00:00
Murray Stokely
55e3fefc53 Close all open file descriptors before restarting sysinstall.
PR:		bin/30737
Submitted by:	Alexey V. Neyman <alex.neyman@auriga.ru>
2001-09-30 00:43:32 +00:00
Bill Paul
95d674824f Add device driver support for the Broadcom BCM570x family of gigabit
ethernet controllers. This adds support for the 3Com 3c996-T, the
SysKonnect SK-9D21 and SK-9D41, and the built-in gigE NICs on
Dell PowerEdge 2550 servers. The latter configuration hauls ass:
preliminary measurements show TCP speeds of over 900Mbps using
only normal size frames.

TCP/IP checksum offload, jumbo frames and VLAN tag insertion/stripping
are supported, as well as interrupt moderation.

Still need to fix autonegotiation support for 1000baseSX NICs, but
beyond that, driver is pretty solid.
2001-09-27 23:55:28 +00:00
Bill Paul
362c5c1e02 You were knocked senseless by the Boomerang, spun around by the Cyclone,
blown over by the Hurricane and had a house dropped on you by the Tornado.
Now it's time to have your parade rained on by... the Typhoon!

This commit adds driver support for 3Com 3cR990 10/100 ethernet
adapters based on the Typhoon I and Typhoon II chipsets. This is actually
a port of the OpenBSD driver with many hacks by me.

No Virginia, there isn't any support for the hardware crypto yet. However
there is support for TCP/IP checksum offload and VLANs.

Special thanks go to Jason Wright, Aaron Campbell and Theo de Raadt for
squeezing enough info out of 3Com to get this written, and for doing
most of the hard work.

Manual page is included. Compiled as a module and included in GENERIC.
2001-07-23 20:44:54 +00:00
Dima Dorfman
13704ca508 Introduce DEVICE_INIT, DEVICE_GET, and DEVICE_SHUTDOWN macros. As the
names suggest, they perform methods on Device's.  In addition, they
check that the pointer passed to them is valid; if it isn't, they
pretend that the action failed.  This fixes some crashes due to NULL
dereferences (e.g., PR 26509).

Approved by:	jkh (some time ago)
2001-07-02 00:18:04 +00:00
Bill Paul
ce4946daa5 Add support for gigabit ethernet cards based on the NatSemi DP83820
and DP83821 gigabit ethernet MAC chips and the NatSemi DP83861 10/100/1000
copper PHY. There are a whole bunch of very low cost cards available with
this chipset selling for $150USD or less. This includes the SMC9462TX,
D-Link DGE-500T, Asante GigaNIX 1000TA and 1000TPC, and a couple cards
from Addtron.

This chip supports TCP/IP checksum offload, VLAN tagging/insertion.
2048-bit multicast filter, jumbograms and has 8K TX and 32K RX FIFOs.
I have not done serious performance testing with this driver. I know
it works, and I want it under CVS control so I can keep tabs on it.
Note that there's no serious mutex stuff in here yet either: I need
to talk more with jhb to figure out the right way to do this. That
said, I don't think there will be any problems.

This driver should also work on the alpha. It's not turned on in
GENERIC.
2001-05-11 19:56:39 +00:00
Yoshihiro Takahashi
418754d037 Moved the snc driver position before the sn driver.
Submitted by:	Tomokazu HARADA <tkhara@osk4.3web.ne.jp>
2000-12-09 04:51:13 +00:00
Tatsumi Hosokawa
b986543ddf Added Intel Gigabit Ethernet card to device menu. 2000-11-07 09:16:14 +00:00
Søren Schmidt
18993f4eb3 Add the ATA RAID device 'ar'. 2000-10-29 13:04:04 +00:00
Yoshihiro Takahashi
0a917604f0 Added NEC PC-9801-83, 84, PC-9801-103, 104, PC-9801N-25 and PC-9801N-J02R
support which use National Semiconductor DP8393X (SONIC) as ethernet
controller. Currently, this driver is used on only PC-98.

Submitted by:	Motomichi Matsuzaki <mzaki@e-mail.ne.jp>
Obtained from:	NetBSD/pc98
2000-10-02 14:27:20 +00:00
MIHIRA Sanpei Yoshiro
8436d169fe add ``xe'' driver
Approved by:	jkh
2000-09-22 23:48:27 +00:00
Bill Paul
73334a4329 Add a new driver for the AMD PCnet/FAST, FAST+ and Home PCI adapters.
Previously, these cards were supported by the lnc driver (and they
still are, but the pcn driver will claim them first), which is fine
except the lnc driver runs them in 16-bit LANCE compatibility mode.
The pcn driver runs these chips in 32-bit mode and uses the RX alignment
feature to achieve zero-copy receive. (Which puts it in the same
class as the xl, fxp and tl chipsets.) This driver is also MI, so it
will work on the x86 and alpha platforms. (The lnc driver is still
needed to support non-PCI cards. At some point, I'll need to newbusify
it so that it too will me MI.)

The Am79c978 HomePNA adapter is also supported.
2000-09-20 17:30:22 +00:00
Mike Smith
8e847be836 Teach sysinstall about 'aac'. 2000-09-13 06:15:53 +00:00
Jordan K. Hubbard
ca7b35bdbf Remove device type field - there are no block devices left. 2000-08-22 03:14:39 +00:00
John Baldwin
fbf67537b4 Ugh. Back out local changes that crept in with my last commit. :( 2000-07-14 08:09:50 +00:00
John Baldwin
cac2be43a7 MFS: (yes, from -stable) Note that current.FreeBSD.org is a 5.0 snap server
now, and replace the releng3 3.0 snap entry with releng4.
2000-07-14 07:59:44 +00:00
Jordan K. Hubbard
632116832b Replace phk's commit with code from my local tree which I happen
to like better (it's commented and easier to read).
2000-07-05 07:15:57 +00:00
Poul-Henning Kamp
c638a74daa Ignore all md disks, installing on them would be particularly pointless.
Its not fatal to find hardware we don't know.
2000-07-04 13:46:43 +00:00
Yoshihiro Takahashi
a40915d750 - Remove obsolete PC-card boot.flp hack. It was for making both PC-card
boot.flp and plain boot.flp.
- Clean up crunchgen related routine.

- Add PC-98 support.
  TODO:
    o Documentation
    o Fix some messages for PC-98
    o Decrease the size of fixit.flp to 1.2MB
    o I18N (See: http://www.jp.FreeBSD.org/BootAsia/index.html)

No response from jkh
2000-06-05 13:17:23 +00:00
Mike Smith
6af0a0de78 Remove all of the block devices, correct major numbers to point to the
corresponding character devices.  This is (currently) untested, but
should be correct.
2000-05-25 02:48:15 +00:00
Mike Smith
f8883ef3e1 Teach sysinstall about 'twe' disks. Note that this is currently
untested, and with the current state of flux surrounding the death
of bdevs other things here may need to change.
2000-05-25 02:28:50 +00:00
Jonathan Lemon
f593bed1b5 Add Compaq Arrays 2000-03-08 18:14:19 +00:00
Jordan K. Hubbard
ccd140ac08 Make sysinstall use the new debug.boothowto OID. It will now go
straight into debug mode if you boot -v.  Also conditionalize some
annoying debugging output now that we have this ability.

Partially submitted by:	msmith
Approved by:	jkh [to make certain wise-acres happy ;)]
2000-02-25 20:55:15 +00:00
Tatsumi Hosokawa
f95270bacb Added sn driver to network interface menu. 2000-01-15 20:30:22 +00:00
Bill Paul
0177987224 Add device driver support for USB ethernet adapters based on the CATC
USB-EL1202A chipset. Between this and the other two drivers, we should
have support for pretty much every USB ethernet adapter on the market.
The only other USB chip that I know of is the SMC USB97C196, and right
now I don't know of any adapters that use it (including the ones made
by SMC :/ ).

Note that the CATC chip supports a nifty feature: read and write combining.
This allows multiple ethernet packets to be transfered in a single USB
bulk in/out transaction. However I'm again having trouble with large
bulk in transfers like I did with the ADMtek chip, which leads me to
believe that our USB stack needs some work before we can really make
use of this feature. When/if things improve, I intend to revisit the
aue and cue drivers. For now, I've lost enough sanity points.
2000-01-14 03:14:49 +00:00
Bill Paul
dfd1e98eac Add device driver support for USB ethernet adapters based on the
Kawasaki LSI KL5KUSB101B chip, including the LinkSys USB10T, the
Entrega NET-USB-E45, the Peracom USB Ethernet Adapter, the 3Com
3c19250 and the ADS Technologies USB-10BT. This device is 10mbs
half-duplex only, so there's miibus or ifmedia support. This device
also requires firmware to be loaded into it, however KLSI allows
redistribution of the firmware images (I specifically asked about
this; they said it was ok).

Special thanks to Annelise Anderson for getting me in touch with
KLSI (eventually) and thanks to KLSI for providing the necessary
programming info.

Highlights:
- Add driver files to /sys/dev/usb
- update usbdevs and regenerate attendate files
- update usb_quirks.c
- Update HARDWARE.TXT and RELNOTES.TXT for i386 and alpha
- Update LINT, GENERIC and others for i386, alpha and pc98
- Add man page
- Add module
- Update sysinstall and userconfig.c
2000-01-05 04:27:24 +00:00
Bill Paul
ed63a7aaef This commit adds device driver support for the ADMtek AN986 Pegasus
USB ethernet chip. Adapters that use this chip include the LinkSys
USB100TX. There are a few others, but I'm not certain of their
availability in the U.S. I used an ADMtek eval board for development.
Note that while the ADMtek chip is a 100Mbps device, you can't really
get 100Mbps speeds over USB. Regardless, this driver uses miibus to
allow speed and duplex mode selection as well as autonegotiation.
Building and kldloading the driver as a module is also supported.

Note that in order to make this driver work, I had to make what some
may consider an ugly hack to sys/dev/usb/usbdi.c. The usbd_transfer()
function will use tsleep() for synchronous transfers that don't complete
right away. This is a problem since there are times when we need to
do sync transfers from an interrupt context (i.e. when reading registers
from the MAC via the control endpoint), where tsleep() us a no-no.
My hack allows the driver to have the code poll for transfer completion
subject to the xfer->timeout timeout rather that calling tsleep().
This hack is controlled by a quirk entry and is only enabled for the
ADMtek device.

Now, I'm sure there are a few of you out there ready to jump on me
and suggest some other approach that doesn't involve a busy wait. The
only solution that might work is to handle the interrupts in a kernel
thread, where you may have something resembling a process context that
makes it okay to tsleep(). This is lovely, except we don't have any
mechanism like that now, and I'm not about to implement such a thing
myself since it's beyond the scope of driver development. (Translation:
I'll be damned if I know how to do it.) If FreeBSD ever aquires such
a mechanism, I'll be glad to revisit the driver to take advantage of
it. In the meantime, I settled for what I perceived to be the solution
that involved the least amount of code changes. In general, the hit
is pretty light.

Also note that my only USB test box has a UHCI controller: I haven't
I don't have a machine with an OHCI controller available.

Highlights:

- Updated usb_quirks.* to add UQ_NO_TSLEEP quirk for ADMtek part.
- Updated usbdevs and regenerated generated files
- Updated HARDWARE.TXT and RELNOTES.TXT files
- Updated sysinstall/device.c and userconfig.c
- Updated kernel configs -- device aue0 is commented out by default
- Updated /sys/conf/files
- Added new kld module directory
1999-12-28 02:01:18 +00:00
Jordan K. Hubbard
61547e027b In retrospect, msgNotify() should leave its contents on the screen
longer to give the user something to look at while things are happening.
Change it to do so and insert the appropriate screen saves elsewhere.
1999-12-17 02:46:04 +00:00
Poul-Henning Kamp
2029959351 Remove references to ze and zp drivers. 1999-12-10 10:55:27 +00:00
Søren Schmidt
f49e572bbe Remove sysinstall knowledge of the wd based devices.. 1999-12-08 09:51:00 +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
Mike Smith
c56a2e807a Add support for the AMI MegaRAID and Mylex drivers to sysinstall.
There are reports that installs to these controllers still don't
work, but this is at least one step closer.
1999-11-27 21:33:04 +00:00
Søren Schmidt
0b7a9a135d Add devices from the ATA driver (ad, acd, afd, ast). 1999-11-09 19:10:15 +00:00
Bill Paul
1088f6c7c1 Spruce up the ADMtek driver: conver to newbus, miibus and add support
for the AN985 "Centaur" chip, which is apparently the next genetation
of the "Comet." The AN985 is also a tulip clone and is similar to the
AL981 except that it uses a 99C66 EEPROM and a serial MII interface
(instead of direct access to the PHY registers).

Also updated various documentation to mention the AN985 and created
a loadable module.

I don't think there are any cards that use this chip on the market yet:
the datasheet I got from ADMtek has boxes with big X's in them where the
diagrams should be, and the sample boards I got have chips without any
artwork on them.
1999-09-22 05:07:51 +00:00
Bill Paul
e5a9fd5435 This commit adds driver support for PCI fast ethernet NICs based on
the Davicom DM9100 and DM9102 chipsets, including the Jaton Corporation
XPressNet. Datasheet is available from www.davicom8.com.

The DM910x chips are still more tulip clones. The API is reproduced
pretty faithfully, unfortunately the performance is pretty bad. The
transmitter seems to have a lot of problems DMAing multi-fragment
packets. The only way to make it work reliably is to coalesce transmitted
packets into a single contiguous buffer. The Linux driver (written by
Davicom) actually does something similar to this. I can't recomment this
NIC as anything more than a "connectivity solution."

This driver uses newbus and miibus and is supported on both i386
and alpha platforms.
1999-09-06 06:14:30 +00:00
Bill Paul
9555e59a1e This commit adds driver support for the Silicon Integrated Systems
SiS 900 and SiS 7016 PCI fast ethernet chipsets. Full manuals for the
SiS chips can be found at www.sis.com.tw.

This is a fairly simple chipset. The receiver uses a 128-bit multicast
hash table and single perfect entry for the station address. Transmit and
receive DMA and FIFO thresholds are easily tuneable. Documentation is
pretty decent and performance is not bad, even on my crufty 486. This
driver uses newbus and miibus and is supported on both the i386 and
alpha architectures.
1999-09-05 21:01:03 +00:00