1999-08-28 01:08:13 +00:00
|
|
|
# $FreeBSD$
|
1994-09-16 20:24:29 +00:00
|
|
|
|
2006-03-17 18:54:44 +00:00
|
|
|
.include <bsd.own.mk>
|
|
|
|
|
2004-01-16 15:55:29 +00:00
|
|
|
SUBDIR= ${_3dfx} \
|
2006-03-03 21:37:38 +00:00
|
|
|
${_3dfx_linux} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_aac} \
|
|
|
|
accf_data \
|
2008-07-18 14:44:51 +00:00
|
|
|
accf_dns \
|
2001-07-15 04:55:37 +00:00
|
|
|
accf_http \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_acpi} \
|
2008-10-03 10:31:31 +00:00
|
|
|
ae \
|
2008-05-19 01:53:47 +00:00
|
|
|
age \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_agp} \
|
2001-07-15 04:55:37 +00:00
|
|
|
aha \
|
2004-06-29 21:20:17 +00:00
|
|
|
${_ahb} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_aic} \
|
2002-11-03 23:48:14 +00:00
|
|
|
aic7xxx \
|
2001-12-29 07:13:47 +00:00
|
|
|
aio \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_amd} \
|
2008-11-12 09:52:06 +00:00
|
|
|
ale \
|
2001-07-15 04:55:37 +00:00
|
|
|
amr \
|
2006-02-05 17:38:28 +00:00
|
|
|
${_an} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_aout} \
|
|
|
|
${_apm} \
|
|
|
|
${_ar} \
|
2005-03-31 20:21:43 +00:00
|
|
|
${_arcmsr} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_arcnet} \
|
2007-11-07 20:08:15 +00:00
|
|
|
${_asmc} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_asr} \
|
This is the much rumoured ATA mkIII update that I've been working on.
o ATA is now fully newbus'd and split into modules.
This means that on a modern system you just load "atapci and ata"
to get the base support, and then one or more of the device
subdrivers "atadisk atapicd atapifd atapist ataraid".
All can be loaded/unloaded anytime, but for obvious reasons you
dont want to unload atadisk when you have mounted filesystems.
o The device identify part of the probe has been rewritten to fix
the problems with odd devices the old had, and to try to remove
so of the long delays some HW could provoke. Also probing is done
without the need for interrupts, making earlier probing possible.
o SATA devices can be hot inserted/removed and devices will be created/
removed in /dev accordingly.
NOTE: only supported on controllers that has this feature:
Promise and Silicon Image for now.
On other controllers the usual atacontrol detach/attach dance is
still needed.
o Support for "atomic" composite ATA requests used for RAID.
o ATA RAID support has been rewritten and and now supports these
metadata formats:
"Adaptec HostRAID"
"Highpoint V2 RocketRAID"
"Highpoint V3 RocketRAID"
"Intel MatrixRAID"
"Integrated Technology Express"
"LSILogic V2 MegaRAID"
"LSILogic V3 MegaRAID"
"Promise FastTrak"
"Silicon Image Medley"
"FreeBSD PseudoRAID"
o Update the ioctl API to match new RAID levels etc.
o Update atacontrol to know about the new RAID levels etc
NOTE: you need to recompile atacontrol with the new sys/ata.h,
make world will take care of that.
NOTE2: that rebuild is done differently from the old system as
the rebuild is now done piggybacked on read requests to the
array, so atacontrol simply starts a background "dd" to rebuild
the array.
o The reinit code has been worked over to be much more robust.
o The timeout code has been overhauled for races.
o Support of new chipsets.
o Lots of fixes for bugs found while doing the modulerization and
reviewing the old code.
Missing or changed features from current ATA:
o atapi-cd no longer has support for ATAPI changers. Todays its
much cheaper and alot faster to copy those CD images to disk
and serve them from there. Besides they dont seem to be made
anymore, maybe for that exact reason.
o ATA RAID can only read metadata from all the above metadata formats,
not write all of them (Promise and Highpoint V2 so far). This means
that arrays can be picked up from the BIOS, but they cannot be
created from FreeBSD. There is more to it than just the missing
write metadata support, those formats are not unique to a given
controller like Promise and Highpoint formats, instead they exist
for several types, and even worse, some controllers can have
different formats and its impossible to tell which one.
The outcome is that we cannot reliably create the metadata of those
formats and be sure the controller BIOS will understand it.
However write support is needed to update/fail/rebuild the arrays
properly so it sits fairly high on the TODO list.
o So far atapicam is not supported with these changes. When/if this
will change is up to the maintainer of atapi-cam so go there for
questions.
HW donated by: Webveveriet AS
HW donated by: Frode Nordahl
HW donated by: Yahoo!
HW donated by: Sentex
Patience by: Vife and my boys (and even the cats)
2005-03-30 12:03:40 +00:00
|
|
|
ata \
|
2008-12-01 16:53:01 +00:00
|
|
|
ath \
|
2001-07-15 04:55:37 +00:00
|
|
|
aue \
|
2004-10-09 07:31:03 +00:00
|
|
|
${_auxio} \
|
2003-04-20 19:05:33 +00:00
|
|
|
axe \
|
2006-09-08 15:40:36 +00:00
|
|
|
bce \
|
2003-09-09 18:17:23 +00:00
|
|
|
bfe \
|
2001-09-27 23:55:28 +00:00
|
|
|
bge \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_bios} \
|
|
|
|
${_bktr} \
|
2008-06-07 22:58:32 +00:00
|
|
|
${_bm} \
|
2006-07-26 22:10:10 +00:00
|
|
|
bridgestp \
|
2002-10-01 19:05:18 +00:00
|
|
|
cam \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_canbepm} \
|
|
|
|
${_canbus} \
|
|
|
|
${_cardbus} \
|
|
|
|
${_cbb} \
|
2002-10-01 19:05:18 +00:00
|
|
|
cd9660 \
|
2003-09-26 20:26:25 +00:00
|
|
|
cd9660_iconv \
|
2005-03-22 14:52:40 +00:00
|
|
|
cdce \
|
2006-01-31 23:11:35 +00:00
|
|
|
${_ce} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ciss} \
|
|
|
|
${_cm} \
|
2008-03-06 08:09:45 +00:00
|
|
|
${_cmx} \
|
2001-07-15 04:55:37 +00:00
|
|
|
coda \
|
2003-09-07 07:43:10 +00:00
|
|
|
coda5 \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_coff} \
|
2007-08-15 19:26:03 +00:00
|
|
|
${_coretemp} \
|
2004-05-17 14:24:52 +00:00
|
|
|
${_cp} \
|
2008-08-08 16:26:53 +00:00
|
|
|
${_cpuctl} \
|
2005-02-05 08:01:10 +00:00
|
|
|
${_cpufreq} \
|
2002-10-16 14:31:34 +00:00
|
|
|
${_crypto} \
|
|
|
|
${_cryptodev} \
|
2005-01-26 21:27:26 +00:00
|
|
|
${_cs} \
|
2004-03-25 17:20:45 +00:00
|
|
|
${_ctau} \
|
2001-07-15 04:55:37 +00:00
|
|
|
cue \
|
2007-12-16 18:45:23 +00:00
|
|
|
cxgb \
|
2008-05-23 22:36:12 +00:00
|
|
|
${_cyclic} \
|
2001-07-15 04:55:37 +00:00
|
|
|
dc \
|
2003-10-24 15:44:10 +00:00
|
|
|
dcons \
|
|
|
|
dcons_crom \
|
2001-07-15 04:55:37 +00:00
|
|
|
de \
|
2008-08-23 21:00:40 +00:00
|
|
|
${_dpms} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_dpt} \
|
|
|
|
${_drm} \
|
2008-05-23 22:36:12 +00:00
|
|
|
${_dtrace} \
|
2001-10-05 07:09:27 +00:00
|
|
|
dummynet \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ed} \
|
2008-10-09 19:22:00 +00:00
|
|
|
ehci \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_elink} \
|
|
|
|
${_em} \
|
2003-06-16 13:52:27 +00:00
|
|
|
en \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ep} \
|
2008-06-20 19:28:33 +00:00
|
|
|
${_et} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ex} \
|
|
|
|
${_exca} \
|
|
|
|
${_ext2fs} \
|
2003-06-23 14:46:12 +00:00
|
|
|
fatm \
|
2001-07-15 04:55:37 +00:00
|
|
|
fdc \
|
2002-10-21 00:38:18 +00:00
|
|
|
fdescfs \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_fe} \
|
2002-11-07 16:19:43 +00:00
|
|
|
firewire \
|
2006-01-29 02:52:42 +00:00
|
|
|
firmware \
|
2001-07-15 04:55:37 +00:00
|
|
|
fxp \
|
o Revert the part of if_gem.c rev. 1.35 which added a call to gem_stop()
to gem_attach() as the former access softc members not yet initialized
at that time and gem_reset() actually is enough to stop the chip. [1]
o Revise the use of gem_bitwait(); add bus_barrier() calls before calling
gem_bitwait() to ensure the respective bit has been written before we
starting polling on it and poll for the right bits to change, f.e. even
though we only reset RX we have to actually wait for both GEM_RESET_RX
and GEM_RESET_TX to clear. Add some additional gem_bitwait() calls in
places we've been missing them according to the GEM documentation.
Along with this some excessive DELAYs, which probably only were added
because of bugs in gem_bitwait() and its use in the first place, as
well as as have of an gem_bitwait() reimplementation in gem_reset_tx()
were removed.
o Add gem_reset_rxdma() and use it to deal with GEM_MAC_RX_OVERFLOW errors
more gracefully as unlike gem_init_locked() it resets the RX DMA engine
only, causing no link loss and the FIFOs not to be cleared. Also use it
deal with GEM_INTR_RX_TAG_ERR errors, with previously were unhandled.
This was based on information obtained from the Linux GEM and OpenSolaris
ERI drivers.
o Turn on workarounds for silicon bugs in the Apple GMAC variants.
This was based on information obtained from the Darwin GMAC and Linux GEM
drivers.
o Turn on "infinite" (i.e. maximum 31 * 64 bytes in length) DMA bursts.
This greatly improves especially RX performance.
o Optimize the RX path, this consists of:
- kicking the receiver as soon as we've a spare descriptor in gem_rint()
again instead of just once after all the ready ones have been handled;
- kicking the receiver the right way, i.e. as outlined in the GEM
documentation in batches of 4 and by pointing it to the descriptor
after the last valid one;
- calling gem_rint() before gem_tint() in gem_intr() as gem_tint() may
take quite a while;
- doubling the size of the RX ring to 256 descriptors.
Overall the RX performance of a GEM in a 1GHz Sun Fire V210 was improved
from ~100Mbit/s to ~850Mbit/s.
o In gem_add_rxbuf() don't assign the newly allocated mbuf to rxs_mbuf
before calling bus_dmamap_load_mbuf_sg(), if bus_dmamap_load_mbuf_sg()
fails we'll free the newly allocated mbuf, unable to recycle the
previous one but a NULL pointer dereference instead.
o In gem_init_locked() honor the return value of gem_meminit().
o Simplify gem_ringsize() and dont' return garbage in the default case.
Based on OpenBSD.
o Don't turn on MAC control, MIF and PCS interrupts unless GEM_DEBUG is
defined as we don't need/use these interrupts for operation.
o In gem_start_locked() sync the DMA maps of the descriptor rings before
every kick of the transmitter and not just once after enqueuing all
packets as the NIC might instantly start transmitting after we kicked
it the first time.
o Keep state of the link state and use it to enable or disable the MAC
in gem_mii_statchg() accordingly as well as to return early from
gem_start_locked() in case the link is down. [3]
o Initialize the maximum frame size to a sane value.
o In gem_mii_statchg() enable carrier extension if appropriate.
o Increment if_ierrors in case of an GEM_MAC_RX_OVERFLOW error and in
gem_eint(). [3]
o Handle IFF_ALLMULTI correctly; don't set it if we've turned promiscuous
group mode on and don't clear the flag if we've disabled promiscuous
group mode (these were mostly NOPs though). [2]
o Let gem_eint() also report GEM_INTR_PERR errors.
o Move setting sc_variant from gem_pci_probe() to gem_pci_attach() as
device probe methods are not supposed to touch the softc.
o Collapse sc_inited and sc_pci into bits for sc_flags.
o Add CTASSERTs ensuring that GEM_NRXDESC and GEM_NTXDESC are set to
legal values.
o Correctly set up for 802.3x flow control, though #ifdef out the code
that actually enables it as this needs more testing and mainly a proper
framework to support it.
o Correct and add some conversions from hard-coded functions names to
__func__ which were borked or forgotten in if_gem.c rev. 1.42.
o Use PCIR_BAR instead of a homegrown macro.
o Replace sc_enaddr[6] with sc_enaddr[ETHER_ADDR_LEN].
o In gem_pci_attach() in case attaching fails release the resources in
the opposite order they were allocated.
o Make gem_reset() static to if_gem.c as it's not needed outside that
module.
o Remove the GEM_GIGABIT flag and the associated code; GEM_GIGABIT was
never set and the associated code was in the wrong place.
o Remove sc_mif_config; it was only used to cache the contents of the
respective register within gem_attach().
o Remove the #ifdef'ed out NetBSD/OpenBSD code for establishing a suspend
hook as it will never be used on FreeBSD.
o Also probe Apple Intrepid 2 GMAC and Apple Shasta GMAC, add support for
Apple K2 GMAC. Based on OpenBSD.
o Add support for Sun GBE/P cards, or in other words actually add support
for cards based on GEM to gem(4). This mainly consists of adding support
for the TBI of these chips. Along with this the PHY selection code was
rewritten to hardcode the PHY number for certain configurations as for
example the PHY of the on-board ERI of Blade 1000 shows up twice causing
no link as the second incarnation is isolated.
These changes were ported from OpenBSD with some additional improvements
and modulo some bugs.
o Add code to if_gem_pci.c allowing to read the MAC-address from the VPD on
systems without Open Firmware.
This is an improved version of my variant of the respective code in
if_hme_pci.c
o Now that gem(4) is MI enable it for all archs.
Pointed out by: yongari [1]
Suggested by: rwatson [2], yongari [3]
Tested on: i386 (GEM), powerpc (GMACs by marcel and yongari),
sparc64 (ERI and GEM)
Reviewed by: yongari
Approved by: re (kensmith)
2007-09-26 21:14:18 +00:00
|
|
|
gem \
|
2003-05-31 18:36:41 +00:00
|
|
|
geom \
|
2008-08-09 14:52:31 +00:00
|
|
|
${_glxsb} \
|
2003-06-17 16:12:50 +00:00
|
|
|
hatm \
|
2002-10-04 20:42:36 +00:00
|
|
|
hifn \
|
2004-08-14 22:40:16 +00:00
|
|
|
hme \
|
2007-05-09 15:55:45 +00:00
|
|
|
${_hptiop} \
|
2004-10-24 08:53:40 +00:00
|
|
|
${_hptmv} \
|
2007-12-15 00:56:17 +00:00
|
|
|
${_hptrr} \
|
2005-04-20 22:03:33 +00:00
|
|
|
hwpmc \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_i2c} \
|
|
|
|
${_ibcs2} \
|
2004-05-11 18:21:38 +00:00
|
|
|
${_ichwd} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ida} \
|
|
|
|
${_ie} \
|
2005-06-05 03:32:53 +00:00
|
|
|
if_bridge \
|
2001-07-15 04:55:37 +00:00
|
|
|
if_disc \
|
2007-03-26 04:39:18 +00:00
|
|
|
if_edsc \
|
2001-07-15 04:55:37 +00:00
|
|
|
if_ef \
|
2002-10-21 00:38:18 +00:00
|
|
|
if_faith \
|
2001-07-15 04:55:37 +00:00
|
|
|
if_gif \
|
2002-09-06 17:18:53 +00:00
|
|
|
if_gre \
|
2007-04-17 00:35:11 +00:00
|
|
|
if_lagg \
|
Throw the switch on the new driver generation/loading mechanism. From
here on in, if_ndis.ko will be pre-built as a module, and can be built
into a static kernel (though it's not part of GENERIC). Drivers are
created using the new ndisgen(8) script, which uses ndiscvt(8) under
the covers, along with a few other tools. The result is a driver module
that can be kldloaded into the kernel.
A driver with foo.inf and foo.sys files will be converted into
foo_sys.ko (and foo_sys.o, for those who want/need to make static
kernels). This module contains all of the necessary info from the
.INF file and the driver binary image, converted into an ELF module.
You can kldload this module (or add it to /boot/loader.conf) to have
it loaded automatically. Any required firmware files can be bundled
into the module as well (or converted/loaded separately).
Also, add a workaround for a problem in NdisMSleep(). During system
bootstrap (cold == 1), msleep() always returns 0 without actually
sleeping. The Intel 2200BG driver uses NdisMSleep() to wait for
the NIC's firmware to come to life, and fails to load if NdisMSleep()
doesn't actually delay. As a workaround, if msleep() (and hence
ndis_thsuspend()) returns 0, use a hard DELAY() to sleep instead).
This is not really the right thing to do, but we can't really do much
else. At the very least, this makes the Intel driver happy.
There are probably other drivers that fail in this way during bootstrap.
Unfortunately, the only workaround for those is to avoid pre-loading
them and kldload them once the system is running instead.
2005-04-24 20:21:22 +00:00
|
|
|
${_if_ndis} \
|
2001-07-15 04:55:37 +00:00
|
|
|
if_stf \
|
|
|
|
if_tap \
|
|
|
|
if_tun \
|
2001-09-05 23:47:46 +00:00
|
|
|
if_vlan \
|
2008-02-29 22:42:29 +00:00
|
|
|
${_igb} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_iir} \
|
2004-08-01 11:40:54 +00:00
|
|
|
${_io} \
|
2004-10-25 20:02:34 +00:00
|
|
|
ipdivert \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ipfilter} \
|
2001-07-15 04:55:37 +00:00
|
|
|
ipfw \
|
2008-02-29 22:28:18 +00:00
|
|
|
ipfw_nat \
|
2006-02-13 17:56:24 +00:00
|
|
|
${_ipmi} \
|
2007-10-15 08:26:12 +00:00
|
|
|
ip_mroute_mod \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ips} \
|
2006-03-15 20:58:44 +00:00
|
|
|
${_ipw} \
|
2007-03-02 11:42:56 +00:00
|
|
|
${_ipwfw} \
|
2007-07-24 16:58:18 +00:00
|
|
|
iscsi \
|
2002-10-31 19:50:18 +00:00
|
|
|
isp \
|
2001-07-15 04:55:37 +00:00
|
|
|
ispfw \
|
2006-03-15 20:58:44 +00:00
|
|
|
${_iwi} \
|
2007-03-02 11:42:56 +00:00
|
|
|
${_iwifw} \
|
2008-04-29 21:36:17 +00:00
|
|
|
${_iwn} \
|
|
|
|
${_iwnfw} \
|
2006-08-18 10:20:15 +00:00
|
|
|
${_ixgb} \
|
2008-05-27 01:54:45 +00:00
|
|
|
jme \
|
2001-07-15 04:55:37 +00:00
|
|
|
joy \
|
2008-04-12 14:20:22 +00:00
|
|
|
${_k8temp} \
|
2005-07-14 23:04:23 +00:00
|
|
|
kbdmux \
|
2008-03-27 11:54:20 +00:00
|
|
|
krpc \
|
2001-07-15 04:55:37 +00:00
|
|
|
kue \
|
2006-01-31 22:34:13 +00:00
|
|
|
le \
|
2001-07-15 04:55:37 +00:00
|
|
|
lge \
|
2005-05-06 14:47:54 +00:00
|
|
|
libalias \
|
2001-12-12 10:11:16 +00:00
|
|
|
libiconv \
|
2003-07-15 08:59:38 +00:00
|
|
|
libmbpool \
|
2001-07-15 04:55:37 +00:00
|
|
|
libmchain \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_linprocfs} \
|
2006-05-09 22:27:01 +00:00
|
|
|
${_linsysfs} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_linux} \
|
2005-10-03 07:05:34 +00:00
|
|
|
lmc \
|
2001-11-03 08:20:44 +00:00
|
|
|
lpt \
|
2002-08-01 17:41:27 +00:00
|
|
|
mac_biba \
|
|
|
|
mac_bsdextended \
|
|
|
|
mac_ifoff \
|
2002-11-26 17:35:44 +00:00
|
|
|
mac_lomac \
|
2002-08-01 17:41:27 +00:00
|
|
|
mac_mls \
|
|
|
|
mac_none \
|
2002-10-23 23:36:26 +00:00
|
|
|
mac_partition \
|
2003-03-02 23:01:42 +00:00
|
|
|
mac_portacl \
|
2002-08-01 17:41:27 +00:00
|
|
|
mac_seeotheruids \
|
2003-08-21 16:48:39 +00:00
|
|
|
mac_stub \
|
2002-08-01 17:41:27 +00:00
|
|
|
mac_test \
|
2008-04-01 01:55:19 +00:00
|
|
|
malo \
|
2002-10-04 07:15:34 +00:00
|
|
|
mcd \
|
2001-07-15 04:55:37 +00:00
|
|
|
md \
|
2004-08-02 19:21:51 +00:00
|
|
|
mem \
|
2006-03-29 09:57:22 +00:00
|
|
|
mfi \
|
2001-07-15 04:55:37 +00:00
|
|
|
mii \
|
|
|
|
mlx \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_mly} \
|
2008-10-21 20:33:40 +00:00
|
|
|
mmc \
|
|
|
|
mmcsd \
|
2002-10-31 19:39:23 +00:00
|
|
|
mpt \
|
2005-11-26 12:46:01 +00:00
|
|
|
mqueue \
|
2002-10-06 08:07:40 +00:00
|
|
|
msdosfs \
|
2003-09-26 20:26:25 +00:00
|
|
|
msdosfs_iconv \
|
2005-10-14 15:12:45 +00:00
|
|
|
${_mse} \
|
2006-12-13 02:37:48 +00:00
|
|
|
msk \
|
2007-07-19 16:16:00 +00:00
|
|
|
mxge \
|
2003-02-27 14:49:56 +00:00
|
|
|
my \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ncp} \
|
|
|
|
${_ncv} \
|
|
|
|
${_ndis} \
|
2004-08-18 11:59:28 +00:00
|
|
|
netgraph \
|
2006-06-26 23:41:07 +00:00
|
|
|
${_nfe} \
|
2001-09-18 23:32:09 +00:00
|
|
|
nfsclient \
|
2008-03-27 11:54:20 +00:00
|
|
|
nfslockd \
|
2001-09-18 23:32:09 +00:00
|
|
|
nfsserver \
|
2001-07-15 04:55:37 +00:00
|
|
|
nge \
|
|
|
|
nmdm \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_nsp} \
|
2001-07-15 04:55:37 +00:00
|
|
|
ntfs \
|
2003-09-26 20:26:25 +00:00
|
|
|
ntfs_iconv \
|
2001-07-15 04:55:37 +00:00
|
|
|
nullfs \
|
2005-10-14 15:12:45 +00:00
|
|
|
${_nve} \
|
2007-10-26 03:23:54 +00:00
|
|
|
${_nvram} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_nwfs} \
|
2007-10-15 08:26:12 +00:00
|
|
|
${_nxge} \
|
2008-05-23 22:36:12 +00:00
|
|
|
${_opensolaris} \
|
2008-10-09 19:22:00 +00:00
|
|
|
ohci \
|
2005-08-18 00:30:22 +00:00
|
|
|
${_padlock} \
|
2003-07-15 11:57:24 +00:00
|
|
|
patm \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_pccard} \
|
|
|
|
${_pcfclock} \
|
2001-07-15 04:55:37 +00:00
|
|
|
pcn \
|
2004-03-08 22:03:29 +00:00
|
|
|
${_pf} \
|
2006-02-05 17:17:32 +00:00
|
|
|
${_pflog} \
|
2001-11-03 08:20:44 +00:00
|
|
|
plip \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_pmc} \
|
2001-07-15 04:55:37 +00:00
|
|
|
portalfs \
|
2001-11-03 08:20:44 +00:00
|
|
|
ppbus \
|
2006-06-18 05:05:46 +00:00
|
|
|
ppc \
|
2001-11-03 08:20:44 +00:00
|
|
|
ppi \
|
|
|
|
pps \
|
2002-02-04 20:16:50 +00:00
|
|
|
procfs \
|
|
|
|
pseudofs \
|
2005-01-27 11:07:13 +00:00
|
|
|
${_pst} \
|
2006-06-18 05:05:46 +00:00
|
|
|
puc \
|
2005-04-18 18:47:38 +00:00
|
|
|
ral \
|
2001-07-15 04:55:37 +00:00
|
|
|
${_random} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ray} \
|
2003-01-15 20:06:38 +00:00
|
|
|
rc4 \
|
2008-05-05 20:41:54 +00:00
|
|
|
${_rdma} \
|
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
|
|
|
re \
|
2005-06-21 13:01:14 +00:00
|
|
|
reiserfs \
|
2001-07-15 04:55:37 +00:00
|
|
|
rl \
|
2003-05-03 10:16:56 +00:00
|
|
|
rue \
|
2007-05-06 10:07:21 +00:00
|
|
|
rum \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_s3} \
|
|
|
|
${_safe} \
|
2008-09-10 18:36:58 +00:00
|
|
|
${_sbni} \
|
2006-03-30 18:39:24 +00:00
|
|
|
scc \
|
2003-06-23 20:52:03 +00:00
|
|
|
scd \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_scsi_low} \
|
2008-10-21 20:33:40 +00:00
|
|
|
sdhci \
|
2006-11-11 16:49:29 +00:00
|
|
|
sem \
|
2001-07-15 04:55:37 +00:00
|
|
|
sf \
|
2008-10-09 19:22:00 +00:00
|
|
|
slhci \
|
2001-07-15 04:55:37 +00:00
|
|
|
sis \
|
|
|
|
sk \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_smbfs} \
|
2001-07-15 04:55:37 +00:00
|
|
|
sn \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_snc} \
|
2008-11-05 15:04:03 +00:00
|
|
|
snp \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_sound} \
|
|
|
|
${_speaker} \
|
|
|
|
${_splash} \
|
|
|
|
${_sppp} \
|
|
|
|
${_sr} \
|
2001-07-15 04:55:37 +00:00
|
|
|
ste \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_stg} \
|
2006-07-25 00:45:55 +00:00
|
|
|
stge \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_streams} \
|
2001-07-15 04:55:37 +00:00
|
|
|
sym \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_syscons} \
|
2001-07-15 04:55:37 +00:00
|
|
|
sysvipc \
|
|
|
|
ti \
|
|
|
|
tl \
|
2007-06-16 01:56:05 +00:00
|
|
|
${_tmpfs} \
|
2002-10-13 18:44:26 +00:00
|
|
|
trm \
|
2004-04-27 17:57:45 +00:00
|
|
|
${_twa} \
|
2002-10-21 00:38:18 +00:00
|
|
|
twe \
|
2001-07-15 04:55:37 +00:00
|
|
|
tx \
|
2001-07-23 20:44:54 +00:00
|
|
|
txp \
|
2008-10-09 21:25:01 +00:00
|
|
|
u3g \
|
2006-11-15 09:13:25 +00:00
|
|
|
uark \
|
2006-03-31 01:50:23 +00:00
|
|
|
uart \
|
2002-10-20 20:35:14 +00:00
|
|
|
ubsa \
|
2002-10-04 20:42:36 +00:00
|
|
|
ubsec \
|
2002-03-18 18:23:42 +00:00
|
|
|
ucom \
|
2004-02-28 00:12:47 +00:00
|
|
|
udav \
|
2001-07-15 04:55:37 +00:00
|
|
|
udbp \
|
2002-04-14 16:36:49 +00:00
|
|
|
udf \
|
2003-11-07 09:38:05 +00:00
|
|
|
udf_iconv \
|
2002-10-21 00:38:18 +00:00
|
|
|
ufm \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_ufs} \
|
2008-09-12 03:45:08 +00:00
|
|
|
ufoma \
|
2002-08-11 23:32:33 +00:00
|
|
|
uftdi \
|
2001-07-15 04:55:37 +00:00
|
|
|
ugen \
|
2008-10-09 19:22:00 +00:00
|
|
|
uhci \
|
2001-07-15 04:55:37 +00:00
|
|
|
uhid \
|
2008-08-24 21:27:01 +00:00
|
|
|
uipaq \
|
2001-07-15 04:55:37 +00:00
|
|
|
ukbd \
|
|
|
|
ulpt \
|
|
|
|
umass \
|
2003-06-28 05:46:16 +00:00
|
|
|
umct \
|
2001-07-15 04:55:37 +00:00
|
|
|
umodem \
|
|
|
|
ums \
|
|
|
|
unionfs \
|
2008-08-11 04:46:14 +00:00
|
|
|
${_upgt} \
|
2002-03-18 18:23:42 +00:00
|
|
|
uplcom \
|
2005-04-18 18:47:38 +00:00
|
|
|
ural \
|
2001-07-15 04:55:37 +00:00
|
|
|
urio \
|
|
|
|
usb \
|
Bring in USB4BSD, Hans Petter Selasky rework of the USB stack
that includes significant features and SMP safety.
This commit includes a more or less complete rewrite of the *BSD USB
stack, including Host Controller and Device Controller drivers and
updating all existing USB drivers to use the new USB API:
1) A brief feature list:
- A new and mutex enabled USB API.
- Many USB drivers are now running Giant free.
- Linux USB kernel compatibility layer.
- New UGEN backend and libusb library, finally solves the "driver
unloading" problem. The new BSD licensed libusb20 library is fully
compatible with libusb-0.1.12 from sourceforge.
- New "usbconfig" utility, for easy configuration of USB.
- Full support for Split transactions, which means you can use your
full speed USB audio device on a high speed USB HUB.
- Full support for HS ISOC transactions, which makes writing drivers
for various HS webcams possible, for example.
- Full support for USB on embedded platforms, mostly cache flushing
and buffer invalidating stuff.
- Safer parsing of USB descriptors.
- Autodetect of annoying USB install disks.
- Support for USB device side mode, also called USB gadget mode,
using the same API like the USB host side. In other words the new
USB stack is symmetric with regard to host and device side.
- Support for USB transfers like I/O vectors, means more throughput
and less interrupts.
- ... see the FreeBSD quarterly status reports under "USB project"
2) To enable the driver in the default kernel build:
2.a) Remove all existing USB device options from your kernel config
file.
2.b) Add the following USB device options to your kernel configuration
file:
# USB core support
device usb2_core
# USB controller support
device usb2_controller
device usb2_controller_ehci
device usb2_controller_ohci
device usb2_controller_uhci
# USB mass storage support
device usb2_storage
device usb2_storage_mass
# USB ethernet support, requires miibus
device usb2_ethernet
device usb2_ethernet_aue
device usb2_ethernet_axe
device usb2_ethernet_cdce
device usb2_ethernet_cue
device usb2_ethernet_kue
device usb2_ethernet_rue
device usb2_ethernet_dav
# USB wireless LAN support
device usb2_wlan
device usb2_wlan_rum
device usb2_wlan_ral
device usb2_wlan_zyd
# USB serial device support
device usb2_serial
device usb2_serial_ark
device usb2_serial_bsa
device usb2_serial_bser
device usb2_serial_chcom
device usb2_serial_cycom
device usb2_serial_foma
device usb2_serial_ftdi
device usb2_serial_gensa
device usb2_serial_ipaq
device usb2_serial_lpt
device usb2_serial_mct
device usb2_serial_modem
device usb2_serial_moscom
device usb2_serial_plcom
device usb2_serial_visor
device usb2_serial_vscom
# USB bluetooth support
device usb2_bluetooth
device usb2_bluetooth_ng
# USB input device support
device usb2_input
device usb2_input_hid
device usb2_input_kbd
device usb2_input_ms
# USB sound and MIDI device support
device usb2_sound
2) To enable the driver at runtime:
2.a) Unload all existing USB modules. If USB is compiled into the
kernel then you might have to build a new kernel.
2.b) Load the "usb2_xxx.ko" modules under /boot/kernel having the same
base name like the kernel device option.
Submitted by: Hans Petter Selasky hselasky at c2i dot net
Reviewed by: imp, alfred
2008-11-04 02:31:03 +00:00
|
|
|
usb2 \
|
2000-10-25 10:34:38 +00:00
|
|
|
uscanner \
|
2008-03-05 14:13:30 +00:00
|
|
|
uslcom \
|
2003-06-12 14:28:32 +00:00
|
|
|
utopia \
|
2002-07-30 17:44:28 +00:00
|
|
|
uvisor \
|
2002-03-18 18:23:42 +00:00
|
|
|
uvscom \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_vesa} \
|
2004-09-10 20:57:46 +00:00
|
|
|
vge \
|
2004-11-16 17:19:04 +00:00
|
|
|
vkbd \
|
2005-02-03 06:12:43 +00:00
|
|
|
${_vpo} \
|
2001-07-15 04:55:37 +00:00
|
|
|
vr \
|
|
|
|
vx \
|
|
|
|
wb \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_wi} \
|
2003-01-15 20:06:38 +00:00
|
|
|
wlan \
|
2005-03-09 15:53:27 +00:00
|
|
|
wlan_acl \
|
2006-11-26 19:55:26 +00:00
|
|
|
wlan_amrr \
|
2004-12-08 17:38:38 +00:00
|
|
|
wlan_ccmp \
|
2008-04-20 20:35:46 +00:00
|
|
|
wlan_rssadapt \
|
2004-12-08 17:38:38 +00:00
|
|
|
wlan_tkip \
|
|
|
|
wlan_wep \
|
|
|
|
wlan_xauth \
|
2007-11-08 22:09:37 +00:00
|
|
|
${_wpi} \
|
|
|
|
${_wpifw} \
|
2004-01-16 15:55:29 +00:00
|
|
|
${_xe} \
|
2005-12-12 01:37:57 +00:00
|
|
|
xfs \
|
2006-02-27 16:50:51 +00:00
|
|
|
xl \
|
2007-04-06 02:13:30 +00:00
|
|
|
${_zfs} \
|
2007-10-31 18:47:04 +00:00
|
|
|
zlib \
|
|
|
|
zyd
|
1999-11-22 03:48:33 +00:00
|
|
|
|
2005-02-03 06:12:43 +00:00
|
|
|
.if ${MACHINE_ARCH} != "powerpc"
|
2005-07-10 11:47:04 +00:00
|
|
|
_syscons= syscons
|
2005-02-03 08:07:22 +00:00
|
|
|
_vpo= vpo
|
2005-02-03 06:12:43 +00:00
|
|
|
.endif
|
|
|
|
|
2004-01-16 15:55:29 +00:00
|
|
|
.if defined(ALL_MODULES)
|
|
|
|
_ufs= ufs
|
2003-06-24 13:35:46 +00:00
|
|
|
.endif
|
2002-10-01 19:05:18 +00:00
|
|
|
|
2006-03-17 18:54:44 +00:00
|
|
|
.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
|
2004-01-16 15:55:29 +00:00
|
|
|
.if exists(${.CURDIR}/../opencrypto)
|
|
|
|
_crypto= crypto
|
|
|
|
_cryptodev= cryptodev
|
|
|
|
.endif
|
|
|
|
.if exists(${.CURDIR}/../crypto)
|
|
|
|
_random= random
|
|
|
|
.endif
|
2002-03-21 09:15:39 +00:00
|
|
|
.endif
|
|
|
|
|
2006-03-17 18:54:44 +00:00
|
|
|
.if ${MK_IPFILTER} != "no" || defined(ALL_MODULES)
|
2004-01-16 15:55:29 +00:00
|
|
|
_ipfilter= ipfilter
|
2002-10-21 00:38:18 +00:00
|
|
|
.endif
|
|
|
|
|
2006-03-17 18:54:44 +00:00
|
|
|
.if ${MK_PF} != "no" || defined(ALL_MODULES)
|
2004-03-08 22:03:29 +00:00
|
|
|
_pf= pf
|
2006-02-05 17:17:32 +00:00
|
|
|
_pflog= pflog
|
2004-03-08 22:03:29 +00:00
|
|
|
.endif
|
|
|
|
|
2004-01-16 15:55:29 +00:00
|
|
|
.if ${MACHINE_ARCH} == "i386"
|
1998-11-04 17:15:07 +00:00
|
|
|
# XXX some of these can move to the general case when de-i386'ed
|
2002-09-26 05:54:24 +00:00
|
|
|
# XXX some of these can move now, but are untested on other architectures.
|
2004-01-16 15:55:29 +00:00
|
|
|
_3dfx= 3dfx
|
2006-03-03 21:37:38 +00:00
|
|
|
_3dfx_linux= 3dfx_linux
|
2004-01-16 15:55:29 +00:00
|
|
|
_agp= agp
|
|
|
|
_aic= aic
|
|
|
|
_amd= amd
|
2006-02-05 17:38:28 +00:00
|
|
|
_an= an
|
2004-01-16 15:55:29 +00:00
|
|
|
_aout= aout
|
|
|
|
_apm= apm
|
|
|
|
_ar= ar
|
|
|
|
_arcnet= arcnet
|
|
|
|
_bktr= bktr
|
2005-09-27 13:10:24 +00:00
|
|
|
_cardbus= cardbus
|
|
|
|
_cbb= cbb
|
2006-01-31 23:11:35 +00:00
|
|
|
_ce= ce
|
2004-01-16 15:55:29 +00:00
|
|
|
_coff= coff
|
2004-05-17 14:24:52 +00:00
|
|
|
_cp= cp
|
2008-08-08 16:26:53 +00:00
|
|
|
_cpuctl= cpuctl
|
2005-02-05 08:01:10 +00:00
|
|
|
_cpufreq= cpufreq
|
2005-12-22 16:16:42 +00:00
|
|
|
_cs= cs
|
2008-05-23 22:36:12 +00:00
|
|
|
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
|
|
|
|
_cyclic= cyclic
|
|
|
|
.endif
|
2008-08-23 21:00:40 +00:00
|
|
|
_dpms= dpms
|
2004-01-16 15:55:29 +00:00
|
|
|
_drm= drm
|
2008-05-23 22:36:12 +00:00
|
|
|
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
|
|
|
|
_dtrace= dtrace
|
|
|
|
.endif
|
2004-01-16 15:55:29 +00:00
|
|
|
_ed= ed
|
|
|
|
_elink= elink
|
|
|
|
_em= em
|
|
|
|
_ep= ep
|
2008-06-20 19:28:33 +00:00
|
|
|
_et= et
|
2005-09-27 13:10:24 +00:00
|
|
|
_exca= exca
|
2004-01-16 15:55:29 +00:00
|
|
|
_ext2fs= ext2fs
|
|
|
|
_fe= fe
|
2008-08-09 14:52:31 +00:00
|
|
|
_glxsb= glxsb
|
2004-01-16 15:55:29 +00:00
|
|
|
_i2c= i2c
|
|
|
|
_ibcs2= ibcs2
|
|
|
|
_ie= ie
|
Throw the switch on the new driver generation/loading mechanism. From
here on in, if_ndis.ko will be pre-built as a module, and can be built
into a static kernel (though it's not part of GENERIC). Drivers are
created using the new ndisgen(8) script, which uses ndiscvt(8) under
the covers, along with a few other tools. The result is a driver module
that can be kldloaded into the kernel.
A driver with foo.inf and foo.sys files will be converted into
foo_sys.ko (and foo_sys.o, for those who want/need to make static
kernels). This module contains all of the necessary info from the
.INF file and the driver binary image, converted into an ELF module.
You can kldload this module (or add it to /boot/loader.conf) to have
it loaded automatically. Any required firmware files can be bundled
into the module as well (or converted/loaded separately).
Also, add a workaround for a problem in NdisMSleep(). During system
bootstrap (cold == 1), msleep() always returns 0 without actually
sleeping. The Intel 2200BG driver uses NdisMSleep() to wait for
the NIC's firmware to come to life, and fails to load if NdisMSleep()
doesn't actually delay. As a workaround, if msleep() (and hence
ndis_thsuspend()) returns 0, use a hard DELAY() to sleep instead).
This is not really the right thing to do, but we can't really do much
else. At the very least, this makes the Intel driver happy.
There are probably other drivers that fail in this way during bootstrap.
Unfortunately, the only workaround for those is to avoid pre-loading
them and kldload them once the system is running instead.
2005-04-24 20:21:22 +00:00
|
|
|
_if_ndis= if_ndis
|
2008-02-29 22:52:59 +00:00
|
|
|
_igb= igb
|
2004-08-01 11:40:54 +00:00
|
|
|
_io= io
|
2004-01-16 15:55:29 +00:00
|
|
|
_linprocfs= linprocfs
|
2006-05-09 22:27:01 +00:00
|
|
|
_linsysfs= linsysfs
|
2004-01-16 15:55:29 +00:00
|
|
|
_linux= linux
|
2004-12-12 20:05:50 +00:00
|
|
|
_mse= mse
|
2006-03-20 14:24:58 +00:00
|
|
|
.if ${MK_NCP} != "no"
|
2004-01-16 15:55:29 +00:00
|
|
|
_ncp= ncp
|
2006-03-20 14:24:58 +00:00
|
|
|
.endif
|
2004-01-16 15:55:29 +00:00
|
|
|
_ncv= ncv
|
|
|
|
_ndis= ndis
|
|
|
|
_nsp= nsp
|
2006-03-20 14:24:58 +00:00
|
|
|
.if ${MK_NCP} != "no"
|
2004-01-16 15:55:29 +00:00
|
|
|
_nwfs= nwfs
|
2006-03-20 14:24:58 +00:00
|
|
|
.endif
|
2008-05-23 22:36:12 +00:00
|
|
|
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
|
|
|
|
_opensolaris= opensolaris
|
|
|
|
.endif
|
2004-01-16 15:55:29 +00:00
|
|
|
_pccard= pccard
|
|
|
|
_pcfclock= pcfclock
|
2005-01-27 11:07:13 +00:00
|
|
|
_pst= pst
|
2004-11-15 16:33:18 +00:00
|
|
|
_ray= ray
|
2008-05-05 20:41:54 +00:00
|
|
|
_rdma= rdma
|
2004-01-16 15:55:29 +00:00
|
|
|
_safe= safe
|
2008-09-10 18:36:58 +00:00
|
|
|
_sbni= sbni
|
2004-01-16 15:55:29 +00:00
|
|
|
_scsi_low= scsi_low
|
|
|
|
_smbfs= smbfs
|
|
|
|
_sound= sound
|
|
|
|
_speaker= speaker
|
|
|
|
_splash= splash
|
|
|
|
_sppp= sppp
|
|
|
|
_sr= sr
|
|
|
|
_stg= stg
|
|
|
|
_streams= streams
|
2007-10-15 08:26:12 +00:00
|
|
|
_tmpfs= tmpfs
|
2008-08-11 04:46:14 +00:00
|
|
|
_upgt= upgt
|
2004-01-16 15:55:29 +00:00
|
|
|
_wi= wi
|
|
|
|
_xe= xe
|
2007-04-07 19:12:10 +00:00
|
|
|
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
|
|
|
|
_zfs= zfs
|
|
|
|
.endif
|
2002-11-07 15:01:12 +00:00
|
|
|
.if ${MACHINE} == "i386"
|
2004-01-16 15:55:29 +00:00
|
|
|
_aac= aac
|
|
|
|
_acpi= acpi
|
2004-06-30 13:09:13 +00:00
|
|
|
_ahb= ahb
|
2005-04-01 17:40:39 +00:00
|
|
|
_arcmsr= arcmsr
|
2007-11-07 20:08:15 +00:00
|
|
|
_asmc= asmc
|
2004-01-16 15:55:29 +00:00
|
|
|
_asr= asr
|
|
|
|
_bios= bios
|
|
|
|
_ciss= ciss
|
|
|
|
_cm= cm
|
2008-03-06 08:09:45 +00:00
|
|
|
_cmx= cmx
|
2007-10-26 13:42:17 +00:00
|
|
|
_coretemp= coretemp
|
2004-03-25 17:20:45 +00:00
|
|
|
_ctau= ctau
|
2004-01-16 15:55:29 +00:00
|
|
|
_dpt= dpt
|
|
|
|
_ex= ex
|
2007-05-09 15:55:45 +00:00
|
|
|
_hptiop= hptiop
|
2004-10-24 08:53:40 +00:00
|
|
|
_hptmv= hptmv
|
2007-12-15 00:56:17 +00:00
|
|
|
_hptrr= hptrr
|
2004-05-13 11:13:55 +00:00
|
|
|
_ichwd= ichwd
|
2004-01-16 15:55:29 +00:00
|
|
|
_ida= ida
|
|
|
|
_iir= iir
|
2006-02-14 12:55:07 +00:00
|
|
|
_ipmi= ipmi
|
2004-01-16 15:55:29 +00:00
|
|
|
_ips= ips
|
2006-03-17 13:06:19 +00:00
|
|
|
_ipw= ipw
|
2007-03-02 11:42:56 +00:00
|
|
|
_ipwfw= ipwfw
|
2006-03-17 13:06:19 +00:00
|
|
|
_iwi= iwi
|
2007-03-02 11:42:56 +00:00
|
|
|
_iwifw= iwifw
|
2008-04-29 21:36:17 +00:00
|
|
|
_iwn= iwn
|
|
|
|
_iwnfw= iwnfw
|
2007-10-16 11:39:28 +00:00
|
|
|
_ixgb= ixgb
|
2008-09-09 22:32:30 +00:00
|
|
|
_k8temp= k8temp
|
2004-01-16 15:55:29 +00:00
|
|
|
_mly= mly
|
2006-06-26 23:41:07 +00:00
|
|
|
_nfe= nfe
|
2005-03-12 10:41:58 +00:00
|
|
|
_nve= nve
|
2007-10-26 13:42:17 +00:00
|
|
|
_nvram= nvram
|
2007-06-29 22:47:18 +00:00
|
|
|
_nxge= nxge
|
2007-11-08 22:09:37 +00:00
|
|
|
_wpi= wpi
|
|
|
|
_wpifw= wpifw
|
2006-03-17 18:54:44 +00:00
|
|
|
.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
|
2005-08-18 00:30:22 +00:00
|
|
|
.if exists(${.CURDIR}/../crypto/via)
|
|
|
|
_padlock= padlock
|
|
|
|
.endif
|
|
|
|
.endif
|
2004-01-16 15:55:29 +00:00
|
|
|
_s3= s3
|
2004-04-27 17:57:45 +00:00
|
|
|
_twa= twa
|
2004-01-16 15:55:29 +00:00
|
|
|
_vesa= vesa
|
2002-11-07 15:01:12 +00:00
|
|
|
.elif ${MACHINE} == "pc98"
|
2004-01-16 15:55:29 +00:00
|
|
|
_canbepm= canbepm
|
|
|
|
_canbus= canbus
|
|
|
|
_pmc= pmc
|
|
|
|
_snc= snc
|
2002-11-07 15:01:12 +00:00
|
|
|
.endif
|
2002-09-16 08:32:48 +00:00
|
|
|
.endif
|
|
|
|
|
2004-01-28 04:15:10 +00:00
|
|
|
.if ${MACHINE_ARCH} == "amd64"
|
2004-08-30 03:37:36 +00:00
|
|
|
_aac= aac
|
2007-03-22 18:16:43 +00:00
|
|
|
_acpi= acpi
|
2004-08-16 12:25:48 +00:00
|
|
|
_agp= agp
|
2006-02-05 17:38:28 +00:00
|
|
|
_an= an
|
2005-03-31 20:21:43 +00:00
|
|
|
_arcmsr= arcmsr
|
2007-11-07 20:08:15 +00:00
|
|
|
_asmc= asmc
|
2006-05-24 16:26:29 +00:00
|
|
|
_cardbus= cardbus
|
|
|
|
_cbb= cbb
|
2008-03-06 08:09:45 +00:00
|
|
|
_cmx= cmx
|
2004-08-29 10:05:00 +00:00
|
|
|
_ciss= ciss
|
2007-08-15 19:26:03 +00:00
|
|
|
_coretemp= coretemp
|
2008-08-08 16:26:53 +00:00
|
|
|
_cpuctl= cpuctl
|
2005-02-05 08:01:10 +00:00
|
|
|
_cpufreq= cpufreq
|
2008-05-23 22:36:12 +00:00
|
|
|
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
|
|
|
|
_cyclic= cyclic
|
|
|
|
.endif
|
2004-08-16 12:25:48 +00:00
|
|
|
_drm= drm
|
2008-05-23 22:36:12 +00:00
|
|
|
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
|
|
|
|
_dtrace= dtrace
|
|
|
|
.endif
|
2005-12-23 21:54:56 +00:00
|
|
|
_ed= ed
|
2008-06-20 19:28:33 +00:00
|
|
|
_et= et
|
2004-08-29 10:05:00 +00:00
|
|
|
_em= em
|
2006-05-24 16:26:29 +00:00
|
|
|
_exca= exca
|
2004-08-29 10:05:00 +00:00
|
|
|
_ext2fs= ext2fs
|
2007-05-09 15:55:45 +00:00
|
|
|
_hptiop= hptiop
|
2005-09-08 03:29:18 +00:00
|
|
|
_hptmv= hptmv
|
2007-12-15 00:56:17 +00:00
|
|
|
_hptrr= hptrr
|
2004-08-29 10:05:00 +00:00
|
|
|
_i2c= i2c
|
2005-06-30 05:37:48 +00:00
|
|
|
_ichwd= ichwd
|
2004-08-29 10:05:00 +00:00
|
|
|
_ida= ida
|
Throw the switch on the new driver generation/loading mechanism. From
here on in, if_ndis.ko will be pre-built as a module, and can be built
into a static kernel (though it's not part of GENERIC). Drivers are
created using the new ndisgen(8) script, which uses ndiscvt(8) under
the covers, along with a few other tools. The result is a driver module
that can be kldloaded into the kernel.
A driver with foo.inf and foo.sys files will be converted into
foo_sys.ko (and foo_sys.o, for those who want/need to make static
kernels). This module contains all of the necessary info from the
.INF file and the driver binary image, converted into an ELF module.
You can kldload this module (or add it to /boot/loader.conf) to have
it loaded automatically. Any required firmware files can be bundled
into the module as well (or converted/loaded separately).
Also, add a workaround for a problem in NdisMSleep(). During system
bootstrap (cold == 1), msleep() always returns 0 without actually
sleeping. The Intel 2200BG driver uses NdisMSleep() to wait for
the NIC's firmware to come to life, and fails to load if NdisMSleep()
doesn't actually delay. As a workaround, if msleep() (and hence
ndis_thsuspend()) returns 0, use a hard DELAY() to sleep instead).
This is not really the right thing to do, but we can't really do much
else. At the very least, this makes the Intel driver happy.
There are probably other drivers that fail in this way during bootstrap.
Unfortunately, the only workaround for those is to avoid pre-loading
them and kldload them once the system is running instead.
2005-04-24 20:21:22 +00:00
|
|
|
_if_ndis= if_ndis
|
2008-02-29 22:52:59 +00:00
|
|
|
_igb= igb
|
2004-08-29 10:05:00 +00:00
|
|
|
_iir= iir
|
2004-08-01 11:40:54 +00:00
|
|
|
_io= io
|
2006-02-13 17:56:24 +00:00
|
|
|
_ipmi= ipmi
|
2004-08-29 10:05:00 +00:00
|
|
|
_ips= ips
|
2006-03-15 20:58:44 +00:00
|
|
|
_ipw= ipw
|
2007-03-02 11:42:56 +00:00
|
|
|
_ipwfw= ipwfw
|
2008-04-29 21:36:17 +00:00
|
|
|
_iwn= iwn
|
|
|
|
_iwnfw= iwnfw
|
2007-10-16 11:39:28 +00:00
|
|
|
_ixgb= ixgb
|
2008-04-12 14:20:22 +00:00
|
|
|
_k8temp= k8temp
|
2006-09-09 16:58:22 +00:00
|
|
|
_linprocfs= linprocfs
|
|
|
|
_linsysfs= linsysfs
|
2006-12-02 13:58:13 +00:00
|
|
|
_linux= linux
|
2004-08-29 10:05:00 +00:00
|
|
|
_mly= mly
|
Add support for Windows/x86-64 binaries to Project Evil.
Ville-Pertti Keinonen (will at exomi dot comohmygodnospampleasekthx)
deserves a big thanks for submitting initial patches to make it
work. I have mangled his contributions appropriately.
The main gotcha with Windows/x86-64 is that Microsoft uses a different
calling convention than everyone else. The standard ABI requires using
6 registers for argument passing, with other arguments on the stack.
Microsoft uses only 4 registers, and requires the caller to leave room
on the stack for the register arguments incase the callee needs to
spill them. Unlike x86, where Microsoft uses a mix of _cdecl, _stdcall
and _fastcall, all routines on Windows/x86-64 uses the same convention.
This unfortunately means that all the functions we export to the
driver require an intermediate translation wrapper. Similarly, we have
to wrap all calls back into the driver binary itself.
The original patches provided macros to wrap every single routine at
compile time, providing a secondary jump table with a customized
wrapper for each exported routine. I decided to use a different approach:
the call wrapper for each function is created from a template at
runtime, and the routine to jump to is patched into the wrapper as
it is created. The subr_pe module has been modified to patch in the
wrapped function instead of the original. (On x86, the wrapping
routine is a no-op.)
There are some minor API differences that had to be accounted for:
- KeAcquireSpinLock() is a real function on amd64, not a macro wrapper
around KfAcquireSpinLock()
- NdisFreeBuffer() is actually IoFreeMdl(). I had to change the whole
NDIS_BUFFER API a bit to accomodate this.
Bugs fixed along the way:
- IoAllocateMdl() always returned NULL
- kern_windrv.c:windrv_unload() wasn't releasing private driver object
extensions correctly (found thanks to memguard)
This has only been tested with the driver for the Broadcom 802.11g
chipset, which was the only Windows/x86-64 driver I could find.
2005-02-16 05:41:18 +00:00
|
|
|
_ndis= ndis
|
2006-06-26 23:41:07 +00:00
|
|
|
_nfe= nfe
|
2005-03-12 00:29:30 +00:00
|
|
|
_nve= nve
|
2007-10-26 03:23:54 +00:00
|
|
|
_nvram= nvram
|
2007-06-29 22:47:18 +00:00
|
|
|
_nxge= nxge
|
2008-05-23 22:36:12 +00:00
|
|
|
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
|
|
|
|
_opensolaris= opensolaris
|
|
|
|
.endif
|
2006-05-24 16:26:29 +00:00
|
|
|
_pccard= pccard
|
2008-05-05 20:41:54 +00:00
|
|
|
_rdma= rdma
|
2004-08-29 10:05:00 +00:00
|
|
|
_safe= safe
|
|
|
|
_scsi_low= scsi_low
|
|
|
|
_smbfs= smbfs
|
2004-08-29 09:14:18 +00:00
|
|
|
_sound= sound
|
2005-11-11 09:57:32 +00:00
|
|
|
_speaker= speaker
|
2004-08-29 10:05:00 +00:00
|
|
|
_sppp= sppp
|
2007-10-15 08:26:12 +00:00
|
|
|
_tmpfs= tmpfs
|
2004-08-29 10:05:00 +00:00
|
|
|
_twa= twa
|
2008-08-11 04:46:14 +00:00
|
|
|
_upgt= upgt
|
2006-05-26 03:45:29 +00:00
|
|
|
_wi= wi
|
2007-11-08 22:09:37 +00:00
|
|
|
_wpi= wpi
|
|
|
|
_wpifw= wpifw
|
2007-04-07 19:12:10 +00:00
|
|
|
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
|
|
|
|
_zfs= zfs
|
|
|
|
.endif
|
2004-01-28 04:15:10 +00:00
|
|
|
.endif
|
|
|
|
|
Build modules on ia64:
o Make the cam, cd9660 lomac and sound modules i386 and alpha
specific due to link problems (@gprel relocation when @ltoff
is required). Once resolved, these can be moved back to the
generic list.
o Build linprocfs only on those architectures that have the
linux module.
o Make the sppp module i386 and alpha specific due to compile
problems (pointers as switch cases). Once resolved, this can
be moved back to the generic list.
o Build all i386 specific modules, with the exception of those
mentioned above as being moved from the generic list to the
i386 list and those with dependencies on the linux module (aac)
or i386 dependent (ar, apm, atspeaker, fpu, gnufpu, ibcs2,
linux, ncv, nsp, netgraph, oltr, pecoff, s3, sbni, stg and
vesa).
o Don't build acpi as a module yet. It most be ported first.
Once ported, it can be added to the ia64 list.
o Don't build ipfilter yet due to compile errors (osreldate.h
not found).
2002-04-19 09:44:50 +00:00
|
|
|
.if ${MACHINE_ARCH} == "ia64"
|
Build the following modules on ia64 as well:
ar, asr, bktr, cardbus, cbb, ep, exca, hea, hfa, ipfilter, lomac,
netgraph, pccard, rc, sound, sppp, vinum.
2002-10-24 07:16:24 +00:00
|
|
|
# Modules not enabled on ia64 (as compared to i386) include:
|
2003-07-22 08:11:17 +00:00
|
|
|
# aac acpi aout apm atspeaker drm ibcs2 linprocfs linux ncv
|
2008-09-10 18:36:58 +00:00
|
|
|
# nsp s3 sbni stg vesa
|
2004-11-15 04:49:20 +00:00
|
|
|
# acpi is not enabled because it is broken as a module on ia64
|
2004-01-16 15:55:29 +00:00
|
|
|
_aic= aic
|
2005-01-27 01:12:58 +00:00
|
|
|
#_ar= ar not 64-bit clean
|
2007-10-15 08:26:12 +00:00
|
|
|
_an= an
|
2004-01-16 15:55:29 +00:00
|
|
|
_arcnet= arcnet
|
|
|
|
_asr= asr
|
|
|
|
_bktr= bktr
|
|
|
|
_cardbus= cardbus
|
|
|
|
_cbb= cbb
|
|
|
|
_ciss= ciss
|
|
|
|
_cm= cm
|
2008-03-06 08:09:45 +00:00
|
|
|
_cmx= cmx
|
2004-01-16 15:55:29 +00:00
|
|
|
_coff= coff
|
2005-04-13 02:20:17 +00:00
|
|
|
_cpufreq= cpufreq
|
2004-01-16 15:55:29 +00:00
|
|
|
_em= em
|
|
|
|
_ep= ep
|
|
|
|
_exca= exca
|
|
|
|
_fe= fe
|
2008-02-29 22:52:59 +00:00
|
|
|
_igb= igb
|
2004-01-16 15:55:29 +00:00
|
|
|
_iir= iir
|
|
|
|
_mly= mly
|
|
|
|
_pccard= pccard
|
|
|
|
_scsi_low= scsi_low
|
|
|
|
_smbfs= smbfs
|
|
|
|
_sound= sound
|
|
|
|
_splash= splash
|
|
|
|
_sppp= sppp
|
2005-01-27 01:45:15 +00:00
|
|
|
#_sr= sr not 64bit clean
|
2004-01-16 15:55:29 +00:00
|
|
|
_streams= streams
|
|
|
|
_wi= wi
|
|
|
|
_xe= xe
|
1999-12-15 13:14:23 +00:00
|
|
|
.endif
|
|
|
|
|
2004-01-16 15:55:29 +00:00
|
|
|
.if ${MACHINE_ARCH} == "powerpc"
|
2006-02-05 17:38:28 +00:00
|
|
|
_an= an
|
2008-06-07 22:58:32 +00:00
|
|
|
_bm= bm
|
2007-10-26 03:23:54 +00:00
|
|
|
_nvram= powermac_nvram
|
2005-09-19 08:13:43 +00:00
|
|
|
_smbfs= smbfs
|
2008-08-11 04:46:14 +00:00
|
|
|
_upgt= upgt
|
2003-01-09 16:37:37 +00:00
|
|
|
.endif
|
|
|
|
|
2003-01-08 18:45:04 +00:00
|
|
|
.if ${MACHINE_ARCH} == "sparc64"
|
2004-10-09 07:31:03 +00:00
|
|
|
_auxio= auxio
|
2005-11-09 08:46:02 +00:00
|
|
|
_em= em
|
2005-10-28 15:58:19 +00:00
|
|
|
_i2c= i2c
|
2008-02-29 22:52:59 +00:00
|
|
|
_igb= igb
|
2004-10-25 10:29:57 +00:00
|
|
|
_sound= sound
|
2008-08-11 04:46:14 +00:00
|
|
|
_upgt= upgt
|
2008-04-11 23:04:36 +00:00
|
|
|
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
|
|
|
|
_zfs= zfs
|
|
|
|
.endif
|
2003-06-23 22:01:01 +00:00
|
|
|
.endif
|
|
|
|
|
2002-02-17 21:00:20 +00:00
|
|
|
.if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES)
|
2001-04-02 08:52:05 +00:00
|
|
|
SUBDIR=${MODULES_OVERRIDE}
|
|
|
|
.endif
|
|
|
|
|
2005-01-20 05:43:24 +00:00
|
|
|
.for reject in ${WITHOUT_MODULES}
|
|
|
|
SUBDIR:= ${SUBDIR:N${reject}}
|
|
|
|
.endfor
|
|
|
|
|
2001-09-21 11:21:06 +00:00
|
|
|
# Calling kldxref(8) for each module is expensive.
|
2003-01-21 05:52:48 +00:00
|
|
|
.if !defined(NO_XREF)
|
2003-03-12 14:32:46 +00:00
|
|
|
.MAKEFLAGS+= -DNO_XREF
|
2001-09-21 11:21:06 +00:00
|
|
|
afterinstall:
|
2002-05-14 07:49:12 +00:00
|
|
|
@if type kldxref >/dev/null 2>&1; then \
|
|
|
|
${ECHO} kldxref ${DESTDIR}${KMODDIR}; \
|
|
|
|
kldxref ${DESTDIR}${KMODDIR}; \
|
|
|
|
fi
|
2001-09-21 11:21:06 +00:00
|
|
|
.endif
|
|
|
|
|
1994-09-16 20:24:29 +00:00
|
|
|
.include <bsd.subdir.mk>
|