cvs commit: src/sys/compat/ndis kern_ndis.c subr_ndis.c
src/sys/dev/if_ndis if_ndis.c
Bill Paul
wpaul at FreeBSD.org
Sat Jan 3 05:20:40 PST 2004
wpaul 2004/01/03 05:20:30 PST
FreeBSD src repository
Modified files:
sys/compat/ndis kern_ndis.c subr_ndis.c
sys/dev/if_ndis if_ndis.c
Log:
In if_ndis.c:ndis_attach(), temporarily set the IFF_UP flag while
calling the haltfunc. If an interrupt is triggered by the init
or halt func, the IFF_UP flag must be set in order for us to be able
to service it.
In kern_ndis.c: implement a handler for NdisMSendResourcesAvailable()
(currently does nothing since we don't really need it).
In subr_ndis.c:
- Correct ndis_init_string() and ndis_unicode_to_ansi(),
which were both horribly broken.
- Implement NdisImmediateReadPciSlotInformation() and
NdisImmediateWritePciSlotInformation().
- Implement NdisBufferLength().
- Work around my first confirmed NDIS driver bug.
The SMC 9462 gigE driver (natsemi 83820-based copper)
incorrectly creates a spinlock in its DriverEntry()
routine and then destroys it in its MiniportHalt()
handler. This is wrong: spinlocks should be created
in MiniportInit(). In a Windows environment, this is
often not a problem because DriverEntry()/MiniportInit()
are called once when the system boots and MiniportHalt()
or the shutdown handler is called when the system halts.
With this stuff in place, this driver now seems to work:
ndis0: <SMC EZ Card 1000> port 0xe000-0xe0ff mem 0xda000000-0xda000fff irq 10 at device 9.0 on pci0
ndis0: assign PCI resources...
ndis_open_file("FLASH9.hex", 18446744073709551615)
ndis0: Ethernet address: 00:04:e2:0e:d3:f0
Revision Changes Path
1.19 +9 -0 src/sys/compat/ndis/kern_ndis.c
1.22 +48 -12 src/sys/compat/ndis/subr_ndis.c
1.20 +3 -1 src/sys/dev/if_ndis/if_ndis.c
More information about the cvs-all
mailing list