Re: Where is Bill Paul's NDIS miniport driver wrapper?

From: Michel Schwab (michel.schwab_at_tpn.ch)
Date: 03/02/04

  • Next message: Uwe Doering: "Re: MySQL and FreeBSD 4.x.. problems, problems with server"
    To: "Alistair Hamilton" <alistair@ahip.co.uk>, <freebsd-questions@freebsd.org>
    Date: Tue, 2 Mar 2004 12:03:52 +0100
    
    

    Hi

    I found this guide:

    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 NDIS
    miniport network drivers to be used with FreeBSD/x86. This provides
    _binary_ NDIS compatibility (not source): you can run NDIS driver
    code, but you can't build it. There are three main parts:

    sys/compat/ndis: the NDIS compat API, which provides binary
    compatibility functions for many routines in NDIS.SYS, HAL.dll
    and ntoskrnl.exe in Windows (these are the three modules that
    most NDIS miniport drivers use). The compat module also contains
    a small PE relocator/dynalinker which relocates the Windows .SYS
    image and then patches in our native routines.

    sys/dev/if_ndis: the if_ndis driver wrapper. This module makes
    use of the ndis compat API and can be compiled with a specially
    prepared binary image file (ndis_driver_data.h) containing the
    Windows .SYS image and registry key information parsed out of the
    accompanying .INF file. Once if_ndis.ko is built, it can be loaded
    and unloaded just like a native FreeBSD kenrel module.

    usr.sbin/ndiscvt: a special utility that converts foo.sys and foo.inf
    into an ndis_driver_data.h file that can be compiled into if_ndis.o.
    Contains an .inf file parser graciously provided by Matt Dodd (and
    mercilessly hacked upon by me) that strips out device ID info and
    registry key info from a .INF file and packages it up with a binary
    image array. The ndiscvt(8) utility also does some manipulation of
    the segments within the .sys file to make life easier for the kernel
    loader. (Doing the manipulation here saves the kernel code from having
    to move things around later, which would waste memory.)

    ndiscvt is only built for the i386 arch. Only files.i386 has been
    updated, and none of this is turned on in GENERIC. It should probably
    work 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, but
    I want it under CVS control so I can track subsequent changes. It has
    been 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). It
    still needs to have a net80211 stuff added to it. To use it, you would
    do 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 ndis

    All registry keys are mapped to sysctl nodes. Sometimes drivers refer
    to 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 so
    you 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 up

    Things 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

    cheers michel

    ----- Original Message -----
    From: "Alistair Hamilton" <alistair@ahip.co.uk>
    To: <freebsd-questions@freebsd.org>
    Sent: Tuesday, March 02, 2004 11:28 AM
    Subject: Where is Bill Paul's NDIS miniport driver wrapper?

    > Hello, all
    >
    > I have installed the FreeBSD 5.2.1, which I assumed to be the latest
    > available. However, it does not appear to have the NDIS miniport driver
    > in the kernel source and there is no /sys/modules/ndis . I need this
    > for my Centrino 802.11b.
    >
    > Google has helped me to find quite a few references to it but I cannot
    > find a relevant URL. Is this driver distributed separately? If so,
    > where do I get it?
    >
    > TIA,
    > Alistair
    > --
    > alistair@irma:~$ uname -a
    > FreeBSD irma.ty-eurgain 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #3: Mon Mar
    > 1 09:38:49 GMT 2004
    > alistair@irma.ty-eurgain:/usr/obj/usr/src/sys/IRMAKERNEL i386
    >
    > _______________________________________________
    > freebsd-questions@freebsd.org mailing list
    > http://lists.freebsd.org/mailman/listinfo/freebsd-questions
    > To unsubscribe, send any mail to
    "freebsd-questions-unsubscribe@freebsd.org"
    >
    >
    > !DSPAM:40446224275972446164773!
    >
    >
    >

    _______________________________________________
    freebsd-questions@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-questions
    To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"


  • Next message: Uwe Doering: "Re: MySQL and FreeBSD 4.x.. problems, problems with server"

    Relevant Pages

    • ndis IM and DifXTools...again
      ... I have been doing more investigation using the NDIS Filter IM driver ... requires the miniport .inf file to be placed into a subdirectory of the ... According to dpinst.log the installation is successful, ...
      (microsoft.public.development.device.drivers)
    • Re: Driver Install failure
      ... After you install the HW driver, should the "new hardware found" dialog for the NDIS device pop up automatically? ... is acting as if it doesn't see the .INF file OR there is something askew in ...
      (microsoft.public.development.device.drivers)
    • Re: NDIS Driver Component File
      ... I am new to NDIS, please let me know how to check this under XP Professional. ... I do not have the old KDF file windows NTe driver. ... we have only the sys file and inf file in the component. ...
      (microsoft.public.windowsxp.embedded)
    • making driver compatible on NT 4.0 operating system
      ... we have developed an NDIS intermediate driver for windows 98/2k and xp. ... Is Intermediate driver supported on NT? ... i tried renaming my inf file to OEMSETUP.INF but the error continued. ...
      (microsoft.public.development.device.drivers)
    • Re: Question about FILE_OBJECT
      ... NDIS IM is a driver that fully conforms to the model, ... I.E. every time they allocated a new context object they ...
      (microsoft.public.win32.programmer.kernel)