freebsd-dev/sys/compat/ndis
Bill Paul f6159e042d - Rewrite the timer and event API routines in subr_ndis.c so that they
are actually layered on top of the KeTimer API in subr_ntoskrnl.c, just
  as it is in Windows. This reduces code duplication and more closely
  imitates the way things are done in Windows.

- Modify ndis_encode_parm() to deal with the case where we have
  a registry key expressed as a hex value ("0x1") which is being
  read via NdisReadConfiguration() as an int. Previously, we tried
  to decode things like "0x1" with strtol() using a base of 10, which
  would always yield 0. This is what was causing problems with the
  Intel 2200BG Centrino 802.11g driver: the .inf file that comes
  with it has a key called RadioEnable with a value of 0x1. We
  incorrectly decoded this value to '0' when it was queried, hence
  the driver thought we wanted the radio turned off.

- In if_ndis.c, most drivers don't accept NDIS_80211_AUTHMODE_AUTO,
  but NDIS_80211_AUTHMODE_SHARED may not be right in some cases,
  so for now always use NDIS_80211_AUTHMODE_OPEN.

NOTE: There is still one problem with the Intel 2200BG driver: it
happens that the kernel stack in Windows is larger than the kernel
stack in FreeBSD. The 2200BG driver sometimes eats up more than 2
pages of stack space, which can lead to a double fault panic.
For the moment, I got things to work by adding the following to
my kernel config file:

options         KSTACK_PAGES=8

I'm pretty sure 8 is too big; I just picked this value out of a hat
as a test, and it happened to work, so I left it. 4 pages might be
enough. Unfortunately, I don't think you can dynamically give a
thread a larger stack, so I'm not sure how to handle this short of
putting a note in the man page about it and dealing with the flood
of mail from people who never read man pages.
2004-03-20 23:39:43 +00:00
..
cfg_var.h Deal with the duplicate sysctl leaf problem. A .inf file may contain 2003-12-18 03:51:21 +00:00
hal_var.h The definition for __stdcall logically belongs in pe_var.h, but 2004-01-15 21:31:49 +00:00
kern_ndis.c - Rewrite the timer and event API routines in subr_ndis.c so that they 2004-03-20 23:39:43 +00:00
ndis_var.h - Rewrite the timer and event API routines in subr_ndis.c so that they 2004-03-20 23:39:43 +00:00
ntoskrnl_var.h - Rewrite the timer and event API routines in subr_ndis.c so that they 2004-03-20 23:39:43 +00:00
pe_var.h The definition for __stdcall logically belongs in pe_var.h, but 2004-01-15 21:31:49 +00:00
resource_var.h
subr_hal.c Add stub implementations of KfLowerIrql() and KfRaiseIrql() (both of 2004-02-09 19:13:58 +00:00
subr_ndis.c - Rewrite the timer and event API routines in subr_ndis.c so that they 2004-03-20 23:39:43 +00:00
subr_ntoskrnl.c - Rewrite the timer and event API routines in subr_ndis.c so that they 2004-03-20 23:39:43 +00:00
subr_pe.c AMD64 has a single MS-Win calling convention, so provide an empty __stdcall. 2004-01-13 22:49:45 +00:00