pccard: Remove if_ndis(4) PC Card attachmentPC Card support is being removed, so remove its attachment here. ndisis slated to be removed entirely for 13, but that's not been done yet.Relnotes: Y
pccard: Remove if_ndis(4) PC Card attachmentPC Card support is being removed, so remove its attachment here. ndisis slated to be removed entirely for 13, but that's not been done yet.Relnotes: Yes
show more ...
sys/modules: normalize .CURDIR-relative paths to SRCTOPThis simplifies make output/logicTested with: `cd sys/modules; make ALL_MODULES=` on amd64MFC after: 1 monthSponsored by: Dell EMC Isilon
o port NDIS USB support from USB1 to the new usb(USB2).o implement URB_FUNCTION_ABORT_PIPE handling.o remove unused code related with canceling the timer list for USB drivers.o whitespace cleanu
o port NDIS USB support from USB1 to the new usb(USB2).o implement URB_FUNCTION_ABORT_PIPE handling.o remove unused code related with canceling the timer list for USB drivers.o whitespace cleanup and style(9)Obtained from: hps's original patch
Remove bridge(4) from the tree. if_bridge(4) is a full functionalreplacement and has additional features which make it superior.Discussed on: -archReviewed by: thompsaX-MFC-after: never (RELENG
Remove bridge(4) from the tree. if_bridge(4) is a full functionalreplacement and has additional features which make it superior.Discussed on: -archReviewed by: thompsaX-MFC-after: never (RELENG_6 as transition period)
Throw the switch on the new driver generation/loading mechanism. Fromhere on in, if_ndis.ko will be pre-built as a module, and can be builtinto a static kernel (though it's not part of GENERIC). Dr
Throw the switch on the new driver generation/loading mechanism. Fromhere on in, if_ndis.ko will be pre-built as a module, and can be builtinto a static kernel (though it's not part of GENERIC). Drivers arecreated using the new ndisgen(8) script, which uses ndiscvt(8) underthe covers, along with a few other tools. The result is a driver modulethat can be kldloaded into the kernel.A driver with foo.inf and foo.sys files will be converted intofoo_sys.ko (and foo_sys.o, for those who want/need to make statickernels). 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 haveit loaded automatically. Any required firmware files can be bundledinto the module as well (or converted/loaded separately).Also, add a workaround for a problem in NdisMSleep(). During systembootstrap (cold == 1), msleep() always returns 0 without actuallysleeping. The Intel 2200BG driver uses NdisMSleep() to wait forthe NIC's firmware to come to life, and fails to load if NdisMSleep()doesn't actually delay. As a workaround, if msleep() (and hencendis_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 muchelse. 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-loadingthem and kldload them once the system is running instead.
Move to generating pccarddevs.h on the fly, both for the kernel andthe modules.Also generate usbdevs.h automatically now, but a non-kernel file isstopping that at the moment.
Add preliminary support for PCMCIA devices in addition to PCI/cardbus.if_ndis.c has been split into if_ndis_pci.c and if_ndis_pccard.c.The ndiscvt(8) utility should be able to parse device info for
Add preliminary support for PCMCIA devices in addition to PCI/cardbus.if_ndis.c has been split into if_ndis_pci.c and if_ndis_pccard.c.The ndiscvt(8) utility should be able to parse device info for PCMCIAdevices now. The ndis_alloc_amem() has moved from kern_ndis.c toif_ndis_pccard.c so that kern_ndis.c no longer depends on pccard.NOTE: this stuff is not guaranteed to work 100% correctly yet. Sofar I have been able to load/init my PCMCIA Cisco Aironet 340 card,but it crashes in the interrupt handler. The existing support forPCI/cardbus devices should still work as before.
Grrr. Put the right .PATH statements in the right Makefiles.
Commit the first cut of Project Evil, also known as the NDISulator.Yes, it's what you think it is. Yes, you should run away now.This is a special compatibility module for allowing Windows NDISmi
Commit the first cut of Project Evil, also known as the NDISulator.Yes, it's what you think it is. Yes, you should run away now.This is a special compatibility module for allowing Windows NDISminiport network drivers to be used with FreeBSD/x86. This provides_binary_ NDIS compatibility (not source): you can run NDIS drivercode, but you can't build it. There are three main parts:sys/compat/ndis: the NDIS compat API, which provides binarycompatibility functions for many routines in NDIS.SYS, HAL.dlland ntoskrnl.exe in Windows (these are the three modules thatmost NDIS miniport drivers use). The compat module also containsa small PE relocator/dynalinker which relocates the Windows .SYSimage and then patches in our native routines.sys/dev/if_ndis: the if_ndis driver wrapper. This module makesuse of the ndis compat API and can be compiled with a speciallyprepared binary image file (ndis_driver_data.h) containing theWindows .SYS image and registry key information parsed out of theaccompanying .INF file. Once if_ndis.ko is built, it can be loadedand unloaded just like a native FreeBSD kenrel module.usr.sbin/ndiscvt: a special utility that converts foo.sys and foo.infinto an ndis_driver_data.h file that can be compiled into if_ndis.o.Contains an .inf file parser graciously provided by Matt Dodd (andmercilessly hacked upon by me) that strips out device ID info andregistry key info from a .INF file and packages it up with a binaryimage array. The ndiscvt(8) utility also does some manipulation ofthe segments within the .sys file to make life easier for the kernelloader. (Doing the manipulation here saves the kernel code from havingto move things around later, which would waste memory.)ndiscvt is only built for the i386 arch. Only files.i386 has beenupdated, and none of this is turned on in GENERIC. It should probablywork on pc98. I have no idea about amd64 or ia64 at this point.This is still a work in progress. I estimate it's about %85 done, butI want it under CVS control so I can track subsequent changes. It hasbeen tested with exactly three drivers: the LinkSys LNE100TX v4 driver(Lne100v4.sys), the sample Intel 82559 driver from the Windows DDK(e100bex.sys) and the Broadcom BCM43xx wireless driver (bcmwl5.sys). Itstill needs to have a net80211 stuff added to it. To use it, you woulddo something like this:# cd /sys/modules/ndis# make; make load# cd /sys/modules/if_ndis# ndiscvt -i /path/to/foo.inf -s /path/to/foo.sys -o ndis_driver_data.h# make; make load# sysctl -a | grep ndisAll registry keys are mapped to sysctl nodes. Sometimes drivers referto registry keys that aren't mentioned in foo.inf. If this happens,the NDIS API module creates sysctl nodes for these keys on the fly soyou can tweak them.An example usage of the Broadcom wireless driver would be:# sysctl hw.ndis0.EnableAutoConnect=1# sysctl hw.ndis0.SSID="MY_SSID"# sysctl hw.ndis0.NetworkType=0 (0 for bss, 1 for adhoc)# ifconfig ndis0 <my ipaddr> netmask 0xffffff00 upThings to be done:- get rid of debug messages- add in ndis80211 support- defer transmissions until after a status update with NDIS_STATUS_CONNECTED occurs- Create smarter lookaside list support- Split off if_ndis_pci.c and if_ndis_pccard.c attachments- Make sure PCMCIA support works- Fix ndiscvt to properly parse PCMCIA device IDs from INF files- write ndisapi.9 man page