From owner-cvs-src@FreeBSD.ORG Fri Feb 6 22:44:14 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AB0C216A4CE; Fri, 6 Feb 2004 22:44:14 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9532143D46; Fri, 6 Feb 2004 22:44:13 -0800 (PST) (envelope-from wpaul@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i176iD0B083120; Fri, 6 Feb 2004 22:44:13 -0800 (PST) (envelope-from wpaul@repoman.freebsd.org) Received: (from wpaul@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i176iDqn083119; Fri, 6 Feb 2004 22:44:13 -0800 (PST) (envelope-from wpaul) Message-Id: <200402070644.i176iDqn083119@repoman.freebsd.org> From: Bill Paul Date: Fri, 6 Feb 2004 22:44:13 -0800 (PST) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/compat/ndis kern_ndis.c ndis_var.h ntoskrnl_var.h subr_hal.c subr_ndis.c subr_ntoskrnl.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Feb 2004 06:44:14 -0000 wpaul 2004/02/06 22:44:13 PST FreeBSD src repository Modified files: sys/compat/ndis kern_ndis.c ndis_var.h ntoskrnl_var.h subr_hal.c subr_ndis.c subr_ntoskrnl.c Log: Add a whole bunch of new stuff to make the driver for the AMD Am1771/Am1772 802.11b chipset work. This chip is present on the SMC2602W version 3 NIC, which is what was used for testing. This driver creates kernel threads (12 of them!) for various purposes, and required the following routines: PsCreateSystemThread() PsTerminateSystemThread() KeInitializeEvent() KeSetEvent() KeResetEvent() KeInitializeMutex() KeReleaseMutex() KeWaitForSingleObject() KeWaitForMultipleObjects() IoGetDeviceProperty() and several more. Also, this driver abuses the fact that NDIS events and timers are actually Windows events and timers, and uses NDIS events with KeWaitForSingleObject(). The NDIS event routines have been rewritten to interface with the ntoskrnl module. Many routines with incorrect prototypes have been cleaned up. Also, this driver puts jobs on the NDIS taskqueue (via NdisScheduleWorkItem()) which block on events, and this interferes with the operation of NdisMAllocateSharedMemoryAsync(), which was also being put on the NDIS taskqueue. To avoid the deadlock, NdisMAllocateSharedMemoryAsync() is now performed in the NDIS SWI thread instead. There's still room for some cleanups here, and I really should implement KeInitializeTimer() and friends. Revision Changes Path 1.36 +17 -22 src/sys/compat/ndis/kern_ndis.c 1.20 +11 -4 src/sys/compat/ndis/ndis_var.h 1.7 +287 -0 src/sys/compat/ndis/ntoskrnl_var.h 1.8 +13 -1 src/sys/compat/ndis/subr_hal.c 1.43 +158 -60 src/sys/compat/ndis/subr_ndis.c 1.20 +726 -14 src/sys/compat/ndis/subr_ntoskrnl.c