Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Feb 2014 08:41:13 +0100
From:      Christian Brueffer <brueffer@FreeBSD.org>
To:        current@freebsd.org
Cc:        stable@freebsd.org
Subject:   Re: RFC: deprecation of nve(4) in 10-STABLE and removal from 11-CURRENT
Message-ID:  <52F09999.9030807@FreeBSD.org>
In-Reply-To: <52EFA015.5070601@FreeBSD.org>
References:  <52EFA015.5070601@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--fiVRRWfOLp81fpU4PaJraA20cOanR3h3B
Content-Type: multipart/mixed;
 boundary="------------040205050306080801060107"

This is a multi-part message in MIME format.
--------------040205050306080801060107
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On 2/3/14 2:56 PM, Christian Brueffer wrote:
> Hi,
>=20
> for some time now we have had two drivers for NVIDIA NForce/MCP network=

> chips, namely nve(4) and nfe(4).
>=20
> The former came first and is based on a binary blob.  The latter was
> later ported from OpenBSD and is blob-free.
>=20
> nfe(4) supports all chips nve(4) supports, in addition to all the newer=

> hardware.  In essence, nfe(4) has been the de-facto standard driver for=

> a long time.  nve(4) has been commented out in GENERIC since 2007.
>=20
> For this reason I propose deprecating nve(4) in 10-STABLE and removing
> it from HEAD.
>=20

For completeness sake, attached is the proposed patch.

It can also be found here:

http://people.freebsd.org/~brueffer/nve.removal.diff

Cheers,

Christian

--------------040205050306080801060107
Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0";
 name="nve.removal.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename="nve.removal.diff"

Index: ObsoleteFiles.inc
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- ObsoleteFiles.inc	(revision 261434)
+++ ObsoleteFiles.inc	(working copy)
@@ -38,6 +38,9 @@
 #   xargs -n1 | sort | uniq -d;
 # done
=20
+# 201302xx: nve(4) replaced by nfe(4)
+OLD_FILES+=3Dusr/share/man/man4/nve.4.gz
+OLD_FILES+=3Dusr/share/man/man4/if_nve.4.gz
 # 20140128: libelf and libdwarf import
 OLD_LIBS+=3Dusr/lib/libelf.so.1
 OLD_LIBS+=3Dusr/lib32/libelf.so.1
Index: release/doc/en_US.ISO8859-1/hardware/article.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- release/doc/en_US.ISO8859-1/hardware/article.xml	(revision 261434)
+++ release/doc/en_US.ISO8859-1/hardware/article.xml	(working copy)
@@ -883,8 +883,6 @@
=20
       &hwlist.nge;
=20
-      &hwlist.nve;
-
       &hwlist.nxge;
=20
       &hwlist.oce;
Index: release/doc/en_US.ISO8859-1/relnotes/article.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- release/doc/en_US.ISO8859-1/relnotes/article.xml	(revision 261434)
+++ release/doc/en_US.ISO8859-1/relnotes/article.xml	(working copy)
@@ -176,6 +176,11 @@
 	<para revision=3D"258830">Support for Broadcom chipsets
 	  BCM57764, BCM57767, BCM57782, BCM57786 and BCM57787 has
 	  been added to &man.bge.4;.</para>
+
+	<para revision=3D"2xxxxx">The deprecated nve(4) driver has been
+	  removed.  Users of NVIDIA nForce MCP network adapters are
+	  advised to use the &man.nfe.4; driver instead, which has been
+	  the default driver for this hardware since &os; 7.0.</para>
       </sect4>
     </sect3>
=20
Index: release/doc/share/misc/dev.archlist.txt
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- release/doc/share/misc/dev.archlist.txt	(revision 261434)
+++ release/doc/share/misc/dev.archlist.txt	(working copy)
@@ -97,7 +97,6 @@
 ng_bt3c	i386,pc98,amd64
 ng_ubt	i386,pc98,amd64
 nsp	i386,pc98
-nve	i386,amd64
 nxge	i386,amd64
 oce	i386,amd64
 ohci	i386,pc98,ia64,amd64,powerpc
Index: share/man/man4/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- share/man/man4/Makefile	(revision 261434)
+++ share/man/man4/Makefile	(working copy)
@@ -343,7 +343,6 @@
 	${_ntb.4} \
 	null.4 \
 	${_nvd.4} \
-	${_nve.4} \
 	${_nvme.4} \
 	${_nvram.4} \
 	${_nvram2env.4} \
@@ -670,7 +669,6 @@
 MLINKS+=3Dnge.4 if_nge.4
 MLINKS+=3D${_ntb.4} ${_if_ntb.4} \
 	${_ntb.4} ${_ntb_hw.4}
-MLINKS+=3D${_nve.4} ${_if_nve.4}
 MLINKS+=3D${_nxge.4} ${_if_nxge.4}
 MLINKS+=3Dpatm.4 if_patm.4
 MLINKS+=3Dpccbb.4 cbb.4
@@ -768,7 +766,6 @@
 _if_bxe.4=3D	if_bxe.4
 _if_ndis.4=3D	if_ndis.4
 _if_nfe.4=3D	if_nfe.4
-_if_nve.4=3D	if_nve.4
 _if_nxge.4=3D	if_nxge.4
 _if_urtw.4=3D	if_urtw.4
 _if_vmx.4=3D	if_vmx.4
@@ -783,7 +780,6 @@
 _nfe.4=3D		nfe.4
 _nfsmb.4=3D	nfsmb.4
 _nvd.4=3D		nvd.4
-_nve.4=3D		nve.4
 _nvme.4=3D	nvme.4
 _nvram.4=3D	nvram.4
 _nxge.4=3D	nxge.4
Index: share/man/man4/altq.4
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- share/man/man4/altq.4	(revision 261434)
+++ share/man/man4/altq.4	(working copy)
@@ -151,7 +151,6 @@
 .Xr nfe 4 ,
 .Xr nge 4 ,
 .Xr npe 4 ,
-.Xr nve 4 ,
 .Xr qlxgb 4 ,
 .Xr ral 4 ,
 .Xr re 4 ,
Index: share/man/man4/miibus.4
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- share/man/man4/miibus.4	(revision 261434)
+++ share/man/man4/miibus.4	(working copy)
@@ -87,8 +87,6 @@
 NVIDIA nForce MCP Networking Adapter
 .It Xr nge 4
 National Semiconductor DP83820/DP83821 Gigabit Ethernet
-.It Xr nve 4
-NVIDIA nForce MCP Networking Adapter
 .It Xr pcn 4
 AMD Am79C97x PCI 10/100
 .It Xr re 4
@@ -159,7 +157,6 @@
 .Xr netintro 4 ,
 .Xr nfe 4 ,
 .Xr nge 4 ,
-.Xr nve 4 ,
 .Xr pcn 4 ,
 .Xr re 4 ,
 .Xr rgephy 4 ,
Index: share/man/man4/nve.4
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- share/man/man4/nve.4	(revision 261434)
+++ share/man/man4/nve.4	(working copy)
@@ -1,141 +0,0 @@
-.\" Copyright (c) 2003 Quinton Dolan
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright=

-.\"    notice, this list of conditions and the following disclaimer in t=
he
-.\"    documentation and/or other materials provided with the distributi=
on.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' A=
ND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, TH=
E
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR P=
URPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIA=
BLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQU=
ENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GO=
ODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION=
)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, =
STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN AN=
Y WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY =
OF
-.\" SUCH DAMAGE.
-.\"
-.\" $Id: nvnet.4,v 1.1 2003/10/09 16:48:01 q Exp $
-.\"
-.\" $FreeBSD$
-.\"
-.Dd January 16, 2011
-.Dt NVE 4
-.Os
-.Sh NAME
-.Nm nve
-.Nd "NVIDIA nForce MCP Networking Adapter device driver"
-.Sh SYNOPSIS
-To compile this driver into the kernel,
-place the following lines in your
-kernel configuration file:
-.Bd -ragged -offset indent
-.Cd "device miibus"
-.Cd "device nve"
-.Ed
-.Pp
-Alternatively, to load the driver as a
-module at boot time, place the following line in
-.Xr loader.conf 5 :
-.Bd -literal -offset indent
-if_nve_load=3D"YES"
-.Ed
-.Sh DESCRIPTION
-The
-.Nm
-driver provides support for the NVIDIA nForce MCP and nForce2 MCP2
-networking adapter that is embedded in the southbridge of most
-nForce and nForce2 motherboards.
-.Pp
-This driver is a reimplementation of the NVIDIA supported Linux
-.Nm nvnet
-driver and uses the same closed source API library to access
-the underlying hardware.
-There is currently no programming documentation available for this
-device, and therefore little is known about the internal architecture
-of the MAC engine itself.
-.Pp
-The
-.Nm
-driver supports the following media types:
-.Bl -tag -width ".Cm 10baseT/UTP"
-.It Cm autoselect
-Enable autoselection of the media type and options.
-.It Cm 10baseT/UTP
-Set 10Mbps operation.
-.It Cm 100baseTX
-Set 100Mbps (Fast Ethernet) operation.
-.It Cm 1000baseTX
-Set 1000Mbps (Gigabit Ethernet) operation.
-.El
-.Pp
-The
-.Nm
-driver supports the following media options:
-.Bl -tag -width ".Cm 10baseT/UTP"
-.It Cm full-duplex
-Set full duplex operation.
-.El
-.Pp
-For more information on configuring this device, see
-.Xr ifconfig 8 .
-.Sh HARDWARE
-The
-.Nm
-driver supports the NVIDIA MCP onboard adapters of mainboards with
-the following chipsets:
-.Pp
-.Bl -bullet -compact
-.It
-nForce
-.It
-nForce2
-.It
-nForce3
-.It
-nForce4
-.El
-.Sh DIAGNOSTICS
-.Bl -diag
-.It "nve%d: couldn't map memory"
-A fatal initialization error has occurred.
-.It "nve%d: couldn't map interrupt"
-A fatal initialization error has occurred.
-.It "nve%d: failed to allocate memory"
-There are not enough mbufs available for allocation.
-.It "nve%d: device timeout"
-The device has stopped responding to the network, or there is a problem =
with
-the network connection (cable).
-.El
-.Sh SEE ALSO
-.Xr altq 4 ,
-.Xr arp 4 ,
-.Xr miibus 4 ,
-.Xr netintro 4 ,
-.Xr ng_ether 4 ,
-.Xr rgephy 4 ,
-.Xr ifconfig 8
-.Sh HISTORY
-The
-.Nm
-driver first appeared in
-.Fx 6.0 .
-.Sh AUTHORS
-.An -nosplit
-The
-.Nm
-driver was written by
-.An Quinton Dolan Aq q@onthenet.com.au
-and
-.An "David E. O'Brien" Aq obrien@FreeBSD.org .
-.Sh BUGS
-There are reports that when the card is in auto select mode,
-ifconfig output reports a 10baseT/UTP output while the LEDs and
-bandwidth show that the card is actually in 100baseTX mode.
Index: share/man/man4/vlan.4
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- share/man/man4/vlan.4	(revision 261434)
+++ share/man/man4/vlan.4	(working copy)
@@ -176,7 +176,6 @@
 .Xr hme 4 ,
 .Xr le 4 ,
 .Xr nfe 4 ,
-.Xr nve 4 ,
 .Xr rl 4 ,
 .Xr sf 4 ,
 .Xr sis 4 ,
Index: sys/amd64/conf/GENERIC
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/amd64/conf/GENERIC	(revision 261434)
+++ sys/amd64/conf/GENERIC	(working copy)
@@ -235,7 +235,6 @@
 device		msk		# Marvell/SysKonnect Yukon II Gigabit Ethernet
 device		nfe		# nVidia nForce MCP on-board Ethernet
 device		nge		# NatSemi DP83820 gigabit Ethernet
-#device		nve		# nVidia nForce MCP on-board Ethernet Networking
 device		pcn		# AMD Am79C97x PCI 10/100 (precedence over 'le')
 device		re		# RealTek 8139C+/8169/8169S/8110S
 device		rl		# RealTek 8129/8139
Index: sys/amd64/conf/NOTES
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/amd64/conf/NOTES	(revision 261434)
+++ sys/amd64/conf/NOTES	(working copy)
@@ -309,7 +309,6 @@
 # mlxen: Mellanox ConnectX HCA Ethernet
 # mthca: Mellanox HCA InfiniBand
 # nfe:	nVidia nForce MCP on-board Ethernet Networking (BSD open source)
-# nve:	nVidia nForce MCP on-board Ethernet Networking
 # sfxge: Solarflare SFC9000 family 10Gb Ethernet adapters
 # vmx:	VMware VMXNET3 Ethernet (BSD open source)
 # wpi:	Intel 3945ABG Wireless LAN controller
@@ -327,7 +326,6 @@
 device  	mlxen		# Mellanox ConnectX HCA Ethernet
 device  	mthca		# Mellanox HCA InfiniBand
 device		nfe		# nVidia nForce MCP on-board Ethernet
-device		nve		# nVidia nForce MCP on-board Ethernet Networking
 device		sfxge		# Solarflare SFC9000 10Gb Ethernet
 device		vmx		# VMware VMXNET3 Ethernet
 device		wpi		# Intel 3945ABG wireless NICs.
Index: sys/boot/forth/loader.conf
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/boot/forth/loader.conf	(revision 261434)
+++ sys/boot/forth/loader.conf	(working copy)
@@ -327,7 +327,6 @@
 if_my_load=3D"NO"			# Myson PCI Fast Ethernet
 if_nfe_load=3D"NO"		# NVIDIA nForce MCP Networking Adapter
 if_nge_load=3D"NO"		# National Semiconductor PCI Gigabit Ethernet
-if_nve_load=3D"NO"		# NVIDIA nForce MCP Networking Adapter
 if_nxge_load=3D"NO"		# Neterion Xframe 10Gb Ethernet
 if_patm_load=3D"NO"		# IDT77252 ATM
 if_pcn_load=3D"NO"		# AMD PCnet PCI
Index: sys/conf/WITHOUT_SOURCELESS_HOST
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/conf/WITHOUT_SOURCELESS_HOST	(revision 261434)
+++ sys/conf/WITHOUT_SOURCELESS_HOST	(working copy)
@@ -8,4 +8,3 @@
 nodevice	hptmv
 nodevice	hptnr
 nodevice	hptrr
-nodevice	nve
Index: sys/conf/files.amd64
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/conf/files.amd64	(revision 261434)
+++ sys/conf/files.amd64	(working copy)
@@ -47,17 +47,6 @@
 	no-obj no-implicit-rule before-depend				\
 	clean		"ukbdmap.h"
 #
-nvenetlib.o			optional	nve pci			\
-	dependency	"$S/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu"	\
-	compile-with	"uudecode $S/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu ; bz=
ip2 -df nvenetlib.o.bz2" \
-	no-implicit-rule
-#
-os+%DIKED-nve.h		optional	nve pci			\
-	dependency	"$S/contrib/dev/nve/os.h"			\
-	compile-with	"sed -e 's/^.*#include.*phy\.h.*$$//' $S/contrib/dev/nve/o=
s.h > os+%DIKED-nve.h" \
-	no-implicit-rule no-obj before-depend				\
-	clean		"os+%DIKED-nve.h"
-#
 hpt27xx_lib.o			optional	hpt27xx			\
 	dependency	"$S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu"	\
 	compile-with	"uudecode < $S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu" \
@@ -248,7 +237,6 @@
 dev/ntb/if_ntb/if_ntb.c		optional	if_ntb
 dev/ntb/ntb_hw/ntb_hw.c		optional	if_ntb ntb_hw
 dev/nvd/nvd.c			optional	nvd nvme
-dev/nve/if_nve.c		optional	nve pci
 dev/nvme/nvme.c			optional	nvme
 dev/nvme/nvme_ctrlr.c		optional	nvme
 dev/nvme/nvme_ctrlr_cmd.c	optional	nvme
Index: sys/conf/files.i386
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/conf/files.i386	(revision 261434)
+++ sys/conf/files.i386	(working copy)
@@ -46,17 +46,6 @@
 	no-obj no-implicit-rule before-depend				\
 	clean		"ukbdmap.h"
 #
-nvenetlib.o			optional	nve pci			\
-	dependency	"$S/contrib/dev/nve/i386/nvenetlib.o.bz2.uu"	\
-	compile-with	"uudecode $S/contrib/dev/nve/i386/nvenetlib.o.bz2.uu ; bzi=
p2 -df nvenetlib.o.bz2" \
-	no-implicit-rule
-#
-os+%DIKED-nve.h		optional	nve pci				\
-	dependency	"$S/contrib/dev/nve/os.h"			\
-	compile-with	"sed -e 's/^.*#include.*phy\.h.*$$//' $S/contrib/dev/nve/o=
s.h > os+%DIKED-nve.h" \
-	no-implicit-rule no-obj before-depend				\
-	clean		"os+%DIKED-nve.h"
-#
 hpt27xx_lib.o			optional	hpt27xx			\
 	dependency	"$S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu"	\
 	compile-with	"uudecode < $S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu" \
@@ -257,7 +246,6 @@
 dev/mse/mse_isa.c		optional mse isa
 dev/nfe/if_nfe.c		optional nfe pci
 dev/nvd/nvd.c			optional nvd nvme
-dev/nve/if_nve.c		optional nve pci
 dev/nvme/nvme.c			optional nvme
 dev/nvme/nvme_ctrlr.c		optional nvme
 dev/nvme/nvme_ctrlr_cmd.c	optional nvme
Index: sys/contrib/dev/nve/adapter.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/adapter.h	(revision 261434)
+++ sys/contrib/dev/nve/adapter.h	(working copy)
@@ -1,583 +0,0 @@
-/***********************************************************************=
****\
-|*                                                                      =
     *|
-|*       Copyright 2001-2004 NVIDIA Corporation.  All Rights Reserved.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN  IS PROPRIETARY AND CONFIDENTIAL=
     *|
-|*     TO NVIDIA, CORPORATION.   USE,  REPRODUCTION OR DISCLOSURE TO ANY=
     *|
-|*     THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN IS PROVIDED  "AS IS" WITHOUT    =
     *|
-|*     EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED   =
     *|
-|*     WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A=
     *|
-|*     PARTICULAR PURPOSE.                                              =
     *|
-|*                                                                      =
     *|
-\***********************************************************************=
****/=20
-
-/*
-    FILE:   adapter.h
-    DATE:   2/7/00
-
-    This file contains the hardware interface to the ethernet adapter.
-*/
-
-#ifndef _ADAPTER_H_
-#define _ADAPTER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define HDA_VERSION_STRING "HDR A: $Revision: #46 $"
-
-#ifdef MODS_NETWORK_BUILD
-#ifndef _DRVAPP_H_
-#include "drvapp.h"
-#endif
-#endif
-
-//////////////////////////////////////////////////////////////////
-// For the set and get configuration calls.
-typedef struct  _ADAPTER_CONFIG
-{
-    NV_UINT32   ulFlags;
-}   ADAPTER_CONFIG, *PADAPTER_CONFIG;
-//////////////////////////////////////////////////////////////////
-
-typedef struct _ADAPTER_WRITE_OFFLOAD
-{
-    NV_UINT32   usBitmask;
-    NV_UINT32   ulMss;
-
-} ADAPTER_WRITE_OFFLOAD;
-
-//////////////////////////////////////////////////////////////////
-// For the ADAPTER_Write1 call.
-/* This scatter gather list should be same as defined in ndis.h by MS.
-   For ULONG_PTR MS header file says that it will be of same size as
-   pointer. It has been defined to take care of casting between differen=
et
-   sizes.
-*/
-typedef struct _NVSCATTER_GATHER_ELEMENT {
-    NV_UINT32 PhysLow;
-    NV_UINT32 PhysHigh;
-    NV_UINT32 Length;
-    NV_VOID *Reserved;
-} NVSCATTER_GATHER_ELEMENT, *PNVSCATTER_GATHER_ELEMENT;
-
-#ifndef linux
-#pragma warning(disable:4200)
-#endif
-typedef struct _NVSCATTER_GATHER_LIST {
-    NV_UINT32       NumberOfElements;
-    NV_VOID         *Reserved;
-    NVSCATTER_GATHER_ELEMENT Elements[0];   // Made 0 sized element to r=
emove MODS compilation error
-                                            // Elements[0] and Elements[=
] have the same effect.=20
-                                            // sizeof(NVSCATTER_GATHER_L=
IST) is the same (value of 8) in both cases
-                                            // And both lead to Warning =
4200 in MSVC
-} NVSCATTER_GATHER_LIST, *PNVSCATTER_GATHER_LIST;
-#ifndef linux
-#pragma warning(default:4200)
-#endif
-
-typedef struct  _ADAPTER_WRITE_DATA1
-{
-    NV_UINT32                   ulTotalLength;
-    PNV_VOID                    pvID;
-    NV_UINT8                    uc8021pPriority;
-    ADAPTER_WRITE_OFFLOAD       *psOffload;
-    PNVSCATTER_GATHER_LIST      pNVSGL;
-}   ADAPTER_WRITE_DATA1, *PADAPTER_WRITE_DATA1;
-
-
-//////////////////////////////////////////////////////////////////
-// For the ADAPTER_Write call.
-typedef struct  _ADAPTER_WRITE_ELEMENT
-{
-    PNV_VOID   pPhysical;
-    NV_UINT32   ulLength;
-}   ADAPTER_WRITE_ELEMENT, *PADAPTER_WRITE_ELEMENT;
-
-
-#define ADAPTER_WRITE_OFFLOAD_BP_SEGOFFLOAD      0
-#define ADAPTER_WRITE_OFFLOAD_BP_IPV4CHECKSUM    1
-#define ADAPTER_WRITE_OFFLOAD_BP_IPV6CHECKSUM    2
-#define ADAPTER_WRITE_OFFLOAD_BP_TCPCHECKSUM     3
-#define ADAPTER_WRITE_OFFLOAD_BP_UDPCHECKSUM     4
-#define ADAPTER_WRITE_OFFLOAD_BP_IPCHECKSUM      5
-
-
-// pvID is a value that will be passed back into OSAPI.pfnPacketWasSent
-// when the transmission completes. if pvID is NULL, the ADAPTER code
-// assumes the caller does not want the pfnPacketWasSent callback.
-typedef struct  _ADAPTER_WRITE_DATA
-{
-    NV_UINT32                   ulNumberOfElements;
-    NV_UINT32                   ulTotalLength;
-    PNV_VOID                    pvID;
-    NV_UINT8                    uc8021pPriority;
-    ADAPTER_WRITE_OFFLOAD       *psOffload;
-#ifdef linux
-    ADAPTER_WRITE_ELEMENT       sElement[32];
-#else
-    ADAPTER_WRITE_ELEMENT       sElement[100];
-#endif
-}   ADAPTER_WRITE_DATA, *PADAPTER_WRITE_DATA;
-//////////////////////////////////////////////////////////////////
-
-
-
-//////////////////////////////////////////////////////////////////
-// For the ADAPTER_Read call.
-typedef struct  _ADAPTER_READ_ELEMENT
-{
-    PNV_VOID   pPhysical;
-    NV_UINT32   ulLength;
-}   ADAPTER_READ_ELEMENT, *PADAPTER_READ_ELEMENT;
-
-typedef struct _ADAPTER_READ_OFFLOAD
-{
-    NV_UINT8  ucChecksumStatus;
-
-} ADAPTER_READ_OFFLOAD;
-
-typedef struct _ADAPTER_READ_DATA
-{
-    NV_UINT32                   ulNumberOfElements;
-    NV_UINT32                   ulTotalLength;
-    PNV_VOID                    pvID;
-    NV_UINT32                   ulFilterMatch;
-    ADAPTER_READ_OFFLOAD        sOffload;
-    ADAPTER_READ_ELEMENT        sElement[10];
-}   ADAPTER_READ_DATA, *PADAPTER_READ_DATA;
-
-
-#define RDFLAG_CHK_NOCHECKSUM      0
-#define RDFLAG_CHK_IPPASSTCPFAIL   1
-#define RDFLAG_CHK_IPPASSUDPFAIL   2
-#define RDFLAG_CHK_IPFAIL          3
-#define RDFLAG_CHK_IPPASSNOTCPUDP  4
-#define RDFLAG_CHK_IPPASSTCPPASS   5
-#define RDFLAG_CHK_IPPASSUDPPASS   6
-#define RDFLAG_CHK_RESERVED        7
-
-
-// The ulFilterMatch flag can be a logical OR of the following
-#define ADREADFL_UNICAST_MATCH          0x00000001
-#define ADREADFL_MULTICAST_MATCH        0x00000002
-#define ADREADFL_BROADCAST_MATCH        0x00000004
-//////////////////////////////////////////////////////////////////
-
-
-
-//////////////////////////////////////////////////////////////////
-// For the ADAPTER_GetPowerCapabilities call.
-typedef struct  _ADAPTER_POWERCAPS
-{
-    NV_UINT32   ulPowerFlags;
-    NV_UINT32   ulMagicPacketWakeUpFlags;
-    NV_UINT32   ulPatternWakeUpFlags;
-    NV_UINT32   ulLinkChangeWakeUpFlags;
-    NV_SINT32     iMaxWakeUpPatterns;
-}   ADAPTER_POWERCAPS, *PADAPTER_POWERCAPS;
-
-// For the ADAPTER_GetPowerState and ADAPTER_SetPowerState call.
-typedef struct  _ADAPTER_POWERSTATE
-{
-    NV_UINT32   ulPowerFlags;
-    NV_UINT32   ulMagicPacketWakeUpFlags;
-    NV_UINT32   ulPatternWakeUpFlags;
-    NV_UINT32   ulLinkChangeWakeUpFlags;
-}   ADAPTER_POWERSTATE, *PADAPTER_POWERSTATE;
-
-// Each of the flag fields in the POWERCAPS structure above can have
-// any of the following bitflags set giving the capabilites of the
-// adapter. In the case of the wake up fields, these flags mean that
-// wake up can happen from the specified power state.
-
-// For the POWERSTATE structure, the ulPowerFlags field should just
-// have one of these bits set to go to that particular power state.
-// The WakeUp fields can have one or more of these bits set to indicate
-// what states should be woken up from.
-#define POWER_STATE_D0          0x00000001
-#define POWER_STATE_D1          0x00000002
-#define POWER_STATE_D2          0x00000004
-#define POWER_STATE_D3          0x00000008
-
-#define POWER_STATE_ALL         (POWER_STATE_D0 | \
-                                POWER_STATE_D1  | \
-                                POWER_STATE_D2  | \
-                                POWER_STATE_D3)
-//////////////////////////////////////////////////////////////////
-
-
-
-//////////////////////////////////////////////////////////////////
-// The ADAPTER_GetPacketFilterCaps call returns a NV_UINT32 that can
-// have the following capability bits set.
-#define ACCEPT_UNICAST_PACKETS      0x00000001
-#define ACCEPT_MULTICAST_PACKETS    0x00000002
-#define ACCEPT_BROADCAST_PACKETS    0x00000004
-#define ACCEPT_ALL_PACKETS          0x00000008
-
-#define ETH_LENGTH_OF_ADDRESS        6
-
-// The ADAPTER_SetPacketFilter call uses this structure to know what
-// packet filter to set. The ulPacketFilter field can contain some
-// union of the bit flags above. The acMulticastMask array holds a
-// 48 bit MAC address mask with a 0 in every bit position that should
-// be ignored on compare and a 1 in every bit position that should
-// be taken into account when comparing to see if the destination
-// address of a packet should be accepted for multicast.
-typedef struct  _PACKET_FILTER
-{
-    NV_UINT32   ulFilterFlags;
-    NV_UINT8   acMulticastAddress[ETH_LENGTH_OF_ADDRESS];
-    NV_UINT8   acMulticastMask[ETH_LENGTH_OF_ADDRESS];
-}   PACKET_FILTER, *PPACKET_FILTER;
-//////////////////////////////////////////////////////////////////
-
-
-//////////////////////////////////////////////////////////////////
-// A WAKE_UP_PATTERN is a 128-byte pattern that the adapter can
-// look for in incoming packets to decide when to wake up.  Higher-
-// level protocols can use this to, for example, wake up the
-// adapter whenever it sees an IP packet that is addressed to it.
-// A pattern consists of 128 bits of byte masks that indicate
-// which bytes in the packet are relevant to the pattern, plus
-// values for each byte.
-#define WAKE_UP_PATTERN_SIZE 128
-
-typedef struct _WAKE_UP_PATTERN
-{
-    NV_UINT32   aulByteMask[WAKE_UP_PATTERN_SIZE/32];
-    NV_UINT8   acData[WAKE_UP_PATTERN_SIZE];
-}   WAKE_UP_PATTERN, *PWAKE_UP_PATTERN;
-
-
-
-//
-//
-// Adapter offload
-//
-typedef struct _ADAPTER_OFFLOAD {
-
-    NV_UINT32 Type;
-    NV_UINT32 Value0;
-
-} ADAPTER_OFFLOAD, *PADAPTER_OFFLOAD;
-
-#define ADAPTER_OFFLOAD_VLAN        0x00000001
-#define ADAPTER_OFFLOAD_IEEE802_1P    0x00000002
-#define ADAPTER_OFFLOAD_IEEE802_1PQ_PAD    0x00000004
-
-//////////////////////////////////////////////////////////////////
-
-//  CMNDATA_OS_ADAPTER
-//  Structure common to OS and Adapter layers
-//  Used for moving data from the OS layer to the adapter layer through =
SetCommonData=20
-//  function call from OS layer to Adapter layer
-//=20
-
-typedef struct  _CMNDATA_OS_ADAPTER
-{
-#ifndef linux
-    ASF_SEC0_BASE   sRegSec0Base;
-#endif
-    NV_UINT32           bFPGA;=20
-    NV_UINT32           ulFPGAEepromSize;
-    NV_UINT32           bChecksumOffloadEnable;
-    NV_UINT32           ulChecksumOffloadBM;
-    NV_UINT32           ulChecksumOffloadOS;
-    NV_UINT32           ulMediaIF;
-    NV_UINT32           bOemCustomEventRead;
-
-    // Debug only right now
-    //!!! Beware mods is relying on the fields blow.
-    NV_UINT32           ulWatermarkTFBW;
-    NV_UINT32           ulBackoffRseed;
-    NV_UINT32           ulBackoffSlotTime;
-    NV_UINT32           ulModeRegTxReadCompleteEnable;
-    NV_UINT32           ulFatalErrorRegister;
-
-} CMNDATA_OS_ADAPTER;
-
-
-//////////////////////////////////////////////////////////////////
-// The functional typedefs for the ADAPTER Api
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_CLOSE)  (PNV_VOID pvContext=
, NV_UINT8 ucIsPowerDown);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_INIT)  (PNV_VOID pvContext,=
 NV_UINT16 usForcedSpeed, NV_UINT8 ucForceDpx, NV_UINT8 ucForceMode, NV_U=
INT8 ucAsyncMode, NV_UINT32 *puiLinkState);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_DEINIT)  (PNV_VOID pvContex=
t, NV_UINT8 ucIsPowerDown);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_START)  (PNV_VOID pvContext=
);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_STOP)   (PNV_VOID pvContext=
, NV_UINT8 ucIsPowerDown);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_QUERY_WRITE_SLOTS) (PNV_VOI=
D pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE) (PNV_VOID pvContext,=
 ADAPTER_WRITE_DATA *pADWriteData);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE1) (PNV_VOID pvContext=
, ADAPTER_WRITE_DATA1 *pADWriteData1);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_QUERY_INTERRUPT) (PNV_VOID =
pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_HANDLE_INTERRUPT) (PNV_VOID=
 pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_DISABLE_INTERRUPTS) (PNV_VO=
ID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_ENABLE_INTERRUPTS) (PNV_VOI=
D pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_CLEAR_INTERRUPTS) (PNV_VOID=
 pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_CLEAR_TX_DESC) (PNV_VOID pv=
Context);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_SPEED) (PNV_VOID p=
vContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_MODE) (PNV_VOID pv=
Context);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_STATE) (PNV_VOID p=
vContext, NV_UINT32 *pulLinkState);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_IS_LINK_INITIALIZING) (PNV_=
VOID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_RESET_PHY_INIT_STATE) (PNV_=
VOID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_TRANSMIT_QUEUE_SIZE) (P=
NV_VOID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_RECEIVE_QUEUE_SIZE) (PN=
V_VOID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_STATISTICS) (PNV_VOID p=
vContext, PADAPTER_STATS pADStats);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_POWER_CAPS) (PNV_VOID p=
vContext, PADAPTER_POWERCAPS pADPowerCaps);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_POWER_STATE) (PNV_VOID =
pvContext, PADAPTER_POWERSTATE pADPowerState);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_POWER_STATE) (PNV_VOID =
pvContext, PADAPTER_POWERSTATE pADPowerState);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_LOW_SPEED_FOR_PM) (PNV_=
VOID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_PACKET_FILTER_CAPS) (PN=
V_VOID pvContext);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_PACKET_FILTER) (PNV_VOI=
D pvContext, PPACKET_FILTER pPacketFilter);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_WAKE_UP_PATTERN) (PNV_V=
OID pvContext, NV_SINT32 iPattern, PWAKE_UP_PATTERN pPattern);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_ENABLE_WAKE_UP_PATTERN) (PN=
V_VOID pvContext, NV_SINT32 iPattern, NV_SINT32 iEnable);
-typedef NV_API_CALL NV_SINT32 (* PFN_SET_NODE_ADDRESS) (PNV_VOID pvConte=
xt, NV_UINT8 *pNodeAddress);
-typedef NV_API_CALL NV_SINT32 (* PFN_GET_NODE_ADDRESS) (PNV_VOID pvConte=
xt, NV_UINT8 *pNodeAddress);
-typedef NV_API_CALL NV_SINT32 (* PFN_GET_ADAPTER_INFO) (PNV_VOID pvConte=
xt, PNV_VOID pVoidPtr, NV_SINT32 iType, NV_SINT32 *piLength);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_READ_PHY)  (PNV_VOID pvCont=
ext, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 *pulValue);
-typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE_PHY) (PNV_VOID pvCont=
ext, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 ulValue);
-typedef NV_API_CALL NV_VOID(* PFN_ADAPTER_SET_SPPED_DUPLEX) (PNV_VOID pv=
Context);
-typedef NV_API_CALL NV_SINT32 (*PFN_REGISTER_OFFLOAD) (PNV_VOID pvContex=
t,  PADAPTER_OFFLOAD pOffload);
-typedef NV_API_CALL NV_SINT32 (*PFN_DEREGISTER_OFFLOAD) (PNV_VOID pvCont=
ext, PADAPTER_OFFLOAD pOffload);
-typedef NV_API_CALL NV_SINT32 (*PFN_RX_BUFF_READY) (PNV_VOID pvContext, =
PMEMORY_BLOCK pMemBlock, PNV_VOID pvID);
-
-#ifndef linux
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETUPREGISTERS) (PNV_VOID pvContext,=
 NV_SINT32 bInitTime);
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETSEC0BASEADDRESS) (PNV_VOID pvCont=
ext, ASF_SEC0_BASE **ppsSec0Base);
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETSOURCEIPADDRESS) (PNV_VOID pvCont=
ext, NV_UINT8 *pucSrcIPAddress);
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETDESTIPADDRESS) (PNV_VOID pvContex=
t, NV_UINT8 *pucDestIPAddress);
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETDESTIPADDRESS) (PNV_VOID pvContex=
t, NV_UINT8 *pucDestIPAddress);
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_WRITEEEPROMANDSETUPREGISTERS) (PNV_V=
OID pvContext, NV_BOOLEAN bCompare, PNV_VOID pucValue, PNV_VOID pszSec0Ba=
seMember,=20
-                                      NV_UINT16 usCount, NV_UINT32 ulAdd=
ressOffset);
-
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_ISASFREADY) (PNV_VOID pvContext, ASF=
_ASFREADY *psASFReady);
-
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETDESTMACADDRESS) (PNV_VOID pvConte=
xt, NV_UINT8 *pucDestMACAddress);
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETSOURCEMACADDRESS) (PNV_VOID pvCon=
text, NV_UINT8 *pucSrcMACAddress);
-
-typedef NV_SINT32 (*PFN_ADAPTER_ASF_CHECK_FOR_EEPROM_PRESENCE)  (PNV_VOI=
D pvContext);
-#endif
-
-typedef NV_API_CALL NV_VOID (*PFN_ADAPTER_SET_COMMONDATA) (PNV_VOID pvCo=
ntext, CMNDATA_OS_ADAPTER *psOSAdpater);
-typedef NV_API_CALL NV_VOID (*PFN_ADAPTER_SET_CHECKSUMOFFLOAD) (PNV_VOID=
 pvContext, NV_UINT32 bSet);
-
-
-=20
-typedef struct  _ADAPTER_API
-{
-    // The adapter context
-    PNV_VOID                                   pADCX;
-
-    // The adapter interface
-    PFN_ADAPTER_CLOSE                       pfnClose;
-    PFN_ADAPTER_INIT                        pfnInit;
-    PFN_ADAPTER_DEINIT                      pfnDeinit;
-    PFN_ADAPTER_START                       pfnStart;
-    PFN_ADAPTER_STOP                        pfnStop;
-    PFN_ADAPTER_QUERY_WRITE_SLOTS           pfnQueryWriteSlots;
-    PFN_ADAPTER_WRITE                       pfnWrite;
-    PFN_ADAPTER_WRITE1                      pfnWrite1;
-    PFN_ADAPTER_QUERY_INTERRUPT             pfnQueryInterrupt;
-    PFN_ADAPTER_HANDLE_INTERRUPT            pfnHandleInterrupt;
-    PFN_ADAPTER_DISABLE_INTERRUPTS          pfnDisableInterrupts;
-    PFN_ADAPTER_ENABLE_INTERRUPTS           pfnEnableInterrupts;
-    PFN_ADAPTER_CLEAR_INTERRUPTS            pfnClearInterrupts;
-    PFN_ADAPTER_CLEAR_TX_DESC                pfnClearTxDesc;
-    PFN_ADAPTER_GET_LINK_SPEED              pfnGetLinkSpeed;
-    PFN_ADAPTER_GET_LINK_MODE               pfnGetLinkMode;
-    PFN_ADAPTER_GET_LINK_STATE              pfnGetLinkState;
-    PFN_ADAPTER_IS_LINK_INITIALIZING        pfnIsLinkInitializing;
-    PFN_ADAPTER_RESET_PHY_INIT_STATE        pfnResetPhyInitState;
-    PFN_ADAPTER_GET_TRANSMIT_QUEUE_SIZE     pfnGetTransmitQueueSize;
-    PFN_ADAPTER_GET_RECEIVE_QUEUE_SIZE      pfnGetReceiveQueueSize;
-    PFN_ADAPTER_GET_STATISTICS              pfnGetStatistics;
-    PFN_ADAPTER_GET_POWER_CAPS              pfnGetPowerCaps;
-    PFN_ADAPTER_GET_POWER_STATE             pfnGetPowerState;
-    PFN_ADAPTER_SET_POWER_STATE             pfnSetPowerState;
-    PFN_ADAPTER_SET_LOW_SPEED_FOR_PM        pfnSetLowSpeedForPM;
-    PFN_ADAPTER_GET_PACKET_FILTER_CAPS      pfnGetPacketFilterCaps;
-    PFN_ADAPTER_SET_PACKET_FILTER           pfnSetPacketFilter;
-    PFN_ADAPTER_SET_WAKE_UP_PATTERN         pfnSetWakeUpPattern;
-    PFN_ADAPTER_ENABLE_WAKE_UP_PATTERN      pfnEnableWakeUpPattern;
-    PFN_SET_NODE_ADDRESS                    pfnSetNodeAddress;
-    PFN_GET_NODE_ADDRESS                    pfnGetNodeAddress;
-    PFN_GET_ADAPTER_INFO                    pfnGetAdapterInfo;
-    PFN_ADAPTER_SET_SPPED_DUPLEX            pfnSetSpeedDuplex;
-    PFN_ADAPTER_READ_PHY                    pfnReadPhy;
-    PFN_ADAPTER_WRITE_PHY                    pfnWritePhy;
-    PFN_REGISTER_OFFLOAD                    pfnRegisterOffload;
-    PFN_DEREGISTER_OFFLOAD                    pfnDeRegisterOffload;
-    PFN_RX_BUFF_READY                        pfnRxBuffReady;
-#ifndef linux
-    PFN_ADAPTER_ASF_SETUPREGISTERS          pfnASFSetupRegisters;
-    PFN_ADAPTER_ASF_GETSEC0BASEADDRESS      pfnASFGetSec0BaseAddress;
-    PFN_ADAPTER_ASF_SETSOURCEIPADDRESS      pfnASFSetSourceIPAddress;
-    PFN_ADAPTER_ASF_GETDESTIPADDRESS        pfnASFGetDestIPAddress;
-    PFN_ADAPTER_ASF_SETDESTIPADDRESS        pfnASFSetDestIPAddress;
-    PFN_ADAPTER_ASF_WRITEEEPROMANDSETUPREGISTERS pfnASFWriteEEPROMAndSet=
upRegisters;
-    PFN_ADAPTER_ASF_SETDESTMACADDRESS       pfnASFSetDestMACAddress;
-    PFN_ADAPTER_ASF_GETSOURCEMACADDRESS     pfnASFGetSourceMACAddress;
-    PFN_ADAPTER_ASF_ISASFREADY              pfnASFIsASFReady;
-    PFN_ADAPTER_ASF_CHECK_FOR_EEPROM_PRESENCE pfnASFCheckForEepromPresen=
ce;
-#endif
-    PFN_ADAPTER_SET_COMMONDATA              pfnSetCommonData;
-
-    PFN_ADAPTER_SET_CHECKSUMOFFLOAD         pfnSetChecksumOffload;
-
-}   ADAPTER_API, *PADAPTER_API;
-//////////////////////////////////////////////////////////////////
-
-#define MAX_PACKET_TO_ACCUMULATE    16
-
-typedef struct _ADAPTER_OPEN_PARAMS
-{
-    PNV_VOID pOSApi; //pointer to OSAPI structure passed from higher lay=
er
-    PNV_VOID pvHardwareBaseAddress; //memory mapped address passed from =
higher layer
-    NV_UINT32 ulPollInterval; //poll interval in micro seconds. Used in =
polling mode
-    NV_UINT32 MaxDpcLoop; //Maximum number of times we loop to in functi=
on ADAPTER_HandleInterrupt
-    NV_UINT32 MaxRxPkt; //Maximum number of packet we process each time =
in function UpdateReceiveDescRingData
-    NV_UINT32 MaxTxPkt; //Maximum number of packet we process each time =
in function UpdateTransmitDescRingData
-    NV_UINT32 MaxRxPktToAccumulate; //maximum number of rx packet we acc=
umulate in UpdateReceiveDescRingData before
-                                //indicating packets to OS.
-    NV_UINT32 SentPacketStatusSuccess; //Status returned from adapter la=
yer to higher layer when packet was sent successfully
-    NV_UINT32 SentPacketStatusFailure; ////Status returned from adapter =
layer to higher layer when packet send was unsuccessful
-    NV_UINT32 SetForcedModeEveryNthRxPacket; //NOT USED: For experiment =
with descriptor based interrupt
-    NV_UINT32 SetForcedModeEveryNthTxPacket; //NOT USED: For experiment =
with descriptor based interrupt
-    NV_UINT32 RxForcedInterrupt; //NOT USED: For experiment with descrip=
tor based interrupt
-    NV_UINT32 TxForcedInterrupt; //NOT USED: For experiment with descrip=
tor based interrupt
-    NV_UINT32 DeviceId; //Of MAC
-    NV_UINT32 DeviceType;
-    NV_UINT32 PollIntervalInusForThroughputMode; //Of MAC
-    NV_UINT32 bASFEnabled;
-    NV_UINT32 ulDescriptorVersion;
-    NV_UINT32 ulMaxPacketSize;
-
-
-#define MEDIA_IF_AUTO       0
-#define MEDIA_IF_RGMII      1
-#define MEDIA_IF_MII        2
-    NV_UINT32 ulMediaIF;
-
-	NV_UINT32	PhyPowerIsolationTimeoutInms;
-	NV_UINT32	PhyResetTimeoutInms;
-	NV_UINT32	PhyAutonegotiateTimeoutInms;
-	NV_UINT32	PhyLinkupTimeoutInms;
-	NV_UINT32	PhyRdWrTimeoutInus;
-	NV_UINT32	PhyPowerdownOnClose;
-
-    // Added for Bug 100715
-    NV_UINT32   bDisableMIIInterruptAndReadPhyStatus;
-
-}ADAPTER_OPEN_PARAMS, *PADAPTER_OPEN_PARAMS;
-
-//////////////////////////////////////////////////////////////////
-// This is the one function in the adapter interface that is publicly
-// available. The rest of the interface is returned in the pAdapterApi.
-// The first argument needs to be cast to a OSAPI structure pointer.
-// The second argument should be cast to a ADPATER_API structure pointer=
=2E
-NV_API_CALL NV_SINT32 ADAPTER_Open (PADAPTER_OPEN_PARAMS pAdapterOpenPar=
ams, PNV_VOID *pvpAdapterApi, NV_UINT32 *pulPhyAddr);
-
-//////////////////////////////////////////////////////////////////
-
-
-
-//////////////////////////////////////////////////////////////////
-// Here are the error codes the adapter function calls return.
-#define ADAPTERERR_NONE                             0x0000
-#define ADAPTERERR_COULD_NOT_ALLOC_CONTEXT          0x0001
-#define ADAPTERERR_COULD_NOT_CREATE_CONTEXT         0x0002
-#define ADAPTERERR_COULD_NOT_OPEN_PHY               0x0003
-#define ADAPTERERR_TRANSMIT_QUEUE_FULL              0x0004
-#define ADAPTERERR_COULD_NOT_INIT_PHY               0x0005
-#define ADAPTERERR_PHYS_SIZE_SMALL                    0x0006
-#define ADAPTERERR_ERROR                            0x0007  // Generic e=
rror
-//////////////////////////////////////////////////////////////////
-
-// This block moved from myadap.h
-// nFlag for Stop/Start ReceiverAndOrTransmitter can be an OR of
-// the following two flags
-#define AFFECT_RECEIVER     0x01
-#define AFFECT_TRANSMITTER  0x02
-
-#define REDUCE_LENGTH_BY 48
-
-#define EXTRA_WRITE_SLOT_TO_REDUCE_PER_SEND    4
-#define MAX_TX_DESCS                    256=20
-#define MAX_TX_DESCS_VER2               (256 * 4)
-
-typedef struct _TX_INFO_ADAP
-{
-    NV_UINT32   NoOfDesc;=20
-    PNV_VOID    pvVar2;=20
-}TX_INFO_ADAP, *PTX_INFO_ADAP;
-
-#define WORKAROUND_FOR_MCP3_TX_STALL
-
-#ifdef WORKAROUND_FOR_MCP3_TX_STALL
-NV_SINT32 ADAPTER_WorkaroundTXHang(PNV_VOID pvContext);
-#endif
-
-//#define TRACK_INIT_TIME
-
-#ifdef TRACK_INIT_TIME
-//This routine is defined in entry.c adapter doesn't link int64.lib
-//We defined here so that its easy to use it in phy as well as mswin
-
-#define MAX_PRINT_INDEX        32
-extern NV_VOID PrintTime(NV_UINT32 ulIndex);
-#define PRINT_INIT_TIME(_a) PrintTime((_a))
-#else
-#define PRINT_INIT_TIME(_a)
-#endif
-
-// Segmentation offload info
-#define DEVCAPS_SEGOL_BP_ENABLE       0  =20
-#define DEVCAPS_SEGOL_BP_IPOPTIONS    1
-#define DEVCAPS_SEGOL_BP_TCPOPTIONS   2
-#define DEVCAPS_SEGOL_BP_SEGSIZE_LO   8
-#define DEVCAPS_SEGOL_BP_SEGSIZE_HI   31
-
-
-// Checksum offload info
-// Byte 0 : V4 TX
-#define DEVCAPS_V4_TX_BP_IPOPTIONS      0
-#define DEVCAPS_V4_TX_BP_TCPOPTIONS     1
-#define DEVCAPS_V4_TX_BP_TCPCHECKSUM    2
-#define DEVCAPS_V4_TX_BP_UDPCHECKSUM    3
-#define DEVCAPS_V4_TX_BP_IPCHECKSUM     4
-
-// Byte 0 : V4 RX
-#define DEVCAPS_V4_RX_BP_IPOPTIONS      8
-#define DEVCAPS_V4_RX_BP_TCPOPTIONS     9
-#define DEVCAPS_V4_RX_BP_TCPCHECKSUM    10
-#define DEVCAPS_V4_RX_BP_UDPCHECKSUM    11
-#define DEVCAPS_V4_RX_BP_IPCHECKSUM     12
-
-// Byte 1 : V6 TX
-#define DEVCAPS_V6_TX_BP_IPOPTIONS      16
-#define DEVCAPS_V6_TX_BP_TCPOPTIONS     17
-#define DEVCAPS_V6_TX_BP_TCPCHECKSUM    18
-#define DEVCAPS_V6_TX_BP_UDPCHECKSUM    19
-
-// Byte 2 : V6 RX
-#define DEVCAPS_V6_RX_BP_IPOPTIONS      24
-#define DEVCAPS_V6_RX_BP_TCPOPTIONS     25
-#define DEVCAPS_V6_RX_BP_TCPCHECKSUM    26
-#define DEVCAPS_V6_RX_BP_UDPCHECKSUM    27
-
-
-#define DESCR_VER_1         1       // MCP1, MCP2 and CK8 descriptor ver=
sion
-#define DESCR_VER_2         2       // The decsriptor structure for CK8G=

-
-// Get device and vendor IDs from 32 bit DeviceVendorID=20
-#define GET_DEVICEID(x)   (((x) >> 16) & 0xFFFF)
-#define GET_VENDORID(x)   ((x) & 0xFFFF)
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // _ADAPTER_H_
Index: sys/contrib/dev/nve/amd64/nvenetlib.README
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/amd64/nvenetlib.README	(revision 261434)
+++ sys/contrib/dev/nve/amd64/nvenetlib.README	(working copy)
@@ -1,52 +0,0 @@
-$FreeBSD$
-
-The installation and use of this software is subject to the following li=
cense terms and conditions:
-
-License For Customer Use of NVIDIA Software=20
-
-IMPORTANT NOTICE -- READ CAREFULLY: This License For Customer Use of NVI=
DIA Software ("LICENSE") is the agreement which governs use of the softwa=
re of NVIDIA Corporation and its subsidiaries ("NVIDIA") enclosed herewit=
h, including computer software and associated printed materials ("SOFTWAR=
E"). By downloading, installing, copying, or otherwise using the SOFTWARE=
, you agree to be bound by the terms of this LICENSE. If you do not agree=
 to the terms of this LICENSE, do not download, install or use the SOFTWA=
RE.
-
-RECITALS
-Use of NVIDIA's products requires three elements: the SOFTWARE, the hard=
ware on a computer motherboard, and a personal computer. The SOFTWARE is =
protected by copyright laws and international copyright treaties, as well=
 as other intellectual property laws and treaties. The SOFTWARE is not so=
ld, and instead is only licensed for use, strictly in accordance with thi=
s document. The hardware is protected by various patents, and is sold, bu=
t this agreement does not cover that sale, since it may not necessarily b=
e sold as a package with the SOFTWARE. This agreement sets forth the term=
s and conditions of the SOFTWARE LICENSE only.
-
-1. DEFINITIONS
-
-1.1 Customer. Customer means the entity or individual that installs or u=
ses the SOFTWARE.
-
-2. GRANT OF LICENSE
-
-2.1 Rights and Limitations of Grant. NVIDIA hereby grants Customer the f=
ollowing non-exclusive, non-transferable right to use the SOFTWARE, with =
the following limitations:
-
-2.1.1 Rights. Customer may install and use one copy of the SOFTWARE on a=
 single computer, and except for making one back-up copy of the Software,=
 may not otherwise copy the SOFTWARE. This LICENSE of SOFTWARE may not be=
 shared or used concurrently on different computers.
-
-2.1.2 Linux/FreeBSD Exception. Notwithstanding the foregoing terms of Se=
ction 2.1.1, SOFTWARE designed exclusively for use on the Linux operating=
 system may be copied and redistributed, provided that the binary files t=
hereof are not modified in any way (except for uncompressing/compressing =
files).  SOFTWARE designed exclusively for use on the Linux Operating sys=
tem but which has been authorized by NVIDIA for use on the FreeBSD Operat=
ing System may also be copied and redistributed, provided that the binary=
 files thereof are not modified in any way (except for unzipping of compr=
essed files). =20
-
-2.1.3 Limitations.
-
-No Reverse Engineering. Customer may not reverse engineer, decompile, or=
 disassemble the SOFTWARE, nor attempt in any other manner to obtain the =
source code.=20
-
-No Separation of Components. The SOFTWARE is licensed as a single produc=
t. Its component parts may not be separated for use on more than one comp=
uter, nor otherwise used separately from the other parts.=20
-
-No Rental. Customer may not rent or lease the SOFTWARE to someone else.
-
-3. TERMINATION
-
-This LICENSE will automatically terminate if Customer fails to comply wi=
th any of the terms and conditions hereof. In such event, Customer must d=
estroy all copies of the SOFTWARE and all of its component parts.
-
-4. COPYRIGHT
-
-All title and copyrights in and to the SOFTWARE (including but not limit=
ed to all images, photographs, animations, video, audio, music, text, and=
 other information incorporated into the SOFTWARE), the accompanying prin=
ted materials, and any copies of the SOFTWARE, are owned by NVIDIA, or it=
s suppliers. The SOFTWARE is protected by copyright laws and internationa=
l treaty provisions. Accordingly, Customer is required to treat the SOFTW=
ARE like any other copyrighted material, except as otherwise allowed purs=
uant to this LICENSE and that it may make one copy of the SOFTWARE solely=
 for backup or archive purposes.
-
-5. APPLICABLE LAW
-
-This agreement shall be deemed to have been made in, and shall be constr=
ued pursuant to, the laws of the State of California.
-
-6. DISCLAIMER OF WARRANTIES AND LIMITATION ON LIABILITY
-
-6.1 No Warranties. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, TH=
E SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL =
WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMP=
LIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-6.2 No Liability for Consequential Damages. TO THE MAXIMUM EXTENT PERMIT=
TED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABL=
E FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOE=
VER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,=
 BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNI=
ARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVE=
N IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. MISCELLANEOUS=20
-
-The United Nations Convention on Contracts for the International Sale of=
 Goods is specifically disclaimed. If any provision of this LICENSE is in=
consistent with, or cannot be fully enforced under, the law, such provisi=
on will be construed as limited to the extent necessary to be consistent =
with and fully enforceable under the law. This agreement is the final, co=
mplete and exclusive agreement between the parties relating to the subjec=
t matter hereof, and supersedes all prior or contemporaneous understandin=
gs and agreements relating to such subject matter, whether oral or writte=
n. Customer agrees that it will not ship, transfer or export the SOFTWARE=
 into any country, or use the SOFTWARE in any manner, prohibited by the U=
nited States Bureau of Export Administration or any export laws, restrict=
ions or regulations. This LICENSE may only be modified in writing signed =
by an authorized officer of NVIDIA.
Index: sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu	(revision 261434)
+++ sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu	(working copy)
@@ -1,321 +0,0 @@
-$FreeBSD$
-begin-base64 644 nvenetlib.o.bz2
-QlpoOTFBWSZTWQrVCikAPRD////////////////////////////+////////////////4ETd=
fd7c
-d6MHt93wvffPbe6vXdzLa8cIHsyiSQRFGCttADntZTtnJu6fPePr3w68929yzVt2NRdTNU96=
tIc9
-d7mvXu2213j0vXnq3HbnQJKmZ3KPS6TKa087zr2sraLkE17nW83SZ3ukdDeUTaa7d1PXu7es=
iu3t
-rr3e7y3noZvY67HZ3Hud21TG9t6edvW7eh1K9vMNbd3mu5d7HN3Hdz3uQ611jbt73g7tyd7c=
gaEQ
-QAQaGQ0AAAAnoATTCGhoEwGkMyJtTJ6npMU2ak2NTRPNEyankymT0aFPNBlPUbQmp40KY09B=
No0M
-iaZGFP1TMk21TGgxQaEEABA0mmJkMgCm0E0yZomp7TSp+JT9Mg00GhkTKeNTU9T9TMqZ6m0D=
VPDV
-PNSbCnqeU81NR6NTxT0g2p6m1NlPKPUzFHqep6nonppPE1DJ6g2p6mgAASmhBBCaU9MmgahP=
U8Q1
-PVPaaap6T0yepoaNTepsqfqnlPQIeUAPSGnijTynpNpGmQ0aG1BiNDRpo0D1GgA0DQBtQNDQ=
AAAA
-BoNASaSRETRNqaaNTDVT9TepphSfplTzTSNqnqem9RR6I8mKemp6MptJg0gflQbUPU9Taank=
yn6p
-p5MkbU0GRtI0G1MnpNPKNAHqPSaMgAbUHqPUNGg9RoABoKUoY0mGgJgTTRtAR6mGggZMQNPJ=
oBqa
-ehMABojanojACekeoYAAEwCaZNGAmI0xMmAABMaBMTJhNAxMjEEiRCaAjI0BMmIAAE0p+mk8=
IyYQ
-Mk9Gk2QJiaabKm09TE2kyJqbyp+mSeo2jKngmp+g1T9NDVD9FHhqQ09pMT0UPFPU9R6mjTZT=
9FB+
-pMnqaAaMj8cNbHfXhnpOTkXgGkNK/vhD8A/12Hw1Z6nyejknO8gemgdwUx5tJVOqFXS2IuRI=
CB6W
-sa6sR8ALU9KIYMyp5Ca8cQpOFnh8CtGJc/wVzSMxn3TM0LxO89EKoGxDYRmOvPmgpAP2YAVj=
EA4u
-PXilv5UmS1TIqSZBMyn7EDy2OQPDKW5C0NZEbmGb5UpptetVnXRovTPCk2ywvNs88ND5l61y=
wvpz
-zej5sqtRR1K1XVM40DJ6+/0EdCbjr113W36yvIYxvhWbHVO1xo3k1K2tUqOwI8xnVKkZFSlr=
B6fU
-jV7JMQ8KwxrQKGtCNmmsNQbQ3CYmx222hIEMDWty9EC1DuYGPoklZOej6d46KrIiCiBUBmYK=
IAWu
-q6JwKfa7Kjga5xj7x+JRkYcstIVvfMsSWa2krlGJ0bStroMu0Gn889b6GfNZwDbUfuwIvG1a=
x1ny
-fm6R5lLW8B6pE2pmHP19zS9Y66C+c+AkhmlXWYeHosFCpmV9FtrXpxplJGgM7nHYN182U3rL=
NWtm
-wbB7hivbpUcpq9LLRy2Pv17s8rZ7S1RrqtE+pf6bLrcFebTnmWNIyzL1+zx53ZuDFJgbHU8/=
lgYD
-+CZPU8GakwtSmHVjwruqr8uylfoHC6zV5ytVGzAjq3KnKy6Szn9dMq1beTU6jmNGjHy87VW8=
iKtq
-G7Gly0+dVSabj3d2wVDPz9BDKIBa8W3iyMpBm+O+Ea6SNdwFajpUX18Px+vxedF+Wq1v2pv8=
7x91
-U52NODaavMzVC3O7GVjxhSNzjt/FqQHyqaksQrb7eP071HUjKtrgP9567Pp7trAbcYGLHhlI=
5SFH
-GuXm6ncTZ+f6X8/i9qskGfcpY6SgxHpyVaNn48tyuPVzHMrfs50xOcyz1tpGXaa6VtX+R0pn=
5+26
-llMx0ZHdTQzUFtctNULM1N2NHaXEashVTu1nbKspq+4pluretZlLYVFZCqJa4trT4rCamGE0=
euLh
-m5WadffpqLol7Uds6qL4niRj52eHmWnRjfDRTOCMeZouaY52OqmA+qc7ZZRkU0Wwap54Khei=
N9+R
-yENfDz64YJIH1KToX/Pd73R778r5nidzvJt1m9VewvC8JOj3np7XcSHhmh3N/iJYqpPa4dQM=
KBZJ
-v00UbXwstkIoV5iHKfCpGYjixdngx49eHZ/g3yr7gUncWy2Tz87mVyN/VKaYXeIoMIj3gkLw=
fca2
-LnN5rAbL3mkID0GkgR4m47Hi43W7Dl8Xk8TX2PmXEvx+5/bPNJowCEW2JIbEoQgQeCwBCoGC=
QGhP
-J7C/YVIgbEhI1/C/YmjSBNY5Zq33B9jtpTsDQ8QqkDaEkXGAgypajS4mu29mzy/4y0kHX4uL=
yZTv
-M7PnwjWsvnqR9Nh93KgNnMiB9M0pf7R2IazCyCQsPp/k9TOeZ9vh7nxHbt2aJc2ClFLUKMj1=
zDia
-E9Ku0Ch34w/A43Gpu0oiyU4ZHJpPq3b3MFoBeD4PDY2myPpWeW+lXwBlnyPQ9Ljum3J2iYiL=
F5RF
-IMRaRuxxojCYcSIQF+lB26wwdrIQYDFz7j6ux7mjijU0Nhjw0r7/4Ifv9nf6t2nLz2+Vsvaa=
2oyp
-E/V0e6mTp3fCuUZi8IbuDREeTOvDsf0VnJq3H55gsoelZ1htaCZ7LxOLY6gYyIUQ2m26Igzu=
rjlp
-pOBwbDTphRDKOkLkvS+1+X1vN7d1WTgwk2H1nWzmWFmoHKhIFBGKFJhnNyfRuLMiERuDlPvK=
n9Sa
-BB+17ISbZaIoVE8D0nIH+Kn+P+Ptv/6xs89tM1ICqMVEIvpiD33F80QjuGl/S0tSw1jEH6a+=
k5lN
-c1uYBHOtwt9stxLojQ8rUYoDtoAX2YzKVa+hIiuXWa/cQGQe7ZeBoPtS0tZpqJJFXSDpQ4AI=
3a69
-9xIx+T09ATawPJypyaEVScAcelb5+g1879ODevuaNuGxY6pBo2NJAN/tc439fQ7rzdG5FX6m=
+EPy
-p/0HuWiKsOVFA1bzDNIkr51lpqR3aP0RPYFs0uLHYP5HT6xRGDuLGVRX7jvn0rItFEIdek05=
ZmYr
-orhnFoODYPUGAhgDBXFzHrwP7L393jGHDmoy+p+DMdRmkgkUExKrFQMrpmHh2knI6OuUwcs6=
e5i3
-twxOK7VaoDFKRaK3DdzntW2B/QfYW/91t1S1N8Bm7ITbpyVG/JHIQ3FZ61N9Rr9v1uglLavb=
A7HG
-rEibkIOg7Nn3u3DNCY4eVIqv+L4WFUBlLET5AH1B0+kzFevdx81yvQIds8IhSMhu5kKEerA5=
kjmw
-2m/I2UOoLMqBJJQtYEykJFI45AmBfXDuXHKVWtPmOLhFnNB1XSknfV6mTtDXyKWBCpoeVAtP=
Og7h
-emo+zv5STSON44m6+4dMfX9ESCI93R4/Q9rI50H2PQ9dj1N7uKZTjL0WnHQgPOf661q7Xnue=
d6mP
-7cHcqc8/wm+tNW9r1IftexRYl9m27dnlnrdvDH4n53N/Xiq8inNPTvN9uHCnZ9J2QgyFBPzD=
ExPH
-LObAhU9hqwWi0F0yRM2ujvbZFsJcAH+dRByXXvGZILGagUKJIG7AEywCV46sIEDHUxoBBZJB=
RYBB
-I4UoASHEYQ4fB93gTcScLeHCyASxhIFfq0lQwyYTITMsClAeK+m6PmP1pbViWo5JcTbEpmiS=
iYVI
-gdNM6tGpnCgzZICtrEz3GFRVKu2OpWHvealykPStq1axao8VvV6Es96VKzBa14eo9JvSiiHe=
1073
-o73FWz1uzXTGCYCUwQJjoMoyTiawMkUwZD4rjBgg6proUhrVOibcmwZbqIzZkmyaQ0wnyOcs=
htty
-5wQhp4MpsWFWDyM2ciWbWfKpSa2HP6t0fXJeOxmccyPQvEE2HW+GCIKgwS0ilLTdmrYdDmd7=
XhqQ
-U1w54BSjghgIBxTDNyw9ZybZDdCQWQ4JCOFGsZCKffRMK5wiulJpE0RCFJIwRCpwulqsHioB=
QgHB
-B8Yh0YCY56DFMN8hYzUMYXvDvbKpmVdhDCZEJjUgHWmbwS45QTCkdtIUlaiIvFleGqFc3U0W=
lNth
-0ZJovIk20XyqU3pJRGBN2EOCLG5cFEpFR2GuhlR8q2kmEUQQJIRURZ6TMcLsutmCYVREIyaK=
jCYn
-StArCs4uw73im2pIGzCpDWWE0vGhR5d7g6tM1cTBXhNXRKaMmTk2jwutOCQm/E2QmorCHqO0=
Xszi
-avmniHvsYwYiXrk5CsoELKIYhGyslAzJYjrYeAbQfowYTsqxIssJxRYPg/eQ4xQ6KERO5T6V=
hycb
-DtS13xcr2mimCCqmtsw5eYuDZWbbmQUNqaMNkeDjStA1FpcsQWDajC1a3h1SXmRwgRgSDlLu=
KlmG
-HxJ4aCsWpKELB6WYYrDVweyCHKG+a21NsMpdTSG+FhZhWau+cFmmWWzfNk0M3peExhtjhQ4C=
GXcw
-Nt5QZqmsCo/dsmGXVuG+ZhhEzTNEJ1EmkMZC9B62+pmyUIFVJy2WSN49DY22YS5blKMikUKq=
+8tG
-cNqc1sqHFDh3J1cOCCXHzOBgQF0NnleGZtCHTUQ+AxSGdi0QHTVeqGoUiGBslSRz9V3Ylirl=
U1XE
-4zQsRV4FSGZIYiX0TWBskx1awkcusEM8dGC4iVvShncYYLHkpAJuIUN7TeRS8toGtb4rCWIf=
X+m0
-eo4UIeFo9z/x19MZqYDIDGSH1TKyQFIMJOVhCT2X2HD7O4l+TtAkCHw0GhDMDNo1HAhzS4Nm=
kgEm
-LKy9OVoEDTBpmQkhiQIf938Pk7zDiw3GH4bJOuJJ10hPFYsJ8BCTodp77hybSEA82ni6bJzJ=
MarA
-VVhOi9hMSHBUh+tYH25qqQ4oUZ2d/0npejxf4mVIvNIDswaD1hiLTbENoVtgENBjtQxsRYXb=
WiOr
-cuNdlxmQqaOycjtYsffl+Fzx5U01x235bR4NmizXkaOKg6JhhIhek0Z+XAAfFYAbp2Giwk0w=
bGIP
-9GVm28W9T7ZgZuS4wshNGi0XGgWGmBVsBKlnUaqCpiNy0CEfnGkkSYC6NySH2QCBDEkJ2yRQ=
qQkL
-5yiwgYkmlqmCk0WJOEgLTQFDEI7JovYv5JCp0+gbu1uEeRpPHn9vKmdVxeRhCNBx1D3hg5Fp=
fRIa
-kAk0OulGcEn0SBiiTtmecQO9ZCHZYCgFDHb/2yX5se1jSjBQFhttoFrWHFzuJsOoopZwnisW=
yZvO
-22yAGyAYhRANMhi23936Ew2Z+J+k8TITgk+bJz1V8rwfI2t0TZVfhMmyFcX1tNRh7ZTayGfP=
Ho0y
-E6Dx8WrISFFYSHTeo4h5lwQUJMQA3YQh55hCpICkCLDGHjM6KGK4gVKlVK1VUVD6HurDFRZF=
FCKK
-ioKs6DKncNRUZDzyTkYEPGTSqybjJ3KY+qjJP6LCYikgcGEKr914frvPBqbCpFRUHsNHY22q=
ammE
-4CjJUh0mTt0IddD2iQx75ANkA8nmsOLAlfi9O9AjIBOoAgdSghAEhkCBkZDqDNd7SdvCPvoP=
a4yu
-j9n3dz+Fzuu5Peu3iJQlUbuO953/D/WX5z3/X7Fz1jH6CQlH9hI5PDmauSxKWy6p5ldxk+zs=
6778
-SalUhxZWZkg1jiLDdXdrlP4iXca7i9J87mptlq73P/UgwPP5EI650Dr4BEpiiJRggZggRpCK=
CigG
-fidmnjGxfVT1cfL/p6z46TaOHCzDH9gawVQtLkAUCPT4r7XXyfUswTxqU8NzeKi1qLxDFD51=
3B2f
-E415Y7fF3XpZjt+THvg7EfBKCGCDGDbgULLSVUP++AqaGnbZ37YiPAMFRBQA+pB8+Hs9p7OR=
wObz
-X/4/w/m5vN5+YzPgdH3JCFg6tDrp4QAs2Ze7Zb7GR5uvA93E6F/wx9gn3DkH427UP7/uoPh0=
+mAh
-iVUjckjjFUxddg/z5Pf/kbr3MRQutVfh2IO/nYH790xRnISLwnL6l6LF7iderlSrt0Dt5fiU=
2e4W
-T8H4qvkNyWUylxbxY0a2traXqLWbA084CIXhkQAnTBAFGlGPYA8c+hseP4tYeNXAmt3HPF+I=
9Ned
-T2FAFNDLBRh/rV6M/KquxHzZQni6tKQ4dVrrrdYYfNg8qhQCGSwcd0ezIgmqkVvqQrg2qoHb=
rMOU
-hl0kiCC/lQDAyR+12FDUiBBVqQEeqEn+lzkWN98/cUnEzHLy/m/jze88rP3e0f/V+zlVHNta=
WR96
-0p4XAme+oPL3eB3CmWVtMstN8z2N18u94Xh6vxJ6kIgn8dllZRtoVLG2QoiJI++AsCsBRGAi=
QYkF
-iMiHvxAmTILMzIADrwYyTBEpYQ7lFd14XAzfp6TkSGLzPCf20e+e2atpb5V3bNelkOVcP4dh=
8rxg
-MjwEJk1c7ax/F7K1nXld+Kzh0un9GN+PObzSaNlw6dOm44pJJ556VKeeeenTqXP9N9+j9KwO=
ycA+
-jy3j4Wq6D5iZLoAAL2vTQgRCgaQkdzzOaElzWTceOQAvstJLo/UYcyQlNqHXiSB5kz8ivqDR=
9miV
-gMaZmbYNNaspxzgx7ph7hpJUspGkBv2C3AzsH31jv6JEYxhpDvqI5mV1zy3NQ6bBAlyjZxkv=
Cnko
-Ysdqrr6ZHNaMsyIAAIQKYgIQ8UQEAAgOEJQXBZkALoCBB0F1Z5jYX5xt0ex57koW9nerLdUe=
CUji
-EL4wNGGPXBCFdApWKq5B+ORiIwWSZBolLFCxQjrhkBhJB7bMTmyioJAE8KhxFQYXLWydSGQ0=
K7jF
-6xk8DxXqSglx21zlP45WyG79/o/qnvC8/2eZ6O4nhJfFSrjXzWBps4aJWCvK0i+rg7pYN8GA=
0O3H
-rVu300YGnIrsofBKs7VQw3n4Kb+vN4B8wWSMvU1oih8d2WRlSwXMxgOFTFUKHKykBMHRJ1U7=
sIpy
-vKwGNN4LhKUEoRRh2CR11aO515zACYWJm1gc5TrLHYTsyS3n0lRnQ+FzmVHN+bO0ZucACNJI=
lOuE
-LLj1qv4cNV4XYQONl01T2krVkMO4lUUOpjVnrN205GRYya8slWSxiC6T8PrFvWbLlGh0IEhn=
Ycsj
-mGFQMYPY/JMMSHthkKJESIiJEVFFg/L+euEYkNIWMnJaAoB+jEP0BSGTb6fWtbG53NpD7bpG=
tAGh
-NhpoTMYKPk2sVFEe7tzMmfVItO76sPpCyB9AfU025ucOczoy31ORozsEa9lmwcDIdkS/cjgO=
kgTI
-EZM99H9wZiGikrBFRUQVVU9qdDvve57Tr56CpnLuktMpS20QDuzv0iUDTLyXalhnTMHaRqHo=
4XaT
-/aZLmYAyoz2fBqCA0NCMIkdHWymNm0oKIEaJcumlZiQ08kLzm09TweL5Vp8P3fuz0lBmr1Be=
E4Op
-TvrCquWFC+DHSmTHYNquMxgpI0BZaVwg+YJJ0ohBoiTKcKmglnoP1zeSQ7JJIyTbmj57uK9g=
E90K
-MGENQrnGsA5W+/9dzd25wL6+ZJYm7i4bQwwBiXD/86tu8K0Su/zGXB7MhBAb9wMT23Bjwrpx=
KqrF
-No/Dl5sxK+wYIBXGQ/GJDK0hzsAPhPF6sUJKLi9rsQpVeJXF2gxyecYjq94o99SIr9mnl3bb=
d0QD
-7MgGFhxeBVT9jNDcFgQfgboi5jH/gtw5S2sr4a0LSCv9hojDmVIJCvmMU07IoDNyiNkmUDIP=
ZGoK
-onY1Nk+ikSwwfWgSrsB8BDlrGz0VzaPpACg3ed2m+pdCyM6QvgHSjuw+voUDWV07Ua/47XH7=
mS5X
-qe7urrqqmxfvpuBqtlmNBnq6glpSixcPKJ/LjW1u6klpU3tnBcp4lTDq0Vqlaii/XEkN4LWO=
dRMa
-qGtkrUKDPztqaZaoH8GWge86cVmpgAsav0uqX16JfzQu7sjMfAFoD7FAfSD3YgKZIA1P/n3w=
AxgB
-QNDjtR24oL78PDUAsnNrYGDcxK+ioH8OQY55DMyXsvecDP4FnMNv0oAbM7BrEA17McNf8/df=
U6f7
-/T76++Sc/z2tFNMyEyBv8odfOx9gzp1AMAYNBYyj0WRiVfoIANh/oZnPG0Xw6sKX6g8i6wqU=
8sas
-TGdm2oTaQ0thgD56QwJxtszvGR1/k7bsQ2+26A1g9/dSho5QxJd2woXLyl2xPdGvpg3bCo30=
12tS
-DgMWttFRILkrFgnZS400VK43bEUhbalRH/ZnAZJNBymYl2whokvU1WV0uuyy+jLN7r/t2zsW=
xAAy
-tROfw7/H9L353b/p+i9dgp+uQh75kKI4RlKiZQRQiTGtNUoU0VQBQkbKxCW66Xz5L3j2LrSW=
y9nK
-7QXJCV1MLCiQiemEsLYxpKHdxszd83Leo7A3FtT4v4M/u8Wu8rQuhWVqdr2HG95tqQe3lh72=
TE8J
-6HplFoJlB5I1+PCXVZVTZMb/5Aoh+3fMqALzgYQNPaoKy3uwOc0dbA3uYAFtgLJ4N2L3QjB7=
PiNW
-huAiAOmVcVyyhkXk1jhdkV9kzbj7T2sGkL+W8pbwZURQuD1kwoQ0zhgaoe+0bfoNEIlQdUdq=
ECQq
-58m0Ico4T4+Mn3SpBNrcsue7pkP6tNUa2xI0XnSILmoI1pItTM8w4prSCrMpK5nJ5fE43cUo=
DTiI
-X4hNYF9xu4k5xmHvbEO/8fjedemeMj6LZ6jpux8XD3u5IFoQgZ9nGGmAtJxB6fqKHxjHiCd/=
f6wm
-AoA9t2D5Q9geMDQNMjkvJxsXLuZyZVwqSYwcjdzHbcIpoKE1MyyhIGcgY4F6kIiGwEyqrqJ0=
CexW
-wy0ZhCNAAgRIQ6uHeTdbWvP1frvup97PO0SY8SurriwmAACnDIWona0YYWHpNGU1vnjZubRA=
H+5q
-jOmqHqRwUQPR0PE/DM4G6rfI2vg6CeH4BMPMXY9rFiHF7SGKdDBmHBDCOSYbxH+fWyAjQW8i=
asRu
-PlVB2+qhYdE84klpDFpNBDVv2kuSOdofFGA0ZBRzwVIqsjWtLp7+DAsbYS43cKprcCZwZJt7=
G2J1
-/gfG0QPMZ/TwXUImstrk8WZAmZUGZkwytdqGEsafOYECcwM3nPajQawN5Iz4KmrwAofRXGZI=
Hv1w
-tdWpWnlaNvY5r8Xh92cLswL1Q4OTdoIBMIvLNLQQSDshBB3yDhrW+gRw3TUnAPzBvJuRA42S=
xixB
-xZjdoNki1WanR4PA7McDBY4FxkI096UKiUWbhdpf39hF0XfTFbpr6j0E5NUDN6FAxnq2lqKl=
kaUD
-UBAOfRih8ZvxTCvmaGSls2jV+GzqZVmiqon8hkUHgIXlT7j/X0XJkbBMbFXY/y9lxoqjUzxr=
zrNU
-oRxkzo0S5imjQ7RQc257+AB0xOv3LDDCYCPkQM90t88CUXKcKNvlXx6ZS8v3pRdoNHlK0oqj=
Nh5H
-RluxMjTfHpU/5MLB76zcG2MUILjwEegxXaOSrcsPuduxsM2MasdMEVDYNqYQEhAejwEiHh0a=
DZHb
-Q+oohXahA7ky71UDBCUcdXw5CV55+sht1NFUlR2oO5ZpqcImeeUYJYyxghNmZgaFAZnRy84k=
Hl/j
-5P/zzKBUnauwfyFrMae8wYnODGpbkIbS6aD/W0HNGvgeP2BJeLEZjLDVka8fyA+EF0ulBjuw=
SLun
-6qjvZ1uOiYyIaVe8vCAh7/Lpt4a0E8OxmIVuoZ5QyedgHOARkQCQv0SMbPV2UfvxOpbTAeLI=
81nu
-/dQjh02KzDGgiYeNKbMdqBCv5LmjjMDLHKgZbOfiU31PRNnF153M17E+hrkr09tFZ65M3pep=
y84j
-2qemyyIgqiqrOm+R298cjyPhYDSHZGQIqsOVGsiY8EIb7WjulNGfg6EMcBOEXbiF20u2J6ld=
8zUU
-UPY6ajrd/4u0ERgymdJwwiE8YtDgI+/AoNWsOfgeqQ9gT6BZAIrcu9Cau1drTpPBNfY77qDm=
5bm4
-WM8aAQCs/WGl5k+wcca/GcCQ+QB6KgPNtsI2g9D+bv5q/ca5DklMQESQveEQBgjMiMW3W9nb=
b4bk
-eYKAac9eSUR3uedgb66R7qncMVHEztj9Zc8p4x0zUqrUi6Ws7VbtkQTzjNYuinYgDvyLQt7h=
X/iL
-kvxNeexSavhuS0anU7frBbPMhCkbKkiP2fcwKTW3ZXU6OFcjiTOTV8u+BHMDuvR5FWYEVZFW=
H7rs
-D2fm/e+Z65KexNQbx97jIFD6mMNIHrRNa9RzTedmcJpuJTaLPNgxMDChrRylE1xNUSMGw1Zq=
OG71
-JcYzjs2uPRLiRGzMUsXw+PKe7qLG0+a74qWMcT1iYH3LdtG7EwGhEHnuIeh5UmFDDo4qOsDa=
4okS
-lZh8vuc0b/oGGZW6VMKUQ5JO4+96BiMf724iITU9nJCslSKGWmYzHjx97mHRv6FkoOidX9Ew=
uTW1
-K+zuaPcR4H5C3ULdUxFEXu9U5pJWdT5j1GhofRrQB4iD6DWlv+pguHjJEHAYFOZGdjunx6EL=
qRLB
-QEUO7cO2nUkk+dZYWDgQd6532Nf751I5V6qvI5ebo81jalDozeeYNuUPWpNhLIbewy5ALI/U=
1pCn
-0kfIhxQKHkib7tlL9CmchpJceR2wpjStdmR2MnFz6g6BhDGMJwQs4RokySHydrZ+owMGplZO=
S7oy
-aE2TRNIIlh3aa9BSiJvcRJBmrRZEgxRNsm5bKb66Et3iIzfabqW1zMqznTWxTiNWF3Tjg6es=
WEPU
-fABPAkPk4Y1FlYnEVe0ANs4KBEVFyQcdPsyVMRBTguGOyipGhUFqST3HZje1WIDfIDQIdMMh=
Bp6F
-IJX06MWEQnD8Zbth94LOv3GYE7YxljxaT8B0NG4I+MxALGe1ETHxGa/5VXa3I4QeYMcKzLbG=
KToB
-HHH5ALcBurgMyNAm0H4cW0DfggnMuSWFoXL1Sblh6NMyPbRPjYDAci/oBckAKiqNZLMcM4kq=
4YLO
-E+ECiIzxS39oRAOJpgookd2eg4yJwAo8SEhEGRk7iXeyFyRMA7Mw1Q8urx9RbN4yaC3BtNNM=
tO5+
-YvBUvgJZKcmWWliV0p6pRv/P7mKbth7Y5CySwEz8rkrlO5NEF+JxI5+FD5rVaC3WnsSv+0V5=
PRXD
-wvgs9m3b/LrbXjv1TEgUMcUvnk6UpM0KCRvz0Clb17cPVzehAwYSQfWz43g54m9ejMxMq4ko=
z90M
-LrWNQQSJ+tvYUjVjhFuHUir5E6JoGxbKg2NuOXzu0GyFjAsYZ7vMXkljfBXEjHtK4XOX6Y6P=
jy/H
-U2KuH16+0xoYAtnKlzBvAkhF/pPU+Yid8KvgbngTL9CzThqWxETqvxfVTWxchdt8yMUQiR3i=
8Bh7
-E1VS8esn/thP5LjjHK8z1VDo1L5QGHdz7lT7CLQ/mbJ3/YCCI2HvnbToxxvKtHD2mIi0BtdO=
qQBQ
-GuMckKk4KAP4SF3K59tLyaPrEj0+aTJCMH2/NJnYgDOr4b7E1HuurVrdbziG+LVo76xSDU3m=
WDwC
-NsPfntiPlpjN9BkTeGFGY1YUERHYRPYVxxotKAbQrAYXfRFhQnZnj7VSlKb5BirECTlB5vp7=
KxDY
-rTkxFEe6c/HM/N6/9rTwQ7FDMCKQeeII9WIP7wf6fTpWaEUDt7VIFT9ZiBAPhAXEyAvXuQ79=
oYhA
-Wkdr9SKgT8RGMCQZWxKhyAVU63LoZt8AQFLxbX6K7tpGHLxIUiOsCBnQ8IIPQ8vOK25EGNUI=
8COk
-/3PQ3Pjyuup4DZjS7xwGP/NxZbwPNryHFP9LwUbQyxLB9XyIZALMgW7FMLog3eXDIREJKylk=
gw1H
-bFXgSpDLLio1ibAbNaM01Ep4DTkfDMg3Y+EG9ImMhTO3KUcgonrUIwSN3hys7t7K71/vfWMr=
jycJ
-w5UOy6lG6FD6rbLkYHjNVuKxc+nlrwdmBjAa6kDoS8u6UIR2nwzKzUbwowuUBmUrpK5XTjZL=
winj
-DBv/gwfad05MGRVICD1CG9EcSCmd4ZSbWkRk5l0sA++skFer6g/XOu6IbJ7vCPM+RyXX5DTt=
wII4
-q/LvXRDlcXEqM435Dir1XYej4wpYrgcHH60xr9iJqeouyQkEpQSGHy7J1oSOIi51OAXfpHJA=
PepL
-7HYcXbXKwx9pY3Z3L+7wiOxvRZQCfDQC+ye/Fb+HTIm8lkvyw/DJkpTiEFFNjj19uD+wl8Up=
62GH
-SqektRUp4Z/HgYLousRevjKY91z4irFrKlJrLFECTJCQj6YGDji60GAMiIunxSBDKjvBd70d=
595f
-VsvP186ng9TvJD6Gm5cVFCHAa6J9ToJT8/v/eCxI28b8o88W9XWZ1GvQY7fMXtSNJrX9kGBV=
KLXa
-4HmwjQm8HoBVwB24YFOuUrZM9pIPWkScSPhqguk8JMJpmms1x8qv0iXAoznlMNczScfHhEMb=
P5wY
-YnkfN8yDFDLpPxtfrHjEeFEMYw9481o+EybVcF7QKvgTD3fMCnkGjRkp5mcSJc304djWK47z=
jfyK
-Xw4srDNYo6f8HsG4y2DKWZH5UYZnMZAzLej17Ch1cTv8TkV4h6dAB7orSPw7wIU6YjI0sXz+=
0YdX
-UFzG+fTjbuksGbEDZbYlKUJRyvSJJz3tHP8rDU2PjRCHTKKiy82zE0xqqx87DtByUsn8Rrsr=
zO85
-3OSaWQdRWglR3euIURViyKLIL1AOvCekCbeBDv18/T4WrPC+IXt00vvHrxb4ly+8dRQS9GIF=
+zjw
-cNhogxe0GbzD/MDbPtUouCdKIYhx0eN6uv2/uf3Oj5/3yzsD7jX+810MbhTMr7rW30Z9H5d9=
ed3J
-4Z4atIh2J58Fpk904+dYYNFCzpAEYUoh8T3zQlirQDab3fDIzzM8LQGZgWR0AFVLGga1Nm5r=
y7Ve
-S3TsUCzBiI2Wim2rloQsinfXbWhcwy5KmG10xOQ9no/S/kJ3fbAcENfEgQbwgAXh/2ArStq7=
bGZN
-LMH5gTHItD9uW9be+h2Ib1B1+n6w1C/PdCSQqsS6D361WgruadS11WWQdwtN/3X31OTA3+Kg=
lMpx
-TkdvquMjk7mNwdBESI9kWaylFINUh0vTwprs3QwkFklLpqlpmghppGeoa9iU0jocMbBvkHcX=
Pqdd
-6X4PCReq8rBWaQCHb4xC2658KXbEWiz0KEJRJfsM+GFmImOiHCIAEdwNaK4DR0F0u37/ZszG=
m2So
-7SRP1w9hvBebqKPT8naAl8P7xQj9XAGXh2rkDlLazWQZBHt/pbnu2uO+MZ95uiZaPtExdI79=
fnFF
-PNVTr9NyhhmV6T6/2vSOVknVhDqH6Ymdtx0It6ftfnf6dZ85luv+KR9/78HdN3UF1gv2hmPZ=
yxq0
-DNnNuEfylpZupZYGJ4KxeK+SCJTXPSe9gMUDSC7dkIQMnjrvePwdmqAyipJoT6L8zclJAxmv=
+X6h
-8bjKQkbIP36jE8gi0eCXpLPvNrrB7TtMwpJTHpS2PhR7HRIWJKXN9OiTmWXDKv8PFCeDlaC3=
dsR3
-JGR2Z9bHd7IvT7qZSsCXCXHITQoHO+h1EtCHUMmhQ/vbbHFwtvn9QfV6fL6zQV/JQdh81QrA=
WAsj
-6+hXEPdpNJ3LNkOiwM9SMBQUbVEhCQCj5L6yxAdIxTBjb4UOZI5SP42aV4ce/MON0zA5eQHK=
hFNl
-X+7cGya067Xhm1GFlKqo9vn4HTeJx9aSwBQZh8qugVL8lrxEwx2LWsSW9MGhr3NGKHhDIDCy=
v0km
-YhZFJC+X9NH4kK2MKSTT0SyCzWGBYWKROls46dhJDIvKyfBUQXHGkE/g85AC/ytBrO9wxe7a=
P4ga
-CI7VvfEYYXSHVmJxtIv1IOBOvnk+vys0//Y9FFURlgdDoUEl6zkOik0WIPs29iY3i0H47z2R=
yhP5
-rs7UZns8+6jj7PmXVUsPgCBpPw1O5PBaWItD48s/AB0v+OtByZEkEfnIUOV7rg7U9We1D+wV=
y5vk
-dRApWCrYGOuqB4MmMz6BF0rlD3dsJBmXkwl8knGWBEZEDOExypgNO6iafwZfeq02gBahcfvW=
/qWv
-EXqWxNKTP2ccKNwt0GiK90apc1w4NMITLD19KqUetjRYWmGa0GLhzSFvDaU8sWPY3sTDIiuc=
51W4
-Dg+y0lmQLiaVEd2+x/8QvS+nHCe/+m4ynk9grJnE0d7mG1Nsb2juXe5wR5LL7s7JHNIgkuPj=
ORQu
-JyRKSA4W8QRzvPBED4z2AXUyLDkxe8tTS7gw2LWcw+PtypbofOKads1SwuoYTxI7slAUtd5u=
o1DO
-bzYqdl92mfIKapUGftdhNB3o1aHI4cG9Ghb8GJM2YyEpRkSUnIYE5frWuDdpDSYcn1dnVMxn=
1b+T
-8mCiG7bQA+q6Z6ZLi9lvdbfBzidkZyvJmKWJeCU2YoAJwc98Q0u9nFAiyPg0Oj3UrJzMoufE=
SsX1
-iB1s26dDZDMRyqHnvc7YquzD9gnvOP7TxjyvRUt3KVV+oPYWS1may0LSl6nTgdUPO+hhkzM7=
sUF7
-hC96vOXsdb0M7CmBcQrbDF/4moezQH/YqZ153yTHDnRDrX/Du+g1d9ZvC8Yf0B7Egs1g3YcR=
4MAZ
-yOM8phIlejWKOPfDkOFsl57IGNC1BuFhYDUn98OABR7Q0LyDD7cic7rkdNkhhGB+s7Sf0QUC=
wNQg
-QzQWWJKdkybVIdQEqHVe0O+qjV+KhDIwgscKgEnpHQovAynj8mp+Fj0oOB632dL/56MvJC1d=
RMnJ
-vNwHAEP97KD7rnD/H4UCyB0hYDVcymJJWCn8v+Vk0aII61rJpKhSvEPSc+3eX78ZPTpuHe+q=
fANi
-tVsXC95K1Y8F9qPpmdc5D7oatnwDtv2p9vcIClnSPb+Y2z2z6eK8r7R172hTev4ND35zcy5w=
tOV1
-1Ns+2+5OBY4Ph8K3i8B/NXB5nuTe3vCOi5ZFUZRn8FdtD9NEaAcvVKIMKNHupQyLDhqdbc6o=
G9yE
-Qy2+3YnSWE2SQaJKyk9sKAvhfjMjxZIazH6zM0WFhh2UpltBXCPHWyQkP0+37fJgB4P4SUly=
b4hd
-mRldooON9syTENGft4YS/lLdu6OORFBj8X3Cb5bNA0iD65dL1Z4G1HljXZXN6/Wcu3M0spIx=
CkZO
-XlLNOrMtGc2am5qbIaFggPJUCxaVxTbkkitivXQtInYDhbDh4SoMxOzxSfqmAaMrwoGPiuXs=
U4Q4
-FIgUr/IKK+GqX6bBUYBrYwFYfhpii0Ock1wLeiAocBDmCpze6vhfYgxRhH6CJBtt1UIAF0ok=
e/QT
-92YWznEX0mV5mKomVw2AF12N/RqrFXTQLSo/PJ6YtuYMzBHfGRDQmJkwcnVc35kw+ZhLzAyl=
u/uH
-IMiY23olNU6N0RBnxu9Kqp9C34729gM/Xq/q+6hDAljFx0PTCiq7cQylhYGAoGRGXqoSyMEL=
kELc
-gARkQKHyoghv+hMzIYmCqXNft0VB/v6+up6v4YPPM8IRLfuNMg4aDNQv3pOBK/2TEjZsJLZe=
X6Yw
-ewoS8SZ+oUdjIqlFkGAzwYNOaBgRaLFctZiqg61gKww4vXfJKMNmDa2MK6xgFkmBqop0Iaxi=
MAbz
-JZV0bGIRCLSr3acmXrIXqmA4ZiuZo6LNYcuPtridx9R9YEQrLZMjmUIrEVvP9X7d64D/xGWv=
jMn0
-+Dxkub9/HiHpUeJFE8PT3TwkeG7oLOcgVln25z/iuu0nmA+Xw9Jk8B831QQViRF01V4HhyQL=
aJYX
-RoS09bYb7T/xoQWkkmaV6RIY3/xLaosBdoJDzX0FgcDhOH8ierEVTwKUVUYLIi8fm/O+P8w3=
3jBV
-BQWfO8cwnX/jM8lXtFhDq/OT5h5R7HAGRm5r6LLnNyZIctLxAkUtGdSBLw1XKg1KLTF7ig/r=
6EF/
-1vTw7bbRyf0t2DUhf5hDaOXnaTgleOMg1SJfV+iqvROXwENGpMXV2Tt79st0+smySUKllovu=
Z1OK
-Qa8u84QgZpY42fjY/lxNA+vbwnxaXYhj+fNi+5E8BEHAKCLCARRK4ty7CqLG4+lon1+usBat=
NJvI
-ypq/tFtw22/TOlagGOkKbIjLLSY3MxMbDr0SUB2hSGJk6pd7adoMufdF7MaJRGCzCmPQBmsF=
G/lz
-xyba197riVAM2RYjXogphLZ5ZNoMpImsKeXbLSVaxgodRdi2BByok1Cchhe0O+5ZOMOQ5Vmd=
UP2R
-9cL1CyUUcGtFDMwcGA6Dhysier5IlNzC4mYaYHVg+J3oY7tQwFbxlWhLZbZe3gcpUXTXd0v5=
DCdI
-3WTlbhn9/lIOB5zagNoRCDrMLvlctCRcZRE0oLMqY2wuMqH0ya1/JwvbU3Mn6r9jQ4Ifc/hW=
fI+4
-rB+PrFAKo0dcP3Fe7LzEnQsPJBJo+KfxeZK/olCjjIzMxBNOicYGQB4KBzTc9B6veR86JSvy=
g4Dl
-wDHx7zHi+vatDFdyKvL1qFnzLeKqjUBwPaUGGPqZ5QpSOT7+Rm1Cmh3OTYxGf0POA42FW5Ve=
Zm9o
-QKUwZyyJCn31yRERZzav+lrBVEdRWLbYX41xWBjJRWAGzIGKPxk+VlWLsk9GhqalRlwDeQ90=
/3Bh
-SdR776XwShG6EvZj2DwruUvelJ3uNPwIqyHYgIDA6Ku3yN5HvHgUNb3ZaxkgPpKd2Q7XmjKw=
tuyQ
-1prUnZfp8Yve393YxSH3gTnhO6EW1S3QeCd97rKVJqQ5RzSL8QVpMuSLgVNd6TNZ+u/B+Cab=
MzLP
-vtbnVrS2EsVBfwFBYeub3vvV35fn/3T+MMQw6T8AJ4viMwekxiiMYMY2xjbbgv67MT0A1i2J=
uPfA
-VZ5K+WDYIPoFg0aQ731PP24yO4NSUXcTDOqBP01BmePLeyyFYnmB68tO9Xh9t6X0PA5pG9Oe=
Hyr0
-PsU+MMPhm3T+AD24bTin3vb6ZjFJiIRghVrIMMgMABl2RXSQrL5sHo9On+vKuhTTjyfJ2Kcg=
IRDd
-DyzZkr/DNXtm80NW26lIsjIDhAfIsFAzfcBSthYA5ug0QkmNHpr8Y0oJiadQ7b/WWuFrAMyC=
BDII
-L+1ciYcx5UvA8tgENUnSmJBs7JNDSPAL9pKhoegQvMLGkvNuXi69NxNyarGtxuDGHiO9l1e0=
mFXb
-EBYdbrlAxmOS2eyRqOTYMb69nsG47Xqb85LNhg2AXrtNpdKjA6VSCMAGb/MS98z5z8v0L9YM=
xK+q
-yNrRWbFlt8dluqN4akixFpK+HewQgFZpNqaYg8/o7d4irxD775CFwNOwrLOvjR7x7AqJPDSU=
E2mY
-FXd9bRHLrOvYPrvJ2xjFPCZisgGgaRWsRy7Do1D3550Aon5aliJY1YZ+NNKrM2KyaMMJmZn1=
+eWP
-j5QZ5JiniZqoXMdLrl/+xo9BPKp9+VzsJH1Bhm4fknrNlsmLpHWdQQd2EVGjmF4J5gSpimwW=
dJ59
-be32+FOk+BEqUaff4Fr1onIYDM12qsTDDEBje21BRHiBMQV0qYPDkXADD0a5JYDjVtwZDSa8=
ngWG
-m/HrGFmCgiHiA6oTEXpFsrw1BWFQu936rmM1DsMa89htW1hcM0c1zOJUCZIW4f0g0gCpVhY0=
jABn
-SE6IScCPgtYwRYvQsqFSEgmEBKjQBYiOCIPAJyVKsqxhWMG9rgu7czsznzii7Ot2hkQVCg+f=
enHe
-WqTS4vEQVb6B0NjRQEWpDGU2c2pwVltkQgKgYmgtUHJ+2upTXEQrQ5sIvDoo/r4dq0jhzom0=
CWpT
-DnCfgqoYW6JVDl6gDWiBiBNdqnznfVFFkjiAc9wYscu/lpZO96NpDR5RZEYAlG64U4wyzsOI=
/EWs
-Xc0yFLmycnS2wicbv+2aFgRIgsAOAiUdF8tBUbxd/xo3d3taSezf7eOer9f4LwbibPPjCPLb=
QkLB
-sOf2W8xcKJHcDb42TR1vbd+fyeLVASQ4hH122z+c5J9mfYZIJQH4YhqHnHDYWL0wd2p/zIEA=
dN4+
-qkeXRvLxK7DQdx10uwPGe5VC3nI6eBe4dpohbiv1ffleq8jxfjugjmmff5hoR2VQLhnZg6dY=
ZYPB
-c3nPevtLOxdVW3WTbgNMiPlpQzrTQzkf1GQZLfjNwlEkjBGHkAka9vD5p4gAKcK/dNjUAgEj=
NRoP
-QTnzqZGacW8Nu1bj3DR5RQ8FpchptT85zvz5fpR/bqs7PKg4TKUC1qAAYyVkWt9iTZihosoK=
BRBm
-+z7/R+Aw3GCglURfobbYt7LIpcPHemYepK+43Z7diqFuuze0XnKnC2IVXGVMZl9fW62A09ac=
aBJu
-EXf4OmkIrVUfmq79fK7Z+dIODRd+dmHIHCaCAzTVoOxpELbSHikY+x+JUcJj2w12WI87IyGr=
LdRl
-18kT0Ihyez9hYz8WPRI/eHywQkBSCL6UlLzG8Yw7wF3D7san3zoU1CQvNtK8cj1YoqCIg6ZV=
R1uF
-Dpg8KP6XsSpmi++E5k4yDHUEQ5ORDKbXYS74mGxyfI9hb2Nb7S20/oeeyMEwDDC/KWtlBNsC=
R0dd
-dOmK+rcoemR+2WK1tPO82C0jdLGz+tDwM7iTA5kSZT4sl3FkO37ftlhQiI/7WdIw7jM2NGAi=
DjYa
-JaMbGwoULmsddjaZrVcy1cy4djJUTtD4FKCmRJ7S6I3RUd82CGkiaVl0gpR2tS/T633rsbpv=
hc8S
-DYpodjZDRmU3uh0d5rNEdLtebmhvnjeZLqTr8MGPEtlGsGwo8L4RrWUGUthWIy20kbS6bif5=
huGn
-orifj/3SbhsHn/gmPDRFDi6wbBTGuUO85zzrZhvcSQr+j+ePXmHtGaTDaBiMTimS6Cd3EaTS=
xI23
-zCuwKwfq8GSSNMNJJsLVK0WL2DyVdYQadL/uTzupOhxH5jwg7XXqM87RzMJ0u43sUFq9keV6=
+1bv
-svVfwvCpsPUDocq0KAzT0ubkfDYHktuczZmzmFdB7cGhCxXbQldDYxsySKtSkPFZqV1vnZJS=
GXak
-kKtoSuSuThysnn/aOs9bVnG/udJatDs2vjbWjIxDTA5fEP8RlmRaPQZUt2xGmDLPnzGSgc30=
NPtQ
-0Mnp4Ob0BSDbKWjGMhjRjANShYdalmUtFEtLRolRS21Uq2Q222yBimL2rQYWEumpkjC0hdC/=
X7+A
-tJH6iGwr7shvnECERpMskbdOQqSk7uJGDsI2Yx7L+cyl3zL6BzTrWsRwTgWFojbkriVKDalM=
rW2y
-91IB0WScnd37JyHwuuOTDYRKjIVFAOThZMNWplOn9vdvZlEsg/Nga7xNPk7nn5pREVKaKNaj=
mMIE
-UKbTNSBOjYt0hunUWY6R4W3ffhiPbbKllNBPZ4FnS3M9oHtOZt5YYiywA2aOjDKIRrity70Z=
pSqC
-Xd98xbWLhHao7vu1oOWxvU4zeBmkbcG1qw6JNDGDZO4XbVeNIGwWO0R4Rd9H4Vwx8H5lx0kf=
qz2J
-gZq+HnL641BkSCDMCibGJplZ9qU0w/tIeyEDASITreh/LnPafNPl4fWIuWj7uwuafR5+T7cP=
uj6+
-HuBl+Vy75+dtPU1bPkHHAQRVp4SgVkJ/uhgKKLDGzGK2EHwnXQQTwwKSwAzaudJB1kFfhOXQ=
iiPc
-MJm8phc1ok8vY8saBHojIsaOXEbfdRl3vlIj4m0DMX5z7Or+Va/kb7V7neVQkinhpmncmium=
E6od
-OhwO58r2nOdFy2ebXGRHgU03UdUKAwrHhAcTGA0XICMeBerqwqaXn6XJ0ewnfKqfqTvQ9Ry7=
f2O+
-rZJc6ldI/b0jJ3ZIZfXbG5565scLQcfvCj/dKaVgj5Jegs+ogxGkGYJDSlY7OJK+wwuxdh0Z=
Ltkx
-LPtKr226uXVYbBAHiml4Rhhy+FTruspbqeURiT6sl8mJucu1CnT711j/A6CmNXZx5VIoQjc5=
kI/Q
-yaLdklc0IrKVAUI4I3Wxyt6WOXWgjk58pQpB07rE2yA530r+kye5qS12nscsyOYgojsFoTXT=
NPD9
-h8V7vwN7b4Z01zVsISzcz3NFjLfvOrKSSdU6yjaUqtrEtkrARIfJ1mjxHMS2UQ2tccrgKEBi=
igrI
-KKLEt6LKnOe2L5r4m+H5ulHtRUFlIkVgEq0xtCCYmIko5G02nA6+dQqiK9uzTMMrPEXo032g=
wOTM
-iQBSEEoQdQM/9yeAOlHqRUkD5C9LSPTPFt3G57ztQ0eXS9LlsIk9YUrIiwYPsks2BO/kQN4c=
SAEN
-CG3/nr30qWl5Hdbw4pgSsqkWE302zfAyYELfrXub12qetqxTk3ZOwiXV2xfzSc+nqLZz5mBr=
1SAD
-gDNOQtBgatkm2ZsIRqM3R2uCjpDXbmzJi/zedwMeYejqviXdcN4l0KsMPWc+JoOFQSZS0k32=
XuCs
-ESYZAQKhNAmVR7wzU/vloRd2sKA3WYQgQCCK27JduvJ+Q6UKmECGTamfx/cru5OBUbxSz8cH=
O2Xr
-ZbKGvDUHx7/hQx/f32PD+9naj+88IocUETrJ6t3Hx9ij/+jaKQBA0ANoegJI5EuRna3h9Hed=
eCxZ
-TQ+K+113KZruWs6rVHbY5Eww6Za9JxnDfmITD3LKsfE6BpCBdjcdiC4UgzLAg/I9Tg9adVDd=
r3/3
-Z5iHNlCUdNAbn9RmbSTH3FUCwYveW+tLDl9CaNuIU2OD9ohWQY+xv4PW9d0p8TGomNjHA05u=
1EyF
-TQ/S5a7G/Sx43PdJgEhJCELhwLRl40kq5C4/xyP4b8iXL52KCJaz92Lr899XFZgDKv2SpzU0=
YfAI
-vuzKPm0DcpntKuwi6ON/KrMwyAoagHuYA03Nx7JNPPXYyYXagZpsF0YxlMIhjC9iG0WzZtT/=
2Ypf
-Zb094vAwnlZx8ypF8TiSVHQ8xynQFLGdX5VapFEEDaL/qkIr7Xk6rczoSPiayCsYWmiJaASS=
AJc4
-gqZcGkOIjs+DKbGNGm01Mkg7w7ydGUtM0280zRD0GFE14vZu8grBf8nsvNdAok0NGJ6X3OTv=
zwfO
-ez+KtowJTzcRrWWEVtslzKq8j7lqx9SsyjhiZ5P5PqJkHk0riz323ED2CHt0qREEQRU9w+Mz=
tkHu
-7UOsh46HBigqiw84wqSf1EN2YtLBCZyjBiTRQwPYQQDbaXrsNbb12ZeOh287RpMuNooPf0Fm=
+URV
-YvfynZyci83N3XRQ6gd7STDw0dMYQ+h/K5PIVcpFOhYiyxV0HAjNU8Ask7YPDvUepigv92kZ=
dfXY
-+LXXcC8NDMxQWho2kgISGzGbt5sstvN3G6xA6bgnE1TNfeMxuNBr3cOHEgi59Qc24ac9G1uR=
3jN1
-OUG/usNWnlCqbbks9M4145Sa7iYsMZbK0VlpxsZA/FmadgUzko/ermAowZ/BXUI1/ieqUq3g=
Rgx8
-RwGiJOUhkZkDrEPBP4KyQNrXSK7Qq99qlUDXQSqcAsmSxPTQpzKsVDQSskUnpwKRhyTLfaME=
vzZF
-XxKKpkVbkTC5fQVDy6A5yBKwzaZGRjSGJAYP08DlDJ/B1782MmfDfz6vQbTDEE4gzJUTkMNq=
x3sr
-LMhvgqlptqx2Ofc1eH923LWY2sPkwQBRm4DuyJZQgwwBNJGdSKM51/wfNfBDKF54Kp6yWxSh=
kvDW
-rxmOVHtr4tg4Y3JNUNZCbfltxHk/WRTXw6CwcSTDMCQDhkN6YiEm5Ylm9uoliwFSqAGrNm1m=
5KQG
-a0dPjSRYAwgwgqh0mQO6QvhHL1Ojz9PKpWjTu8NzcHx33tsL7jcT/mH/jC8bA4leezU+7Fhj=
DBZx
-UxuBPw1HyEHgX7lg4G4lIKyk80gAWZOWoip6GhE8cqxAJhjjcRYHdeThw2rEHrdOPDs9WGKW=
W6ne
-L8076E28CzdmYQRWGDU+BkTo6i+yqj2nEIoRzoofPj7jV1aC42T/gw+Or0+Tl/XJz/WWdP3f=
33uO
-/m/2P1rMFtwJpEB0BoC43pmoKJ34aASxtHkHcmRWO+zIqyvr9L1SXoMQo8fmhKvpugfTXKN3=
BW0b
-86npKcx3Ws1295kz3sz62sg+RHkRPuzUmjB9LzFA5a+fruRsn/q8K/xrMS76GgNSu8PRUn65=
sN/y
-JrBrRAMO8X63PNUXwIS9qMGy9CBaTI3i032OtreYV7Jevm8KBIHSXLZ7JNF5ovnaFKEK3PMO=
3DoF
-r2SGApOENM8jhQ21cp7PemagFSwDtkANILIFYzFJKFGJxQElEnE42tMNCbZb2pvfF41jYbM5=
wjgs
-MUPNsHwb8TPlavGXN6eFU8jIZVWoGaPjCMXfmH3hypnCVYVEsgIxWzqfsULgSJfnsFS+L3xu=
MFtU
-JbNXks8aM4DNMoZk5pZIHMgLoP65zz4tc/DakwLDsNJTwMiC7V8MWAZK9zgDv/zxZGRTH4ay=
+pPB
-f47dy4tZ3tps1rmgkhQYp/5wvu0BkbvaejabG0aDsL+2MBsRwpkuMayM1Gf0zC9fnSTWZJ3w=
KYPX
-e3dp4wKOr4Os+VAetys61z2cZbTGrf/jdXwjv5872ezhOhPDAKMlS2yg0QlUpQMxqRbi1EDI=
Yf0v
-gjMTdbHTVhr6bOUrUkMGtjB5w97NGSUwi5c4+EuLoHcTG9wWCyHsCLmE+NyowvaZQ8QiC7T6=
cLfE
-yoMGtXtZmnkWrV6dkPLDwXi0WpFkBaPAd0zaZ+LqF74/KDei+55YfglL6tV1jEzjlJwDLtcF=
YHki
-52sFIKfbwOY+7E8V32Opfgsa5Ib2KBJvj8FPjRJBdx0wqbjxFrVeZtr3rdaKFE4Wm31uGM7n=
zJww
-eX73O14WP3nx+BmkOiMqTnJIkr2qaVDQM0hBbDM94+Nrnj1qcl/yyOmekKICVFTT66NxuhTK=
ZIkt
-UIRusGSB1oIxMGEDgIhI8+RisfStaB18y+acjgUEweNYjbk2csJm855knl4DOFDfmTmyT1fa=
kTaJ
-RNHAoQMI7ib0OdswW8+7cCGczCtXY0mTOy06XDWdMdwNqksE8CUidZfI7vzDTf2ZARnRurMN=
s8GA
-wYIuNK9ccCMOPBSzjZpD/BWpK+QHxnWXrdqkZjYMBgvT0cp/DakWaLNx4T0c06tjjSKAjTRn=
TpIU
-kLPffsxM0hUjdSzJHWGlePUnmOwMwWUEKWCi6riqhWVaaFANsDZOcXEGAgTmTjTzr/O9r3F+=
l8bh
-rr2zpvGROewJ3LQY7Sk0g1256eU1juBENbBkogwZ+pyKShGvGXE2rrLutfM6/r/7q8QVjmrk=
KNcm
-454VBq9WOSJyKkQimrLDVMi/jWwYeHTgpyqC6smdElpCYOWkWw25k7gDdav5sNiA+A9Fw0Qb=
Uvnm
-QCvdTYeahEAXhTUOA3GUBCkKVRPQ/RkQ1lfRJSQ9O4bKjauJBZZADLZ5WIM25gkFKDuUQdmC=
YsCm
-ODFWZQzY63NSXDVMJd6uPgRj2OVlaruEMRpiGuZnTghMGebliomErLqHuRmsUxwms9ccXL6Z=
pO5p
-cMTeQEqjGu9aUZmHaGC7YhBPgmML5uxYDHxsopGeYpQxjTh4iKMtsfZtosG41QQ9l9WmidPd=
NKBj
-nBekiBdIwWOH0dOEUeQtPLXM96zyEWdgRPyt9BHAQne1Y+D5GScxsTvT3PY9bmaKI2KwqJgO=
WgS3
-Iu0yxnOLWazFfy0AlTGXOvGQhmA1EqjM4yjJYGlMSHtqzxDMm2uF9lgYYGB+phcZYyTVmol9=
C4Jj
-Q1KX0bH7D9yhh16ufa8/hUJvnHpUzexU8XvVB2SJM13sPx32LfP58/X7fqI30y7so8p0u/KA=
9s1z
-2vqZt+RlDI2Ikdsw5DEjZMUjqjqK6tO7OHeIDIcPbgbgahJvqmfwMi70CRr4sSE3bBiSOqaE=
8yEh
-pui7x3AO3wuCfSc+mpitbEfRDSxGZr5U+ISyGUXVglpmcgntVcmY7KnYQxjFjUdelILTRtHV=
nWhZ
-iJtkKLK5vE3DO//h1mJV5D2XzU8Cn1gfvjBxDKARA2siXT3FpjmhUESa8jORu63DiI4cOFst=
CWfW
-mmOq688biIiHrlhOy7DrVrNvEKYlkK9eqNzYBcEGQ8aaDssiqq7tILG6xfkzUNopOX7/mXJn=
Cs5n
-RWb0CR0jF0yHQ0qTGOk8Wfr0bvmqMRBuqAyGo7ejEZcx9yhgzM0eUdnf5Poy2zQt1GOjtqmg=
sIW0
-0X8LIz06B4qN92mAG2MmyTIxmqwarDLaCCcTU7ML6unv4MPh0kp2bRaLNPeh0two3voe79vz=
upzP
-m6brs46loSbSLouhIzyiFnDEkjV6ORIMIGVA25qQBIsFzzCjDgUTe7Cc5jIIAmDAGiAa2P+8=
trdt
-CcQ9N9pYTyEJ5hBXsjR+wG+i552kh4XyTbrwgWIqGEmr6pmGMUKs7kswFj7HpKQSXyj5cG9Z=
Q1u+
-TFvOZmKAyUh6dx/b9X2UWpgQ7pLZHB99NEJNHcV9t2nlZqb17+8MqYs6G3BwjpCevgHBnh99=
QYDs
-WdM4zC6e0LJZUmIQGzaLGDK5/0/7Z3JVA6e83EzNrpDk4n0iSpenTMRgJoYJCxQ+n+f8t7nJ=
n1a9
-6e5tIR140NovoAX/8XckU4UJAK1QopA=3D
-=3D=3D=3D=3D
Index: sys/contrib/dev/nve/basetype.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/basetype.h	(revision 261434)
+++ sys/contrib/dev/nve/basetype.h	(working copy)
@@ -1,281 +0,0 @@
-/***********************************************************************=
****\
-|*                                                                      =
     *|
-|*       Copyright 2001-2004 NVIDIA Corporation.  All Rights Reserved.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN  IS PROPRIETARY AND CONFIDENTIAL=
     *|
-|*     TO NVIDIA, CORPORATION.   USE,  REPRODUCTION OR DISCLOSURE TO ANY=
     *|
-|*     THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN IS PROVIDED  "AS IS" WITHOUT    =
     *|
-|*     EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED   =
     *|
-|*     WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A=
     *|
-|*     PARTICULAR PURPOSE.                                              =
     *|
-|*                                                                      =
     *|
-\***********************************************************************=
****/=20
-
-
-/*++
-
-File:
-
-	basetype.h
-
-
-Abstract:
-
-	This file contains the base type definitions used by the networking dri=
ver.
-
-
-Revision History:
-
-	SNo.	Date		Author				Description
-	1.	2/7/2000	AJha				Created=09
-
-*/
-
-#ifndef _BASETYPE_H_
-#define _BASETYPE_H_
-
-#ifndef IN
-#define IN
-#endif
-
-#ifndef OUT
-#define OUT
-#endif
-
-//
-// Useful "types"
-
-#ifndef NULL
-#define NULL            0
-#endif
-
-#ifndef TRUE
-#define TRUE            1
-#endif
-
-#ifndef FALSE
-#define FALSE           0
-#endif
-
-#if 1
-//
-// Don't use as these are going to be deleted soon. Use NV_ instead
-//
-#define VOID                void
-typedef VOID                *PVOID;
-
-typedef unsigned char   UCHAR;
-typedef UCHAR * PUCHAR;
-typedef unsigned short  USHORT;
-typedef USHORT * PUSHORT;
-#ifdef linux
-typedef unsigned int ULONG;
-#else
-typedef unsigned long ULONG;
-#endif
-typedef ULONG * PULONG;
-
-typedef char CHAR;
-typedef short SHORT;
-typedef long LONG;
-
-typedef unsigned int UINT;
-typedef unsigned int *PUINT;
-
-
-#endif
-
-
-#define NV_VOID            	void
-typedef NV_VOID            	*PNV_VOID;
-
-typedef unsigned long		NV_BOOLEAN, *PNV_BOOLEAN;
-
-typedef unsigned char		NV_UINT8, *PNV_UINT8;
-typedef unsigned short		NV_UINT16, *PNV_UINT16;
-#ifdef linux
-typedef unsigned int		NV_UINT32, *PNV_UINT32;
-#else
-typedef unsigned long		NV_UINT32, *PNV_UINT32;
-#endif
-
-typedef signed char   		NV_SINT8,  *PNV_SINT8;
-typedef signed short  		NV_SINT16, *PNV_SINT16;
-typedef signed long   		NV_SINT32, *PNV_SINT32;
-
-
-#if defined(linux)
-
-    typedef unsigned long long           NV_UINT64, *PNV_UINT64;
-    typedef signed long long             NV_SINT64, *PNV_SINT64;
-
-#else
-    #if _MSC_VER >=3D 1200         // MSVC 6.0 onwards
-        typedef unsigned __int64 	NV_UINT64, *PNV_UINT64;
-        typedef signed __int64 		NV_SINT64, *PNV_SINT64;
-    #else
-        typedef unsigned long     	NV_UINT64, *PNV_UINT64;
-        typedef signed   long 		NV_SINT64, *PNV_SINT64;
-    #endif
-
-#endif
-
-#ifndef _AMD64_
-typedef unsigned int    NV_UINT;
-typedef signed int      NV_INT;
-#else
-
-#if defined(linux)
-
-typedef unsigned long long  NV_UINT;
-typedef signed long long    NV_INT;
-
-#else
-
-typedef unsigned __int64    NV_UINT;
-typedef signed __int64      NV_INT;
-
-#endif
-#endif
-
-
-//
-// Floating point definitions
-//
-typedef float                 NV_REAL32;   // 4-byte floating point
-typedef double                NV_REAL64;   // 8-byte floating point
-
-
-
-//
-// Bit defintions
-//
-#define NV_BIT(bitpos)                  (1 << (bitpos))
-
-// NV_BIT_SET=20
-// Sets the specified bit position (0..31).=20
-// Parameter bits can be 1 byte to 4 bytes, but the caller needs to make=
 sure bitpos fits into it.
-// x =3D 0xA0
-// NV_BIT_SET(x, 1)
-// Result: x =3D 0xA2
-#define NV_BIT_SET(bits, bitpos)        ((bits) |=3D (NV_BIT(bitpos)))
-
-// NV_BIT_CLEAR
-// Clears the specified bit position (0..31)
-// Parameter bits can be 1 byte to 4 bytes, but the caller needs to make=
 sure bitpos fits into it.
-// x =3D 0xAA
-// NV_BIT_CLEAR(x, 1)
-// Result: x =3D 0xA8
-#define NV_BIT_CLEAR(bits, bitpos)      ((bits) &=3D (~NV_BIT(bitpos)))
-
-// NV_BIT_GET=20
-// Gets the bit at the specified bit position (0..31)
-// Parameter bits can be 1 byte to 4 bytes, but the caller needs to make=
 sure bitpos fits into it.
-// Result is either 1 or 0.
-// x =3D 0xAA
-// NV_BIT_GET(x, 1)
-// Result: x =3D 1
-#define NV_BIT_GET(bits, bitpos)        (((bits) >> (bitpos)) & 0x0001)
-
-
-// NV_BIT_GETVALUE
-// Gets the value from a 32 bit ULONG at specified bit position.
-// Parameter bits needs to be 4 bytes long.
-// Ex. ul32 =3D 0xFEDCBA98
-// ulVal =3D NV_BIT_GETVALUE(ul32, 3, 0)  : Gets value from Bit position=
 3 to 0
-// Result : ulVal =3D 8
-#define NV_BIT_GETVALUE(ulOrigValue, bitposHi, bitposLow)  (((ulOrigValu=
e) >> (bitposLow)) & (~(0xFFFFFFFF << ((bitposHi) - (bitposLow) +1))))
-
-// NV_BIT_SETVALUE
-// Set a value in a 32 bit ULONG at a specific bit position.
-// Parameter bits needs to be 4 bytes long.
-// Ex. ul32 =3D 0xFEDCBA98
-// NV_BIT_SETVALUE(ul32, 0xF, 3, 0)  : Sets value at Bit position 3 to 0=

-// Result : ul32 becomes 0xFEDCBA9F
-#define NV_BIT_SETVALUE(ulOrigValue, ulWindowValue, bitposHi, bitposLow)=
  \
-    ((ulOrigValue) =3D ((((ulOrigValue) & (~ ((0xFFFFFFFF >> (31 - (bitp=
osHi))) & (0xFFFFFFFF << (bitposLow))))) | ((ulWindowValue) << (bitposLow=
)))))
-
-
-#define NV_BYTE(ulus, bytepos)  ((ulus >> (8 * (bytepos))) & 0xFF)
-
-
-#define SWAP_U16(us) ((((us) & 0x00FF) << 8) | \
-                      (((us) & 0xFF00) >> 8))
-
-#define SWAP_U32(ul) ((((ul) & 0x000000FF) << 24) |   \
-                        (((ul) & 0x0000FF00) <<  8) |	  \
-                        (((ul) & 0x00FF0000) >>  8) |	  \
-                        (((ul) & 0xFF000000) >> 24))
-
-#define NV_FIELD_OFFSET(TYPE, FIELD)  ((NV_UINT32)((NV_UINT64)&((TYPE *)=
0)->FIELD))
-
-#define ADDRESS_OFFSET(structure, member)       ((NV_UINT32) ((NV_UINT8 =
*) &(structure).member  \
-                                                            - (NV_UINT8 =
*) &(structure)))
-
-
-#define NV_MIN(a, b) ((a < b) ? a : b)
-#define NV_MAX(a, b) ((a > b) ? a : b)
-
-#ifdef AMD64
-#define PNV_VOID_TO_NV_UINT64(x)    ((NV_UINT64)(x))
-#define PNV_VOID_TO_NV_UINT32(x)    ((NV_UINT32)(NV_UINT64)(x))
-#define NV_UINT64_TO_PNV_VOID(x)    ((PNV_VOID)(x))
-#define NV_UINT32_TO_PNV_VOID(x)    ((PNV_VOID)(NV_UINT64)(x))
-#else
-#define PNV_VOID_TO_NV_UINT64(x)    ((NV_UINT64)(NV_UINT32)(x))
-#define PNV_VOID_TO_NV_UINT32(x)    ((NV_UINT32)(x))
-#define NV_UINT64_TO_PNV_VOID(x)    ((PNV_VOID)(NV_UINT32)(x))
-#define NV_UINT32_TO_PNV_VOID(x)    ((PNV_VOID)(x))
-#endif
-
-#define NV_MAKE_TAG32(s)            (((NV_UINT32)((s)[3]) << 24) | ((NV_=
UINT32)((s)[2]) << 16) | \
-                                     ((NV_UINT32)((s)[1]) <<  8) | ((NV_=
UINT32)((s)[0])))
-
-#define NV_MAKE_TAG64(s)            (((NV_UINT64)((s)[7]) << 56) | ((NV_=
UINT64)((s)[6]) << 48) | \
-                                     ((NV_UINT64)((s)[5]) << 40) | ((NV_=
UINT64)((s)[4]) << 32) | \
-                                     ((NV_UINT64)((s)[3]) << 24) | ((NV_=
UINT64)((s)[2]) << 16) | \
-                                     ((NV_UINT64)((s)[1]) <<  8) | ((NV_=
UINT64)((s)[0])))
-
-typedef union _NVLARGE_INTEGER {
-
-#if 0
-    // NO UNNAMED UNIONS ALLOWED !@
-    struct {
-        NV_UINT32   LowPart;
-        NV_SINT32   HighPart;
-    };
-#endif
-
-    struct {
-        NV_UINT32   LowPart;
-        NV_SINT32   HighPart;
-    } u;
-
-    NV_SINT64       QuadPart;
-
-} NVLARGE_INTEGER, *PNVLARGE_INTEGER;
-
-
-#ifndef LINUX
-typedef unsigned short NV_WCHAR;
-#else
-typedef unsigned long NV_WCHAR;
-#endif
-
-typedef NV_WCHAR *PNV_WSTR;
-
-#if defined(linux)
-#if !defined(NV_API_CALL)
-#if defined (__i386__)
-#define NV_API_CALL __attribute__ ((regparm(0)))
-#else
-#define NV_API_CALL
-#endif
-#endif
-#else
-#define NV_API_CALL
-#endif
-
-#endif // _BASETYPE_H_
Index: sys/contrib/dev/nve/drvinfo.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/drvinfo.h	(revision 261434)
+++ sys/contrib/dev/nve/drvinfo.h	(working copy)
@@ -1,190 +0,0 @@
-/***********************************************************************=
****\
-|*                                                                      =
     *|
-|*         Copyright 2001-2003 NVIDIA, Corporation.  All rights reserved=
=2E    *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN  IS PROPRIETARY AND CONFIDENTIAL=
     *|
-|*     TO NVIDIA, CORPORATION.   USE,  REPRODUCTION OR DISCLOSURE TO ANY=
     *|
-|*     THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN IS PROVIDED  "AS IS" WITHOUT    =
     *|
-|*     EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED   =
     *|
-|*     WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A=
     *|
-|*     PARTICULAR PURPOSE.                                              =
     *|
-|*                                                                      =
     *|
-\***********************************************************************=
****/
-
-/*  =20
- *   This file contains the header info common to the network drivers an=
d applications.
- *   Currently, these applications include ASF, co-installers, and qstat=
s.
- *
- *
- */
-
-#ifndef _DRVINFO_H_
-#define _DRVINFO_H_
-
-// Switch to byte packing, regardless of global packing specified by the=
 compiler switch
-#pragma pack(1) =20
-
-//////////////////////////////////////////////////////////////////
-// For the ADAPTER_GetStatistics call used by qstats.  This=20
-// is the template used by the legacy driver.
-#define MAX_TRANSMIT_COLISION_STATS     16
-
-#define ADAPTER_STATS_LEGACY_VERSION    1
-#define ADAPTER_STATS_RM_VERSION        2
-
-typedef struct  _ADAPTER_STATS_V1
-{
-    NV_UINT32   ulVersion;
-
-    NV_UINT32   ulSuccessfulTransmissions;
-    NV_UINT32   ulFailedTransmissions;
-    NV_UINT32   ulRetryErrors;
-    NV_UINT32   ulUnderflowErrors;
-    NV_UINT32   ulLossOfCarrierErrors;
-    NV_UINT32   ulLateCollisionErrors;
-    NV_UINT32   ulDeferredTransmissions;
-    NV_UINT32    ulExcessDeferredTransmissions;
-    NV_UINT32   aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLIS=
ION_STATS];
-
-    NV_UINT32   ulMissedFrames;
-    NV_UINT32   ulSuccessfulReceptions;
-    NV_UINT32   ulFailedReceptions;
-    NV_UINT32   ulCRCErrors;
-    NV_UINT32   ulFramingErrors;
-    NV_UINT32   ulOverFlowErrors;
-    NV_UINT32    ulFrameErrorsPrivate; //Not for public.
-    NV_UINT32    ulNullBufferReceivePrivate; //Not for public, These are=
 the packets which we didn't indicate to OS
-
-    //interrupt related statistics
-    NV_UINT32   ulRxInterrupt;
-    NV_UINT32   ulRxInterruptUnsuccessful;
-    NV_UINT32   ulTxInterrupt;
-    NV_UINT32   ulTxInterruptUnsuccessful;
-    NV_UINT32   ulPhyInterrupt;
-
-}   ADAPTER_STATS_V1, *PADAPTER_STATS_V1;
-//////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////
-// For the ADAPTER_GetStatistics call used by qstats.  This=20
-// is the template used by the FD.
-typedef struct  _ADAPTER_STATS
-{
-    NV_UINT32   ulVersion;
-    NV_UINT8    ulMacAddress[6];
-
-    //
-    // Tx counters.
-    //
-    NV_UINT64   ulSuccessfulTransmissions;
-    NV_UINT64   ulFailedTransmissions;
-    NV_UINT64   ulRetryErrors;
-    NV_UINT64   ulUnderflowErrors;
-    NV_UINT64   ulLossOfCarrierErrors;
-    NV_UINT64   ulLateCollisionErrors;
-    NV_UINT64   ulDeferredTransmissions;
-    NV_UINT64    ulExcessDeferredTransmissions;
-    NV_UINT64   aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLIS=
ION_STATS];
-
-    //
-    // New Tx counters for GigE.
-    //
-    NV_UINT64   ulTxByteCount;
-
-    //
-    // Rx counters.
-    //
-    NV_UINT64   ulMissedFrames;
-    NV_UINT64   ulSuccessfulReceptions;
-    NV_UINT64   ulFailedReceptions;
-    NV_UINT64   ulCRCErrors;
-    NV_UINT64   ulLengthErrors;
-    NV_UINT64   ulFramingErrors;
-    NV_UINT64   ulOverFlowErrors;
-    NV_UINT64   ulRxNoBuffer;
-    NV_UINT64   ulFrameErrorsPrivate; //Not for public.
-    NV_UINT64   ulNullBufferReceivePrivate; //Not for public, These are =
the packets which we didn't indicate to OS
-
-    //
-    // New Rx counters for GigE.
-    //
-    NV_UINT64   ulRxExtraByteCount;
-    NV_UINT64   ulRxFrameTooLongCount;
-    NV_UINT64   ulRxFrameAlignmentErrorCount;
-    NV_UINT64   ulRxLateCollisionErrors;
-    NV_UINT64   ulRxRuntPacketErrors;
-
-    NV_UINT64   ulRxUnicastFrameCount;
-    NV_UINT64   ulRxMulticastFrameCount;
-    NV_UINT64   ulRxBroadcastFrameCount;
-    NV_UINT64   ulRxPromiscuousModeFrameCount;
-
-    //Interrupt related statistics
-    NV_UINT64   ulRxInterrupt;
-    NV_UINT64   ulRxInterruptUnsuccessful;
-    NV_UINT64   ulTxInterrupt;
-    NV_UINT64   ulTxInterruptUnsuccessful;
-    NV_UINT64   ulPhyInterrupt;
-
-
-    //
-    // Handy things to know
-    //
-    NV_UINT64   ulDescriptorVersion;
-    NV_UINT64   ulPollingCfg;       // configured for cpu or throughput
-    NV_UINT64   ulPollingState;     // current optimizefor state.
-
-    NV_UINT64   ulNumTxDesc;
-    NV_UINT64   ulNumRxDesc;
-
-    //=20
-    // Useful to determine if TX is stuck.
-    //
-    NV_UINT64   ulNumTxPktsQueued;
-    NV_UINT64   ulNumTxPktsInProgress;
-
-    //
-    // Rx Xsum Cntrs
-    //
-    NV_UINT64   ulNoRxPktsNoXsum;
-    NV_UINT64   ulNoRxPktsXsumIpPassTcpFail;
-    NV_UINT64   ulNoRxPktsXsumIpPassUdpFail;
-    NV_UINT64   ulNoRxPktsXsumIpFail;
-    NV_UINT64   ulNoRxPktsXsumIpPassNoTcpUdp;
-    NV_UINT64   ulNoRxPktsXsumIpPassTcpPass;
-    NV_UINT64   ulNoRxPktsXsumIpPassUdpPass;
-    NV_UINT64   ulNoRxPktsXsumReserved;
-
-#ifdef _PERF_LOOP_CNTRS
-    NV_UINT64  ulNumTxCmplsToProcess;
-    NV_UINT64  ulNumRxCmplsToProcess;
-    NV_UINT64  ulNumIntsToProcess;
-
-    NV_UINT64  IntLoop0Cnt;
-    NV_UINT64  IntLoop1Cnt;
-    NV_UINT64  IntLoop2Cnt;
-    NV_UINT64  IntLoop3Cnt;
-    NV_UINT64  IntLoop4Cnt;
-    NV_UINT64  IntLoop5Cnt;
-    NV_UINT64  IntLoop6To10Cnt;
-    NV_UINT64  IntLoop11Cnt;
-    NV_UINT64  IntMaxLoopCnt;
-
-    NV_UINT64   IntRxCnt0;
-    NV_UINT64   IntTxCnt0;
-
-    NV_UINT64   MaxRxLoopCnt;
-    NV_UINT64   MaxTxLoopCnt;
-
-#endif
-}   ADAPTER_STATS, *PADAPTER_STATS;
-//////////////////////////////////////////////////////////////////
-
-#pragma pack() =20
-
-
-#endif   // #define _DRVINFO_H_
-
-
Index: sys/contrib/dev/nve/i386/nvenetlib.README
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/i386/nvenetlib.README	(revision 261434)
+++ sys/contrib/dev/nve/i386/nvenetlib.README	(working copy)
@@ -1,52 +0,0 @@
-$FreeBSD$
-
-The installation and use of this software is subject to the following li=
cense terms and conditions:
-
-License For Customer Use of NVIDIA Software=20
-
-IMPORTANT NOTICE -- READ CAREFULLY: This License For Customer Use of NVI=
DIA Software ("LICENSE") is the agreement which governs use of the softwa=
re of NVIDIA Corporation and its subsidiaries ("NVIDIA") enclosed herewit=
h, including computer software and associated printed materials ("SOFTWAR=
E"). By downloading, installing, copying, or otherwise using the SOFTWARE=
, you agree to be bound by the terms of this LICENSE. If you do not agree=
 to the terms of this LICENSE, do not download, install or use the SOFTWA=
RE.
-
-RECITALS
-Use of NVIDIA's products requires three elements: the SOFTWARE, the hard=
ware on a computer motherboard, and a personal computer. The SOFTWARE is =
protected by copyright laws and international copyright treaties, as well=
 as other intellectual property laws and treaties. The SOFTWARE is not so=
ld, and instead is only licensed for use, strictly in accordance with thi=
s document. The hardware is protected by various patents, and is sold, bu=
t this agreement does not cover that sale, since it may not necessarily b=
e sold as a package with the SOFTWARE. This agreement sets forth the term=
s and conditions of the SOFTWARE LICENSE only.
-
-1. DEFINITIONS
-
-1.1 Customer. Customer means the entity or individual that installs or u=
ses the SOFTWARE.
-
-2. GRANT OF LICENSE
-
-2.1 Rights and Limitations of Grant. NVIDIA hereby grants Customer the f=
ollowing non-exclusive, non-transferable right to use the SOFTWARE, with =
the following limitations:
-
-2.1.1 Rights. Customer may install and use one copy of the SOFTWARE on a=
 single computer, and except for making one back-up copy of the Software,=
 may not otherwise copy the SOFTWARE. This LICENSE of SOFTWARE may not be=
 shared or used concurrently on different computers.
-
-2.1.2 Linux/FreeBSD Exception. Notwithstanding the foregoing terms of Se=
ction 2.1.1, SOFTWARE designed exclusively for use on the Linux operating=
 system may be copied and redistributed, provided that the binary files t=
hereof are not modified in any way (except for uncompressing/compressing =
files).  SOFTWARE designed exclusively for use on the Linux Operating sys=
tem but which has been authorized by NVIDIA for use on the FreeBSD Operat=
ing System may also be copied and redistributed, provided that the binary=
 files thereof are not modified in any way (except for unzipping of compr=
essed files). =20
-
-2.1.3 Limitations.
-
-No Reverse Engineering. Customer may not reverse engineer, decompile, or=
 disassemble the SOFTWARE, nor attempt in any other manner to obtain the =
source code.=20
-
-No Separation of Components. The SOFTWARE is licensed as a single produc=
t. Its component parts may not be separated for use on more than one comp=
uter, nor otherwise used separately from the other parts.=20
-
-No Rental. Customer may not rent or lease the SOFTWARE to someone else.
-
-3. TERMINATION
-
-This LICENSE will automatically terminate if Customer fails to comply wi=
th any of the terms and conditions hereof. In such event, Customer must d=
estroy all copies of the SOFTWARE and all of its component parts.
-
-4. COPYRIGHT
-
-All title and copyrights in and to the SOFTWARE (including but not limit=
ed to all images, photographs, animations, video, audio, music, text, and=
 other information incorporated into the SOFTWARE), the accompanying prin=
ted materials, and any copies of the SOFTWARE, are owned by NVIDIA, or it=
s suppliers. The SOFTWARE is protected by copyright laws and internationa=
l treaty provisions. Accordingly, Customer is required to treat the SOFTW=
ARE like any other copyrighted material, except as otherwise allowed purs=
uant to this LICENSE and that it may make one copy of the SOFTWARE solely=
 for backup or archive purposes.
-
-5. APPLICABLE LAW
-
-This agreement shall be deemed to have been made in, and shall be constr=
ued pursuant to, the laws of the State of California.
-
-6. DISCLAIMER OF WARRANTIES AND LIMITATION ON LIABILITY
-
-6.1 No Warranties. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, TH=
E SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL =
WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMP=
LIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-6.2 No Liability for Consequential Damages. TO THE MAXIMUM EXTENT PERMIT=
TED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABL=
E FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOE=
VER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,=
 BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNI=
ARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVE=
N IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. MISCELLANEOUS=20
-
-The United Nations Convention on Contracts for the International Sale of=
 Goods is specifically disclaimed. If any provision of this LICENSE is in=
consistent with, or cannot be fully enforced under, the law, such provisi=
on will be construed as limited to the extent necessary to be consistent =
with and fully enforceable under the law. This agreement is the final, co=
mplete and exclusive agreement between the parties relating to the subjec=
t matter hereof, and supersedes all prior or contemporaneous understandin=
gs and agreements relating to such subject matter, whether oral or writte=
n. Customer agrees that it will not ship, transfer or export the SOFTWARE=
 into any country, or use the SOFTWARE in any manner, prohibited by the U=
nited States Bureau of Export Administration or any export laws, restrict=
ions or regulations. This LICENSE may only be modified in writing signed =
by an authorized officer of NVIDIA.
Index: sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu	(revision 261434)
+++ sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu	(working copy)
@@ -1,320 +0,0 @@
-$FreeBSD$
-begin-base64 644 nvenetlib.o.bz2
-QlpoOTFBWSZTWSDHheUAMsL/////////////////////////////////////////////4EQz=
TUNc
-bl2envbuoZ32+6l7UqAC3Z7vc94Or3e71IAA8D6+8zp9Pb2cpz25cy8899HK75hzz68d9fKf=
Z93z
-u9ze3vrw+hRSIffLl3Nd7OXbuFTV73dzoyVHba69t98z7b77dV6ejnXt729noPPc869rl6u9=
bvrd
-ffF7bw3nmPHsD3tY7dmR7Fdua3ZezWgE73uldi+7wLkRt6H3vd76++9o+3ci3rr2zNN6uK++=
CPvR
-5B4YaEQmgATTRoGgIwBMENM0TTBMRiTGk2jRTyYmAmRo0xNMKaMmNMEnpPRpPQp+jUaeUaeo=
wyaU
-/VPGIU9NPTU2VPJtR6npHpHqeSZNPFHpqINCE0ACAmmEGhoTJppiYTTVPDQU2CMGpk1T2U2p=
tQ9U
-8mRpqPNJPU/VPGiniCeTJp6p+qG1PTQ0gemgYUbZTSH6ptE9I08jQj1DCepoDQBpo0EpoQhB=
Gkw0
-Jqep6mJMo/SYTaJPU9I8mp6T02qeKe1T8jSPIeqn6p7VNpqaeptTNTR6m1PSGj1AB6mj1DaT=
1DZQ
-HqDRoZGnqHqNG1A9Jo08po0ZAAA0AZAk0kSImmiYUbQmgp4NJ6myp7TUyNTDU/TU1PRqHpPU=
9TGi
-aepkaZG1NPUPTUB5TQPSepoyaBpkAAAaA00BoaHpAHqaaAAAAyAAAYpCT1NPVR7VDNJ5T1PR=
pPU2
-o9Awp40po8jKB6mQ09T0mI9QPUNqbKaPU9TR6TyaJ6gA9T1HqPKD01G1NqPU9R6mTRppozUB=
kzU9
-J6m1D0RkGnqNBp6h6mj1D0jGoJEiEAJoATCnpiZTwk8pg1MEU9ppqbJpiKeTZJ6Knp5KftJt=
Ggp+
-VPR6VPeqn6ps01TZT0aTzUT9T0pnkk2aTU08pp+qaAeU09qmBNlNPCRp6aZCGjTQ9Q0DQd8s=
sO5h
-vAz8/gqHlJiqlbkKQeWmWEv4AKp5389QWX755RUTliUQIlUUBJzvOWQ/dBn0FK7qi9BFQVGc=
LDJS
-qpnSQsek+Gia16cd8J1fFMT1vNdzKgSAkJwfPE5cxTXvelz7OlHJONaHhLUDaNTb7ne7/Uj6=
q11n
-J5Xt/c/mcvt+4gu72wBTB2mXdUNvKDovb83x0rZj8qfvmZG+OXW0J9WzWsmU932Wr2sGzpLD=
z+ai
-vyKRTxwZxALmGlECIEVBh8i5tpIDBaHG9rhH0v69LptFABhromioVy+CwCrSMw9u7V29cQh+=
RxCI
-vZ72EKc1E9ccLq5pmEN2y+VfjNUhQlIVXNotbVIYXielSdFGFqYP+HlBgefd/ueZIwU0AOp7=
rgeX
-yaiHMUvMm0oz5oWz+vie1BtV8ztPR5eg0nhaTaz7HKxGV6+uoJtjXp71DX0W5tMPkcpu5PYf=
h0Lp
-vxf44Lf29D2+VewONmuR4fybju+dhWnW1f5GJuzyQ/rYN1rFr+fKDtFkH8Fw4MQ/ko+b8asb=
kjhO
-3mIQ9NC99pnCy91a8Z01pIQfWVJ38n1WxMDLp1Ox80F6yptw+Tt37aJ2PK9HCFLZXLI3HMQZ=
NfYn
-A6oeBbd/qGJfEb88pBh+tpVDKeBltS/jt+5n/ZzylBaQpVThO7lX3Xw0Q2XqjCkQkRAh1Ksf=
SsKu
-JVW26T1Hma56furzz0Hor0CHTaj7z0/xNfYdHOyto++xaleYd+kppOdAsnqffmKunXct0l6a=
z879
-d899brk8KPxydedr5Shadjkcbxau7+yL2SVLREO9bQ42XLl0L6FhK+6cenSdawaaz6nNaqyn=
Mlhb
-mAsQCAB8zMuz+Sz5loV2rmMRGC0X07bxMW7ecebtb+sMlThXDdNrggix/7f8ey6vL0vcfhrX=
lSaU
-UcQZavvba49rmZoeeFwwSgRiNzm4+hUk1q6fa1KVue1HZp69cFewoPReX619HmjnqIN6CfYq=
HwAn
-mq36HzS0CGmTOIFBCH0fT/n/l5svL7XrVToOra/T/M+JXRwXO8uuIdVwYZlqjGELusof0Hvb=
Q1jY
-QwPt2mBGwbU68XvcCkwAh4vC0g8smFvObWu87XUMqm/gVkKuHIILqVra+pt71fTXiW/+9vJw=
canx
-v04ECBNoEDNT/aZpsRqJiERK5ANjF/0GVq/uep9UNxSBmZhwUrdDFqzK8dwzprdVeOW2arrF=
tYdY
-7jwv+pWrwMpzqX46CRIMjKgVMDcUPQ+xw8vtB90ZTaEwuRSGVWwgK6MDW5plzu65gvxD4gva=
n0Id
-C2B2yeiVgYwFnqTxwsJ+Vg0S1kCJZm2gQgESDCGklXJs1ZGr9N3+4vodAeSOfBL+tN40laEG=
Rgx0
-MmTzZOZJKtaKX7/s0r169myta1KM2mkozxxTL5Lplzc3lkz0hdBkxLBatPIvPWO1iNwivmYe=
QMgM
-iFJSfv+z6jOtIceXPKFtsg3JD6z4Pr/XfvfvnL2fMsenwU2K2qMFEbNAChQr06oKBeQlEQ2e=
TiWv
-dlvMaHKRNHAIftC3dD6rvG9Btki99jnUDrlN717nWsGxTbZW+E3j3G+ejllEYcXBypJVRSiP=
nU73
-jz0UMJ6thyZEeV55KiqGXLgovV1XYu7tM+WsrBQmmvorZiTwPDNK6aIj9VbrCQGaIgIGI4de=
vEi+
-lj1wzf+K+gh18+LsP4Pm0RW9VPn1cF9csU3SN1ZE6Lomoo1AyVnTzq+lU8hQaQMGTwgq+Czu=
qTd2
-ux3fT9Pv9Pcw4cG7jbEbBpIhoUFFI7KhR6JyRITA601KY4KYpj6dG6o6Gn8zPu8zl9vWvFu6=
8ufJ
-oShobbUxsxeqYqz0dvli8uej5+r5MBFdgG3FmIK2U943E3S3Mb50LaQKohj4qYaxkad3yaad=
VA99
-4oST2mneAm+4PpRYlyjkRvMeZq4ybRRrLF+uvnRM5FiX/LHLuLaPvn5OxyIrVPrQUWn3dGSh=
TOfU
-iIilGQXJJXIQjFmSix7Kv/c7Q/90bIbcyzy0ztC0+DjlW3KWMYBDQNAwhgz9i6NV9DWe2d9a=
jjKX
-L8HJBO7DpkqJrlEKkNfGdEKU+kn3E0Ve6MMCaoCyHQ5J7Tgg4pF1OMx8KQ7zLHHr9Hopqwl8=
bipS
-CBoTD3sScbQsAkaWSgoGDUEGfzKckybR8WlrOLRDOWV9I0tagzMsPS+l9Nhvm9WsO5c/ObCU=
NMiF
-wJzXXUbfoZnSQxDkRaCKwzIijz3cCab02G+IbyDrdC2aTXFHKlKlHeFXzF3lbKLjyp85BZMY=
IZms
-FROaKYJBXAmBIaQTfFcpBkq2S0sBUlwGPUCzCkha9Dvi61SutyQ6zjLTQx1wz5deUGLCKoCY=
Idqo
-JW89t3OrJBeXxz17sXtg7KtcS43xeqzA5JmW2qa1INmkOTjNs6vlevo0pst4legQz3uBpTop=
pX5G
-8Em+RcsNmpkiWzWVV0lutaLxvB2wlTilVRVVTFbwj49P7eqp2eOjNFyXs8+1xPEd6pRKKWlT=
pyZg
-SqxWJXmWvNO3ve5S9PwLy2Gy0FUtqPIuctENdd0Lu1iqdKcmavFybGs6Ccxkoa0vnZMYbHWW=
5Q4z
-WcZOW+KbDh21t3ky3WjnsvCadoI+p5YcM0pllYIqxQFioJTWGmalTNctHLjM42crthpszg0Y=
pNmp
-scM1LarlrbbS2oILNsM2b3mYXndzV27QtsxdQo4+f03G+NcF6a5MFycTfEceHlMRD5BAHRdl=
CgK9
-qg0Gqq+3YtvYp7PGORnmZh7BMu22zsC7iTUxWMXzbLko6s6eOMCV9lV+znZUFrBe0+DQn7Ck=
36Pt
-+M+CFKJ9RGBTxzhNRLcMzCjMzXWta0qmCEw9E1OqclhVPSWuLqZOauDUmsNu9BWMywVlrdnM=
pTbH
-ZYSqkV6COP891OlUvRe78OHYRg5KBbZgLsi2xztTRp/hwlNn5/VtyLNqFSNNhkvhNFC6XTPp=
v26z
-S4jArX0k9QhdzmGnLj46Czz/d6zvLNsVmLysHV83mwm6HtoOuqZSODJ7llEPV+pvqlO35BgV=
x+/M
-qekuneoacOG4j7aHQki6rwqViAiUOWl4RRQxtdNTjT21Q4vCfDJisSys99R5RF0RDtJkmB7D=
tCgc
-5n+Pf8jnO899S6p4fadsq5sw3u+xOx7ek477gwSqdRV8ZByO8zOz4brj32ujMIAVk3Bo3npc=
/u6g
-Pfx8lr1mo9H6v6UqLFkH9D4cEmkkP+pAAQMSbGkAjQYXmrNi19y6Rdl6lOrV9v93AsdG1nMA=
AuRA
-fVPUxSYcugEi9kWC+YLnbpx3DRXGJst2IFDE2C6TR/bslgyrf1+FUs5toRaa8Rwzvq7jZYCD=
zWAN
-g+k4G0eUwqa3TQBevKwsLn393UJHQybiECVUkiJ30N5YKBznPg73g7nHs2lYohAGsNI8lgWX=
QxfU
-/7TXIOI39r3ZU6I8JhDUgeBCHgYB60HxELBA8NDgVCQ2hSYk5MSqyIngyxvtQhqPKYpNuwFF=
arQz
-HIa+Xlq1xsyimty8TSwqG3YjrWSgv65tSZ+ZysNclgxPJu1EpqDOsIH0QgAZgFLP8OXOA76u=
oZsW
-oRnpOrPE1qZaq2wnWzjCyNOkZtCgdnxe1xdG0iyKKr6C3lSsPasCTzGB4HSDTSsZ0dXDr4Uo=
waKz
-QLT049VoRjs4+sT/RnQ0dLm6+zvNye9TDl7H4OvHQ74wHs0goRe4nNJ6QVknxvR06ZgqGQzg=
NBD3
-+Njb+ZQPdcX6hWJD4L4k6VUMLI2PgNEJpeuWW+VwRCditSlWYYbRJi3BO+GBAP6ySdtCBWQP=
AySL
-Ah6xDmkKwFIqiwk+XZAOb0IN6MxgZbCAYyEDfOixSQKMFgRGE8RDmwgbSZEJKKivpWkRWT3j=
PU7p
-82zYkUREZ6NkKefQrIoKBOhqSAsFiMgj7IQk7AM9Q767AFhJpJ1sJ6pgWIxIc0h20neYQ+AM=
JPt2
-ST2rDpQJDhFhWALAOQkxIoAHSwNJoQ+wZITHcSoqgjJ1DIqrBRYiQ8+1fGYVD17WThhUFIIi=
qEKw
-PB8GkNMgdKSChd07SQ0M0govcZijIjDoiSaYTwmsWSTqQj1lgiQY/m2ClGEFIaf/vyT9UGQ0=
xZ2W
-FYxUBSPh0rvg4FyaRRQk62RZJPPQAqBAxUUnvLQ8e0FhBehlE+L26eERkOc+AvCa3/cMlRnc=
mXwA
-bW+U+xDQnmOqPHcCrrDFiCINkhkPmWrmLGhblR0FjtboGNkKtl4s1hYWIH3jM1OA86nC/T6k=
lYce
-y+zi+Vhvhj8Yh91LnuJLJL/aX3+Plnf32/H0f4Lu41R+xe2dZ0Z09/V6asi7/g42GJiWmSjT=
QHpf
-aTpNFTs3NA+gB02o5L0kBW2r6vS9OehgBoSSVDv7k0xB5NrsW4sU5BgklB/PRslGjAv3z/p7=
aGBM
-hoV1a50zlAeMMWv6FiwhzDM15sm/Y27dz+n8Wp/H4/45Ubyy9PXeFtvnpufz/kluf+7dykWo=
VN+l
-JVXffs96kpMjVF3y6Jt0pHBzzuBXWVn7N06/e5bTb1zKNzeuz3oMg6/S7DWDm/VpbPucqKCI=
FtOb
-TTXtlK+F9W7oKGJMh7qxVjPz2lMYFS6xN66ap2fS1zDkf7fFlcnk32T7ibpL+Pfzd7NW0ePe=
5G36
-apIOBwELB8rd7yvcxvYY+HEZwdzurzC083Od4j+EMSUqJkCIF3mkgLmtfE1oP1mELpkAC3Ob=
AhfR
-GFEQKmqONPvn+RqVvVVWcVEJIVsfBPf3pfK+OW+/8/6xMn5C/cRDUqzvW4lhBvNRrbQBkmIA=
WIAl
-94FSRnRNcw1uUHhDxgKD0Mdxrfiy+YbGy8YbMqXQt1GvIq4NgJttlwTNpzBgwVwYMJ68FfMP=
gvLG
-k167PDteG12+suuBiazA+uNlcKxjr7/ufrp3hZzDqPOtN1yOd7a+j7O+tMVyuNGzG5G4F0Ls=
age8
-HRWfy4d7H/jiXlfYRbHNqGzMIMEYz5fwIigo1Y9PBbp95lZa2lo1FM20EPRtrtSoPIh4Gt+W=
g0+g
-lQ0RSoBgyPlb2XhmJfruf+afOQxA+7llouSL3UgGkhCH8iGolvHpxWSUnFTW2dYdGvNQyov+=
i8yu
-yvj5EiRZytnMyJFlZYyzsbGzkSJEiD2tVHrrKReyJ+e2pYcwKqXrlHQIKMwr2rXBQ2aMtQ8p=
HuCy
-XsKiOFqFWgzesR2xvnAqXjmDErXAFpM3VvJ293cUYoP5lnC15MAvAKBgUFGa6VWPe07/VVvr=
a9+v
-8fZqmfVtkmXfnSWi3ln+UpSF6JVLKlAJMfbop+Ceyj1friZ4u1WV2SS0Ek0P3vUI72KP9RMR=
No+6
-xJG00JecwX79VeQoGv8f7f11l2lulCDAIkgWjxhVJkbCz87OmHBb8QyDsPnPkWu6jW5eZrtb=
mul9
-/f+6ojGG4EbHY444499A+dUF0penYOmG50BXG5GMNQboaggY/iwZOFfT97rcNn41F9zuNaJe=
jC5k
-JjxOWIsws91wafs3+B59vSz8/PT2azWD8/z7zaXveywliKU3uD2qpaZRppcwFTQDzMbjhX7g=
txon
-RB4ZV87NvHD8b7HdkYzUn9k+QWNA4IWjkvoyNSlVAbMmjI5DLnXbmTQGdnz5+20MfF1mLtK+=
vg4y
-TfxLPD2RyzBCWj0WozedcDCcEk+kL0f3sLFg7TDwLeDY2zEiRIuBZWVlZWVhZWWMrRDk8WJ4=
Axmq
-/i9Bhxcm1QBxWICNyU7O2KqV9R2MR7TgPH1gQNy/RHw9KJ6/T4EMFo5RYeecEDcfvhwNL01H=
OUQF
-LWMeiU7yRVwO1cuKT/OfLUY9mjscj+XZm8IFX5e5t7+tsF9iwnsxt4kDGTIEYBx5ImQGwIAQ=
ooZj
-SXOAZIDPAY6mEWlrbxySzv1eRCwJPMVwdgzNK1Q9/IgZfFBbL4K7ln6MgGe/NYFmo6oBKJ6v=
hxBy
-oqv0/FIceeMJdlqAQlpsmu7Pbdxc4OJ12LHFVei4qqwz7durXr9kb79r/S5iXeHfX3W43HuD=
HphL
-c3ltnqETG4PSemJQNH1d3NUdAbwwDfxAhSEFmY3/f+t+30M83d+O2QU3s/N/UKRfQZShNhoL=
nBfk
-H+8Nv+JY7HTxV124njwzdUZff/dYxhmkYQzBap4Kx5Nc8HqCgBmt4XEj9Y8a3+2pcIvyfv9O=
iGnr
-Bboe4c5AzA3zNKgALFl+YgG8aUIB4U11WLJMGbQ7DABT20LHhSiBBZ6QNAoIX0/X+8otm3wD=
2J3Z
-g7eIQpmZjuBRhedgdk8P4JIbpiLZH1ih64P03GxHqSkB03yLtZF+A4aiDUum2OulNTlB7vew=
AjbD
-xjZHhea0T5XO06tHXwcz/JXgL5BZybhMntrECMXJqPIK29HSJBUQEnnayVEvjwIEN5Pnf8ba=
58Ui
-iwIsMilwIW42j1i9pLWzp9Fh93NeBoWnH+QomBD29VODWCfDkIg2p12SCjF67CQYuUYGJIWO=
UwNl
-kc7Ma+O3MtseZlxGKZ7zqSu5/DypXr3UMrEGuYHV16uwrOQpDBJCBXSbDHDHAH+sxRGWAQc4=
Cqqs
-c4IuuPu08rJsDZ3u77Vnk+SsAZ9R8//5+FQbyL+q34/y7XWBzE4W9gugXrRYqsBBzc3uwwsZ=
UyIk
-lyMnE2ZLAUvUBkEQEzRu0URW0hwCu9ywUid7ng5fA329vndnpNrr91NsjhVCBx4fEVoPj3is=
MYim
-YIhMHZbG0UNreIJ2z530l4NuA5/wGLn3gpGGGgkStVgWkiotwNpLoe/gMH3P4D/Amt4P8Npf=
ZaEe
-3GFtw/bjP5wzw5fWmb3gkj3xyxhILHalgXR7cKLM1ewteVd/hJ5K2VV56zaa9snezO1NQLxE=
QhRC
-2ZU1FDlWbyiND9GX2F5iGXgNz2UEflEW7OkSkzOQ0y9ARKQpQWY+E0cyzAYyzFuE1V1cfAbA=
81Eh
-0hwkZnZRrWDJfz2IDpGoFqAzRicGOCWrx7PWOkUYx/5B2w2TmYO0LzR4B+jJfBLU5vSFJo3e=
+vNu
-0wm4RXI8qSDE61WgMtMXLcF6BsUeMOOmZn1HPpiQqVL20L+hJ0PM8OWtNErJQHKtYlfm4gII=
coS4
-rOAyrodAv+Z8P/h9TJrB/fxUfLgLQXPA0udz45ukjTfOMyCQyH2js0tss8OOveUP1muInmcf=
sSQY
-vzaO+49BUWKNiaOYapAHIBoJ+qXDSmcopherE5KGxtiX22HKrnqldExINpng3oBJb7E7HAOt=
48zt
-GgeP3SvDAPhGBnG02Jjix0K3sGzTBELCAZeVNM/5gaIdM5wHPmKE55U+Ys6RoTF0b+ZhgWnS=
NLjB
-iTsmyg8EXgKH9x5PGHPzGLXa67XuqBe3QqB234ridP1vuvS6+IznbM7dOx8d6vldUtre3aGk=
feN4
-TXzFK/zOdF9az67f1+V+selPutVOym6N3hL4C9ugy4+5rNllWJeTSigfQyzKs9L3khMPoMmd=
z2ub
-6bXsPA91ihp7GrmqXL6p8XvU28MzsBxIxciPNWowqmjhksdIeQnhg6Bg2cLQQufu0GTDqjJ4=
SMkq
-ZTMLeUEUKH2FZaxXFrF/IPjXlq86+8qA8b8GnFV3VCYoStLohVYO4cYdf71SemaxOUSIYgtq=
f+Uw
-L3H0POWRFsulSpdrduFViF5J9TguQOMgahpGMeZQoIn7I9+GxVZJ+CVRHhBKyksxTz1iMQMg=
oiDo
-HQI47EHr7SlinNO+kUQIpc6iA/Aox4Oeom68UdsMJwNM6JaBo/Rt9Bxke6d7tnTads6cuTO5=
UyP9
-pBJbiGPiWK050GWhGkAQbgdxvp+aDiuzxvJrk0faohlx9MkLy2luWLsx+2usUbLQHxeNOS82=
/GFb
-i8O0PHxoEsRhu+nBd6lg+JdIpCkaYpMOAYfdogBZBgEhDomOIoe2oZj81cVc9LjC/7W6yedu=
7ufZ
-ZZwGWa5mJF8YbYbx7iUHEIV5ggUOVGa0jJcupVSVz6kUrsJmc0rTihJEV+pYyVuBhT2yvex6=
hzoH
-8v4MylKg+B44kkj+EQ6Rc7iqXElaQrEiZ6FO9ve2tdeHIcvCeGT80kWhnIS1xt58fYM98lub=
CgmQ
-0P3U0Wt7+B6c4gE8gMEBDsrDYs6628E1BlpCB13f2/LNhb6oULYwlxqFECrDKcMAHcVh9f27=
Ickm
-rKevE6HTDuJw8cX0h37O9GcbqF55rZRLGGXN4M0q27NX8VB6A2uAyGmzh8PlN9VdsDxfqsZL=
2oPn
-5vGzd5J+4XwsNAh+xHpVsZtHzqztqpRpQ0pYT1JZK277CejRdgFHTrMD79v+PrI8Ed18AaA1=
7Mgv
-BW4oBeI6V4IcyYEuBoMjBqMpGebF8wDa3LlFhTTVPb1oNa3jH2I1oht2Pp7OQ0r53pb6BUnJ=
v0no
-KejEPO9H8t43szfX5dnHDSfyfOpzZxWnCBWeey0O17LKpTHV1tzeFOA9GxSyQOm8O+8hK69J=
PjhC
-QGQhMB+R5TVqkHK/5wc/v4XHUM6J0TnMMw0+5sND1Yta7e9gMnkR7yLdSoJfhxbPZVwNvKjQ=
eCM0
-O63H1lLGPqXgLhArRggRg5AL6ru/Hfyta8K+sZ5DBSTyU2hz3Q0iPi+NQxtqlOTRiYYdTE6J=
Qb21
-WTHJ8iuXSwB67VgsTrV3uX6S3xvoOTAH7WFlKHAvpMaK4YV3jFIMgTJ5MTgbzPrdzN08pAOG=
DoIw
-ytjQsstfnUoCxe/065rOfTbNMyiURsHqPtA+61Rzw9LouNwdQYJkgiIAeZzSE+iXEUglCp8E=
Kqiy
-dU/jU+MgxlbQgSAxzkMsLAZoW67wHUOszeBAypvXLpNdFdBkPSnAyy41jA4nCqK4ZsHIUZD5=
kYQ+
-mQD3LDtYrwLNe7NmuNOHGXi2YJEEt2YQJijtOI6MuNTaSDN6wMyFAEZFkCfZJJCcsoSUZdBe=
QJLW
-wyUTMprVM0zArmAVlZCqHo7MEvENRBImFMSTZVmgq1VBKpSIXCZwcbDVullNMXgN7mUciKIk=
TISq
-wkHj2JfNPgfOnTykh0cUEYwwoXp6DFyXp1hqPBeGAVK5xo1heCw2pNnBW8aUgnF2GapCpKJv=
NYRE
-4SgqjFXIGQDxWIlx2mAco7SRVNWjkyqDJdk1no/cfE6CaIodPLnhTpwuROllk1k0OCJrTM0a=
ZvWs
-dYgLwDLaVZS6wzMYYmGsUzKTK6G3DTMLA7vKzbd1SFzkOh5mrjotCqyiom0rnGhNW1oZhFgl=
ApkW
-ZbrWJIcM5oHJZq0SXjjXLLpm9bXaZt2zqYUSDyLNnENaTMORc3rQjs03KomCXa0s4nFL1hTU=
pNaU
-qiakvFU0QiGmIKzRqId37DsNEi5lVWHizQ8py5SpAvE0zWSU0UITCKQohqpmM+v0nBm1TQHT=
aabM
-jK/SOxOiXX0ph5dC68OlPb8+RrZhYbpbDjbICiwRiMDcMbHNaMNZkmknOwDeuDgDjbrou0yI=
wt5+
-uecmMNbCF4ehJ0cNDgQD4R18TiHAsrvq1DSLplYD1NDZqnT0zEWEmCBs2+h/JvjQ3O0YoQ00=
uSz7
-bXGXjDIVADQjKVYQpfDuB9aynCG8eS7lwO0LxbvwG1FBrELjmVOolggDwKm/mAIanzxT10DL=
8y7o
-iAge+WCggdYW2kVmiLu3RY9J4d15LNajvTlWf/1VAq2a9zINlh2owNhjHE8fcTBu2MSGSCo7=
0ZMd
-0K/S6WNXCtfJjrBNjP6zkvXdTB54X+nsXMaNvvvYaXpChlbWXzkHBxW1DOcfSgvRIO4bbIvL=
QF70
-1xw7rj+YOOppaOiqKmjEGygvUSnOue7qm2xy4J5UgHt/b907kfVxs8ZJ7ZCesVgqhfBYcIfv=
vg8j
-8vv5M6zGK9lB3cYvjuaY9znv7vY3sHjDkmE8E8YyIzi1Wzw5YqAa4xrmMLANyY3vUSUscz0x=
q8QY
-1dOcStUZcMLx1O0ObPPInimSYlMeJNSZi/ebnY5lFJTEMW0whpWHDbSY0BydtEjBmqxsIrP9=
9q8n
-LZF0pSxVtYSxJ1JxmfBMfFkxuEnTQp+8npuhBgJta9/0vhOx72zsJDWT+/f8lHpaedrOcjTR=
WEeD
-Rz8OVQqLxWu2U0au6Mw4lljKxUXqgjjJhPMvHVvmrhWwiuW3YMabChaPCqb/rrB+0W4+ww0w=
JL44
-yw6/xOvbw6qAr44oKUa33h8tWZejG8RYfMF6pt3dFWFBgyffYMw4O7wSFuwK4AHK9bRqbVDw=
OoGr
-jeM9rnSnYsZOh2tFj3MRxD2xsWOQdy0u5PEiUoRgknA47pwR4ZMmyhuIRkOGriQBLc4t3/WT=
MVh4
-jbRJoML0z3RJb4woMifFA+QeBEW94B+8bxqrgyJrFfrYoDwxeOENFpYTnEVxaR2lTkNucm7k=
3PcF
-ObNfClYqFourKrI7v9fI6PsMbhCfNPK0gnOZ/GQtTFJm2ZLGj91r9yyexqVFCNaXtE2OG2TC=
kAWb
-Hx1f26ihYgTjciqu6SLHiSePCOhzpLIC7+YSevaCz+/oHA9XOd2p2p2ff0s4fhtyyW6lMXqL=
/SFf
-pfN4cdG1g8Z/5StyW0MzUFDVcHfhpF5CBVhAHMkT7t96oPT41Ws7GbSQyJ4dukXRQIlgS4GK=
4DoJ
-xIsV8BrGUCwig7gUJbNn72RXlMA7l6D9hk7A+UNq4APvjPF+N6Fsq6BEWv5dtbgPCmnMzHAE=
SuEh
-nXMa0b7hBUfUXtV187PM66+w3TFnTilk3psRhpc/VZn6Wi9mpFUQ3Jgal+A8DXua2Q6nIhcA=
yw1F
-rLzThwcepbyWfBd/Z7vJ8zeTe/Mq4f62ONZ6rm0B498BzlLfIr7M1hO+huVLMM4oop5Iy+Hf=
ISzm
-ACWWcBNb7MeflYjrOuppuBGQB49T8JgL9wWXqAyiYWZp5xgQXKl75U31PMoNm3ue6jgRIlnH=
MIAa
-lEagoH6AeBj8ehgzxotX0Apkjw0AvhVH9M5W9PVvz8Cn9va+7U7Dvn+/saa9/vzPz5W2dTJO=
ylTE
-0YCEUwslmXwGFmYWq6rpydGeDXuPD1t1826GZxtcwC3fphWmTGyJEpSiHKA02QMjZgKkU3JP=
jeT7
-g1pm76bt+03okkds3OnVQwIoxCcl/OY4J0MbjeAn5GpfH7QPimEeTkYrSsQ1z1+5N20OvuBY=
jAcD
-yxJTMaZIbIaLH0oPIGSIZ6NPaNRhmsZvCBsBMEeR7FBQ7LFDwOPsKUtuugZiSWaA0Idlg2Jr=
2RLE
-ZCCMhCZCBKMKMkiM9iZJ5STWoITp54ENPkBZt8QSv4wGySTYQ+RCG5JoTDKHCwkw3WuW65DP=
QzQ1
-mGV5QH0KnWanWnYUOxTlF45zl0HWZtOCopzglF3ZRnGbcmw20t2dC75cuXITbygOCupxBsNs=
3Ddj
-CGpZKMyMqmeQbOZyA4gjBVxorNFYmQoZepqkFJBCOl6Gze4CAWiR774wbC4OxyBspmfVI7lK=
8u56
-5GsrvZwSWAfGmUFBDGwKNiBT4e8mdfieZ3g6uOjlZRCvfHEUcoNW1KrW0oLBOnxeXLovhmjx=
dGvX
-X2nmQ5QSqaRMGipyOn6qAWOTyOuwraSWQ+Rq3D+LT2fe3xYAHWlktFFRYosHq6tAa0whTF9Z=
974o
-ZnvbmCVFPsdWR8nuvUl0svFzC3IxfHowK2ZENH7OGlDSlCEeE5I2OxwylpLLC69x0f/N4NoK=
3AIf
-Bi5M9Hc2KFMXhCRcD4Mg7v778vA327yS+FaO6/9Zv2NK6uCfFHu0Tcx9bo88tj0enkefAlSm=
JpAW
-LE0tzz/W82T+TD8Lb+uKN/DEh4Kl9YA1HPPQgTxlOvJflOk+bDOfgPBLdGB80dUNrPXpS0Rf=
naYs
-QMaBsUkxEq3M5N2XIf9LyiaXXs5Wzsy+JdyMM3xr2/s1IQQx/v+Uo3Revv8i4nqRMnXCSGLD=
4Xjj
-sfZotI4apGLCOYMylQYvx86mo9b6fNLOyUW9sghh4rHs7veZARwoA8xchm9rxQk3gm+VcZjW=
LMA2
-gd+Z9ZVJIfHBM/0ENrjx3Emo3RP84gkb6PDkpM0ebjHNvGvlPl/MwuGjLF2Z1soGmwxjDx7e=
tzpc
-ab6SczeRFGDmMEQgMXWzIAFshMz6KeJOWuojA89xnNwVFWd/QJ09Yya21MabBvWDetC2lLJH=
tUYF
-EBkbuz0ZekmPEKKZ0apEGDGti1VPVe4QjpNJaHgwhycaPqamqaeLhWnuSYEcvCNSAvJeXrp5=
866w
-hVNRJvCpQw4LxgR0eEEiiDGaoV/BNESQt80QmAfjaZAYIG2XUWF9gaukVZrExQwMuGRjmVKo=
kMcD
-hqkhIUu+7tAKvo4eiaHtauqT1FkcLRuYF45efekGEkHnafXlzVqkE2Pp1SQ5ceSI6rhEysYJ=
WRuz
-z+r7NDodX8G0+i0r7/+uOjZcQ5aYCEhgIiBBHNRg0Ioq0IwEArPBfrnxvD4Pszxufn9n4vp+=
zzg2
-1IdPY+eDWiyZ9PUKGKHLiWs6EYutEz6PHq1fXwN8GQc3f8TqUYXD4hCWUydqQ34w0s5bBR2m=
N7a8
-qXz/xdZ7vua3o4sDvYgiHFx/su2A77Pq3+qo8d2hUi9SXs8hxI3Ic744Xp4h/WeJHtvqYhNr=
oO7z
-zbysI+ztt8zfBjXhIuyxe5W8lRa0dOv/JkLsQzzsD19k3XoE8sL4m0MTSb50HYSojGJIlZSL=
BVFF
-kUigpAjhl+d5R+b8i8Vie44QgMPTvVLgYVYtlgZ3IJFf4ffdxVYHzPsZ9uIqnn0oqowWRF93=
7r23
-f+2OOIwVYNg2vKrSkL6IgO/9IOA2+o5hhZnsGxofx/rfYzff5HBa07gBgUwkKsvAKaEgcA0l=
mcQG
-+4Y244OOkarhz66qXGPMrXWW8r5JthYt6Be60sVweWeQg7BF3mqnoHeo5CME8v1655968WqV=
gokl
-CpZZOs5mNgEG7Lmxa/QxjaUu1H4PStyKA9rqbfGta9RaBadr/3Ex6aJoEQUBVIrQCKCu9geQ=
mh3R
-73aCfbDPniERhN4FJyHshkbr9L9of0pYXp4G9Pitpr2+DUVbAfJgwRGYYSY3jbbLeyiSkHvi=
gM3W
-VbemRk9vlniurrGuaDCUR1cPb62LbpKw+QD7EUR+EOG2t3hdeSoBm9Ko3SIKYS32YTYHjyGp=
4sew
-dMnM8oNPB2b2AKfAuMsZDC9Z5fTJzh0HSsz0Id4/HC9wslFHBrRqo+E/dBtysiehYsrOWFRb=
x4xZ
-waNG+iRB8FkAZj0R1mdQeiMdnlfU/uDvb604fgxVRH6hqrH3KUQ76BYTVvgOw667szdJhvc9=
5MYV
-DttFdl0iyY8foU5IsytTjSVnxfpYaIFog2hd3jrqOCE6J1AKkGEKtIr7F9zk6bt7kCBS33aB=
ZjSA
-IrlQAxo9uWv4hATucXr8i4Xs8gt6LwmEKZlnDec2AS7HeOzhD+8Cc8094ItKlug7k43cZCpN=
AOec
-gi/EFdJluRbCoyuAsWHhJbxWqSjUX0mrUPCAevhPErNtlOxyZoCnHxmZjLKRQzyJn0vk4+Ef=
W++1
-n2h3Qh5X5G2222KClaMWNjmZRqmeGosI3nfAVZeYTxSdc10HnFcz6iOxeAGUZXbOzusEPGk2=
9Ozr
-ovKqZVoTjpzw6tK4i3+Y62mOxzmbTWZH2xXR5QLZCjXo+105TQmSGhCGQxDE0CQKK4DwLvE1=
/4cz
-Jrb1b8zkF9Hknui2Syc4zM5vFDMbdSkWBkBwgOlWKBm/UWQqCvwSlGpRjbPtorZOVY0dhZ5u=
yA3b
-2TK6CPGGwkpKxsFqWlsE0NI8Iu1JUNDyiF4h0s1ZuGY2LyWrv6/wNzgtu67fCr2phXYVMqiB=
jL5L
-c9ejN0qgr1tvf6JnqtSYZpJV66rhWpvq5DdCCG6SQU8ADEpAb/8Q8WrbOd4GcrylaNjVL1mk=
Iyii
-QNPMF8HdikRFQB28sIBVaTlPTIQQaWxeIq0QeIMCzgu+UlUQC5k5F/LimRiw9mDhykCIsJiA=
4Or2
-dzSh+LLIYDgg3mGEIDpsIYGF3bgLYqsQZLQiXtHvJ4fzPvLMVEjlJxOhxZXrDnu0OJujplwL=
qDVB
-IIQ1Ed07/RlH0zJEXZIbyE2lNIH/rc18nngXu6w59NPC8882TpC0T5ClEREFEEilaMEVKhUW=
B2Tj
-vd3u9fR0BDfE/Xm5LSJ9apk/Fr2MWSXoTOUgdOTgjwLYSad3VvJdvsN0YLEAeyarcHPV/wKd=
/jiB
-iW0PWDC8ry52YOx7Wz/ZK3Xts1LO9FgMr799whSuNDLMEDTY+VewjZCV+YWNYwAZgnmeGeTo=
SAFs
-Z453uE5RKcTD4T0IXKgDCj0xLeLJXZKGajVD6/D8Kmabeq4ezpxJpd/BwaNeXSpxivB5/zz3=
WpFV
-sqyVq+qupFX4KHMz8BNRjRT29yW8mcq0EFod0/TRCq8rhKY0E5vj7sHNam01tvk+nljq+DLM=
gOYN
-uc9XbZOzDaY2u8yJbeYu89nNKD/DYpkN9x3fp2fP7RZLAhmWnGsBiD3lQRVAEYwhi+R0y0AO=
93tN
-E/HDK4mICD326jvXZS2PauTlxLo9rEKIgWHgLvaMNHJDJO8I2gXXNa3kHYz6NMHod4mpzrx6=
0kaU
-WoWVl8vburY/84WfMYYTDtQFdphNKCr1qwaw9LpsSfAHwKWFrN3yLJP9prgGNaYj5eIZB1eM=
yFnj
-/LjxycNBIE2SbDPInj6768+85pG8FzZMQswY0aIwUXhGiEhoYMjfEV5N/78z1tZrdzy7rzeP=
HGFv
-UjfzVRaLDsXern4MOvqAJW3yRmvFwXe6h+zbR7zn/i9TkbJ/JGROH+GVp4W6wVdDzu88V1Um=
946f
-wWm9SpGvrfTvhntBGfHyH8WzLeXG57FFu2abM+xPyR036jaNeaKh/DtNGj89hcCKVAFboSAl=
q1fE
-1unG19tUykCIEODbfqL/imhXinpkEIZ9A2pIS4Cn6WGZdE0tBNpjvmP/doR434LE3nW/EHVh=
t8fF
-ZwSrxgNh+YMwYclamPdiVAOBpboZcKQgemnFUDXGtQpf7Cp93CieeD/ac5d4yri8nnrD2zDk=
szAz
-mFuGyBkuJIVx4QrcX3c2JwZoTU/7T2JB6b6simKCdFSg4cCBAkIgUEB41QUpAvtyOviUmg3z=
j1cd
-IR0mLPJL6cYI26DwkyhCpRynPLj9EN7FDeWMFN0LIgggsFR2FZaaaz7S9syxBlPOMwYMEYT9=
phc4
-ZfBAoVOrZTEGREp1ZkXWjWuKOmkmJmIhRI6BY6OTJEEW6HfX0bOzjlRJVgZa+RR1vr8NtvsS=
Inj5
-cUEEdwwsWsp35F/B31u3XIIaqr1KcodEGdCey+Q68N77oYfHhImo6bhGE5neYHlNj+LEMvzi=
gQmi
-zw2xz+K/vx8kMvriISu3Y30WPp1kDDxbKCVoTYD3iY9gfXAaHw99sOvrjfhx7UIC9lpUQxpG=
wAz+
-ODv9AmM0NLkUHWKzCbuBKV4purJBJtL8d8Iejy7dmvCRVqU6gXt4oy2hg6vw0AsVIbVpCRMR=
SlX8
-keCf2jUfqJm9cPCUzUtjwKtXIcBDqge9Oo6y+u91XW2nVqor4KBbwWLV7Mocqekz0Rx8b8v6=
c6+z
-7OfE9xfvAtjVtQjPr7jBUTLSN8pAoIZHqlBUT9nZppkQAB6dDKv4Bo+2vIExxK3ItNDm5lMt=
a8vP
-rdCnl+2AhWDIEQaZCYMeS/q/WU+w5+CGmhGjKLadLdM2t05MYpOf4R3vy3Jtxan+/4eUM6fi=
8yRX
-JIklDEiswBsAbBeAxtAs/Le9pJjYYrBK34kEetWkHuqWdaWMOkWlRs+1OugZBD9d0UfozQdv=
U9Xq
-4wDUtOQHgFPbJVh/Htoz55+ZZp2Ifj3OFtRN349KONW+bbkQdXys74fOX5VDkdi/ODOc/Y1n=
yiZj
-np8/odHZ8SwuUmZYXOWxvmVwrlKvhxvoKOdQnQq2jkoJ7S6WnjCoWEctEYOSqyai1UcJYYZO=
0nCM
-IY2BJaqC7SrDSsdN48HoEF4rvnXMJZ02jXcvcLjRinFE5FwIr0YOqhCgUErhDyVJ0QDG4/FR=
b6l6
-5AKaSmbU7fyHjmj2htnd7j+WZ7ZDJ1WowUEEZBEnmnmUoxTIyijqmZERKNUT1tphbClsUpaK=
RSKI
-nwTeYcgtFjEjEUQUn0Igdh6NmzJ67RhjKXk46sqBt3lQHdKhu70ca1tREbdZLiFlzx80iqa1=
QxEY
-j41uqWPsH2HHyfsj7n7n4fcmk2FK5yxJGCURoLEJ43j+pDfQGXyxBvAgm4+BJ/9SNUDzGvpq=
rXi0
-MtDPoGEPfYOH9bpSxHTnv1KsXubnZEjzY4csfx/GrTOo1XJJbob4nTDcmtpvnoKCj5owXxhn=
Y4JQ
-RZzkAxguEPsGZPnDjyGdvgRxtxuM61cpmxrz4gabU6S8UB9rKadVwYDp+nZhhOLMdp7bDF2N=
9AlV
-2zHaLNo4U4+iMNnynKFfrASJEiKFRqWVAwDznZmFLdU4vMFeWP1/Ni6lcobo3V9MqzEuE91E=
HYNx
-zXfkGrEQmXhlM4CT1BPqDajE8qM/RfuGP6Kd5HIowvJbdSjB2bivEagpmEMOGEMc3G91ycq+=
cdFy
-kOar6GFy8G7gfldurCwqE8SZ2xB2Y2zEzK3oke8z7KV3gwCz99G4aSDK7Zwff2cRT5jRx42U=
+SQ3
-enie97CpYSbR7usJ1ehLAqSVc9CXdMUQHlmHidi/67wQ1KHQ+y3OECI/I6t2iwHANFwzAZCb=
Xmm6
-pxCM3AajQ3nh/vzunZdakm6xQhehCgyIk099XuLG7pRJNCHmuDom3jU5GFc7LXoXLbiCo5jS=
+kZC
-+9JBYa/O84hbGdj4sxeaY8cbRp1RA1NmP+zIkDPxHBd3dqWdQRlh5QHzsHnf4e9992Pk9/eb=
CeSL
-VW+1mojIstMHfDK0CfNEGjZDQsHX1x5G+yEy8faCeXBgBmEgoRgFMJm+xllfly25GKM9XRaJ=
FQpG
-DRYpUwajk/lqRn01qWmKQOEU1RmYvDhkjpVFv1LCXoF1ekpmWUyx9X1V25LOIxrAEmZdLkmS=
a2cX
-B5xQMXiyIzaomxtPXkySRivE/BiuFRGIyKzIXUy/LrU0FlrQGoYqXtndwbMgvPsgbcpRiYaO=
NkV/
-UpNZoprkJUjRcad6JygA+6yTCga08+mizjO6qkkWaG8O7OUkPtp0rOwsScghzY9C6Ui6h8kY=
ivkc
-nxrc/Y0kGRFtpUMucOKMKblgMwS7BWxONIMEZ9Ir2ZLLZddf5+7JQh1vpmSdaL6l7W+jw9Hs=
3sJd
-XPQU35hTpZF+lfJTaKbhpmwTfCzmZBmnnZliOWtFaqa1QmeJ39fiKT2fcRjkZgDqEus9L8JF=
+hpQ
-ODMsNNiJmr8/C/PkL1uyxiegur2uKI0Za8Y+7QYdOkP8n8K04Htpbr+HI4zNQGblAM0R4oYK=
WlCF
-An9x1vWa6meJZ6FMGp8ZMy/SMLjPk/u75j+52cfVunIf8KfcK6t3ZFAQH2R8gS9tofqeDg6k=
Vmyv
-bDBYMbayVUCDLyOQMODjuYAP5ATdrjna72gsrsSI0sMfjqm8reI0rH35hLe9VUHarL/a8jpY=
K4wM
-R2CDCkn48bIw8FUcPB5VJF9elWDkPA1Oj6K2ntuagpHrz/BTStgvW6Yk1jGjq9iy6ubWBcED=
z8Vg
-DvkGRDJeQnGtQgSHWONgbFw2oUIqiBReuYfBlNOnfHEN6PaQiQMACot1qLF/IoxFQ7vpcryL=
HQ1L
-vGquouMtPGRBCCBpIKYvPkYltdsPVnbLDmH/xKvhDpQ/Z6O6buYQG0nqpvWULYNUCUip4C1V=
mPZ0
-jLBh20lk2TA8W5vGe98ObkrhoJqu4iFil5PadvTKqd9AmJ7ZfXBghZBleI1ycGOA6FuV2BYu=
003R
-alsBgfmzFZBvRdPOGqjHZNqGVDZvb0lquDsAcHJ7eCR/ctwZkz58v70jEfBeSvtHZ4oTorIA=
WDYl
-fXSclvVERLrGTX+3k9q8HRvjIC4YAs7HfzY41JLlwuxDdOo8PhbHumPsPQ/Y8HwVMyJJoQjd=
Szia
-NdT9blS+HiUn965AemRLyr1CAuDmzhwQjWm4LsZFgZWR3rnYcTIhILiIY3kKzjWWSkZi7k2V=
ttua
-oYS6RSyp+VbGJBEyiGqxPI+QjzrnzPPwWYb8tpAIhVt9iuEyo5FD2L23/qQR2Pt4OjouYFES=
O51L
-Euwwm/knq81iKM6mEeaNNz85sDqSWFzB51wzjD84CDdnYfxXIQ8DhXlNYFxoBLgDKEczQJVS=
JIj8
-DCf3UASyURtlvuKHBTkBg5BCcGUJAfhUIVNE6TrGFEtjmua+tkDaDkD7KbIV0CCsvQW7OnLi=
doB+
-dSBESWQSlAS1o+GJKZ0accxB9LOItr93yzjoLcXLv+OsPOCxSi+fDD070h7nEdV5lbPkkoOA=
zAPq
-HUqLIGUwH1PdrFtgtujzWIQ5ISXFeGHcWpmHYcEZH5Tgb4Ks9On6M9iFN/Whf3MhKOzQT5ib=
IwCi
-Ii4KR6YLlJua5cu4AGjOfMsBsPY0MBjoXJnAaDMe2i1x7WkNPYuDq4QvU73PPD6nElExCSXN=
zepl
-JJKDPxGteq2eh1pVVe3aqqvKL307afmbedv/R6X4DKGesNGC86zmxLfUQFmmCGnmvxfI/H4V=
KPzO
-HGj413rTOVPUKtjrUaNoGJM5TPCE2sUclOUIEpYrZ0xjfUaAvfvc9jljwcdkXK+UMLe1CWK0=
Cvc6
-P9GBgyyWfenqxkOv5fwrpPLZvKau8mXmTbiE6IWThbVwnlWCqXltLVxdSXI3+Jd5TMOUFId9=
uILD
-DMH4l0rbGYlGsBc+b+JYcQtgLlfATa+QZG2VXjUDlNaoW01plDVZudvfb+47Uq0HxWWXrmIE=
WuCT
-NA0KEG8/RglqkQWbPvIhpAyQJBLjnCdwBNucIp1lm5e798Uu6Xe7KcMdKfr16oXKsUr08oSQ=
puI4
-Q8SIw4Z8lRd0at1DztCwwcRHhOjSlfpGNiqy2ZVImUpupM5TJMUAf4mcAw5uDZB4yVQgMzJY=
lkpQ
-CI7gYSCQsWl0vMNw7pYeLGgYT4fG2UB4wQBV8rxTtp5amD8892awYMNMIQsSRwVXOUhXdb1u=
Kz7V
-w4KiwepDFdoEDrt8Q6WKgFJHNvw25+L58uyV2qWp4Zp8MSxi6OdY0CV1zMWrhCic36L4TX6j=
k0+l
-/Y+5wrwbdh8oMZbViBcTJxDb840RUq/4cU0/C3+7+S+aPturo+fSpW/Z9mmLFRjQoVLTofIN=
VlLW
-UoVKcXFwzJS0Wig1paHfcBx+1t2jLoMqvbmqNuNtuZgsXuMqL022ceT8WxS9x9amFh2d8j+R=
N6+p
-11Tteu4mux3uedwTh5lvnT6c+LuTgdiHSPOlVFERE7GsMPoJBKmVnTvAwYIydR43M0anQ07u=
UkNJ
-sUts3dK1/CLeBu0iQzDLtB+1VFo/h5eRe7KgwVWXcMyYzVzdhj0fb6SlwkuI2IHg32V9c73U=
ybBp
-DuOPcXUiXd1QsJnuQfBpXYWMy33OerzGweBarGjuPqYc66UpNeXcg12Nw7PBLvgFuChlYepk=
9gby
-jrVBWxAtyuuTHjToKMu2SMGFYGaZo492it+PmXMbLzTOWC0212ycanf6ct8MoFIYdKx+bLo+=
VtiR
-b090XtSiAbHo5eLlbp0MyFOTZzX3IINzcgxmS1VA4jQEyJJcVbtTPk0FbemODZ6XJTNmqXhd=
u4Zv
-dreUljWi6CZpGadMhsrUdnE1NU7e9uLlMFAJrHCYJOfvM5FMgjLr3ANvmYqmGDRSG93XI9j4=
R0TZ
-ICyQ4YQ8cSHV5c6CD2q62BzToX6ecn5r9AZxXzGl6mhMkLRftUWzKzCjcV6xK3wNzLxetOKg=
EYXv
-eVWLdYuOrGy5ihJISkHTYEBuFJyjBVZ1ptnLnPziLzCfiMR4LBYmFF164w2WvCeS1wH8fp5O=
HilT
-dOnn+zQETufMqJSfYeiJeUM4TO0YeD7Nbn+toH+UY2NjqixKNS3ua/5eBE8rJjR4cTZzmLRN=
T8iR
-xUzv9HyB1HER2tUgVk3M6UNk8/c2TdcCjkzkSIN5HFSCVqvxOrH32ZSF8eBeikrQjaanoIkY=
ERII
-HulIC1l0HusgHbqhAHcxTc+edGgPO1BV3aKNWxGjHitQoUuR2B5lzMMx955uHdWuVEmAuZNZ=
gY0V
-CEUhFk3nQyZT1WcJNCMSQUYhw6E1JEQhNn2d93HnE1qPshpWlX/YBXAOHnwaX9GS4Ytx535X=
RbQV
-F6qGF/eFQsMiiY8RelFuLcTUKE6sw4aD9Kt2pYejJ+pMO5mT2A8q30gld9xxJhUR6OpjiyOD=
SRXT
-ogCRB1rmcSLgQiHnhJcK71wtRAxTfU4y76m+KAoexuwpX9vae8SJu6Rj5xE7ZWqbkB9PCR2b=
9Orh
-Fsw77X2Er40YE9wYfD7mlUNTKia5XXuQ/hWJmoQjxbkYkwdGZsVcuOKlls/GrNMayvRayXa2=
iquv
-hXrOtf/Drs37ndEFDAA3hzDQRanpUd5nER82o9eqthn/iOTmw+LoFtu+Ec1xYDgGU684Yh3C=
bMKt
-8VFmQMc64GhmH4313XafM9In/aJpU93TdicROhvc5MEq7G1x2BaaWJ1IRisnr7T+d8D878Uq=
PgtB
-kl9Wv82/w6V72SWdIrRj8Y8xuknMJ0Kz1wqyxsHgcUS36VFqEcJhkfn+0FewZRXuSK8iHZEW=
EROG
-5K2hYkGboVH3nZzFXkGUsTeZuOYOTC2RkTjDb44QEv4zqclEi99y+Mquz6NTbCHCYKJ/HrJO=
DYDa
-ifF29SGDSPY+4gLHPB7jtD+Y4M1SQy27OL/pcbvn/G37hXw4w3KltkU+59nte25/b8XtM/8a=
EHLJ
-wjuxldlRciSWYcctdnOp7afL8Pu1AdsDBMGyZIuXYNNoC6SLqFFzLlIZq40z1Hv6/+nq+LhW=
7T8D
-CMo4+JZ83S/mK1J6LlcshspfUysoh8uTAcuPNtxzejDeIX69UPPMCAt023DfNpttX8xO8xXw=
aliJ
-KwzQyHYoHM32xlWPFym9QdotzVOawnfVpBpTn1YUxKUKBiSwaOrOYqJnoZELgkXpLAKdqDye=
8rC9
-s3oDgpm+GdshEiUGYGSeFMUrjxGDtrRVMQqBAKMiBOT+tfmU3EqFfDReLvlt/L4bTlgTwpHI=
9mpF
-J70WDTWwUoUcqFC7ZxXnAwfEriQ8lYS+iVE8QSNyzkDv2uCYC43BnCs0NFtJugYTCALO4k6N=
znec
-3u/nu1EyQZt9B010I5f3GxoDioUgoTsB1ZPGPtat1dPnjsJ8wavX+53ULfSMVHaRFxT9MV+j=
6Cex
-3sYMFE+r+yznqWD2umvBRQ9t4HR45qHoMjaRRjcQRsRVsQIQKmHQF/4VITiDHidWZgiLiEAW=
pmlP
-LsPpuDCwTR8zksyJIximTIy0VGYA6L1B8PlA15luABYF78ly3FL8FFUx+3jUkaNWFUDMXTaJ=
7I6g
-Gl771ahmTw9KPRkrWiHf9gYTxPjU0eJM9N9EB5Y9JYtrVVZ+DzMW2Mo/L+tNBrRZYm8onfho=
xUaE
-hOh3dHMR1/CuytPLRKaUbzkvy17pFl/AvHyZYGwYe+ccT370+RTq6OM7LzZjj9N2tY/oKWPl=
so/+
-nl7uwNM2krDxkrPrOLM/0394KPZ8L7Hg0fD86zu973/0GuGYdhKA7d6waBYgnBgX1z802ha+=
15vG
-fxz9E+eYs6vrNle8vURobXnaWHkZvXxS3/7y6iQTGtl2u8hTY8UiLzhHQcOs/sH0O9lU4R4p=
kEq1
-sf3i2uDG2GaxZB80MOA1mmUiYGHhcHC2+nokcgJGuSigCyMABmgUlizNUB4/uBd118Vckt7F=
YYxl
-2AofZ1erzON49NJrdc/DdG7RfWvpLXYRtO4jlQ1fQSxRHGdjeQLWjY1kh6H6uxysfBoNrcjg=
G6bV
-sNnLzOwJbGzmyD/geqhnRBOri73FK+yZtXU35nqcwGMbOhDgoXjHp73bFG+j9jzKN1cye7fy=
mvn3
-bqSTd4Rcgk0KUQoIbM6hmTE6tjy14n1VA/Y1aQtDoe04GbneN6W8aiZfYpiaHF4+WnbzWYT/=
jFYL
-pNBQtPS7KGDVNCVkyBMoEIZYMKQLbxGi6xsTtMgLDA2meBFs6XE5Qsk7dBQZQQnY1Oe62o6c=
36t4
-TggdU58m00/U7729xLY50Y2c49YkJkwYViRGskH5P8a+xom3wLYg0KO7ZXnzEqGR+lgsHi4S=
mxDa
-vYmTVVGKog14b8IdmqeCwX8HnnnlcbtP42MTYeFi39WRAAnsIFaD+cn/rcdfkfbudry+vTv8=
K5qu
-f+WlY9DDfBbflz2r9HrfVQjzsx7dXUUm8n1ztYvhQ7ENAsacxQiMPfgl7Gr+Ks6DFx1fLVJ0=
vN9v
-6OT08VJ3+T63z7/N3HE8jF3+Dg7uu28PKZX78fPW15vI+srPwsK2TW2cua+apptrW8DJfwJH=
U733
-JKoptLHdr8c7D8LmOgq7TfZvLYi9jWgdcgUiADjLhJLPwl76z4B02s5CCScIpyUCICIuxFDB=
2zYJ
-s0SIZ4M6ahruHqIbl6Rt06HRkoClYAwokbTowKUoCIgkYm0oMmMNJQ6pSQSaWBReQyaJsggj=
wGSX
-n1CAv8YxT7Eyff2KAIoyB2nQyQnyo9lkJD2JooQnSkIeFOSB2SNoUUiwEWLEFixY9R4f8HpO=
UnYY
-AbOhpDhToyFiY+kskk6tsvZwR7oTOeQggjNDB6xGn8m6dJJ62Iih2CYG/lWLDCuIj5/k4zuf=
W0tJ
-5sQySTCQBiZDmKkMQgVtoqIttiiT+v7zw+H/F2s4H8xSc4Y3oaK23v2VURWIojDqbytV27Sa=
1LDi
-27os3opje9eGfRunfJcjci4iy2iqThObvVDbIcsMmFO7cwbCptAuLSsOpMZwzw47dCW0637i=
MYwC
-cw/3fxqI4BkB5hhuiS58PK4Cx4+zT/hgAc71UArDKx0d5pXcpvb76myEXZVKgHO07fxvN7WQ=
1+Y2
-ZKVzdT9efaG7Oa+TmTX7/UjtD15109XfGOq5oIK5LI38PscHDwRPr3WG6X9ud/qL0Kvn04cD=
5uJi
-PLlZTv65C9kwB8D7A/bl+OzUvUICWMgUpUcXLSdaj3+lT6qDLhfecjue+QEwo0AWYZWiIi1I=
GbIL
-WmiaD/8XckU4UJAgx4Xl
-=3D=3D=3D=3D
Index: sys/contrib/dev/nve/nvenet_version.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/nvenet_version.h	(revision 261434)
+++ sys/contrib/dev/nve/nvenet_version.h	(working copy)
@@ -1,29 +0,0 @@
-/****************************************************************** \
-|*                                                                 *|
-|*                                                                 *|
-|*  (c) NVIDIA Corporation. All rights reserved                    *|=20
-|*                                                                 *|
-|*  THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND            *|
-|*  CONFIDENTIAL                                                   *|
-|*  TO NVIDIA, CORPORATION. USE, REPORDUCTION OR DISCLOSURE TO ANY *|
-|*  THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA CORP. *|
-|*                                                                 *|
-|*  THE INFORMATION CONTAINED HEREIN IS PROVIDED "AS IS" WITHOUT   *|
-|*  EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED *|
-|*  WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS    *|
-|*  FOR A PARTICULAR PURPOSE.                                      *|
-|*                                                                 *|
-********************************************************************/
-
-#ifndef __NVENET_VERSION_H__
-#define	__NVENET_VERSION_H__=20
-
-#define DRIVER_VERSION_MAJOR        "1"
-#define DRIVER_VERSION_MINOR        "0"
-#define DRIVER_VERSION_PATCH        "13"
-#define DRIVER_VERSION              DRIVER_VERSION_MAJOR"."\
-                                    DRIVER_VERSION_MINOR"-"\
-                                    DRIVER_VERSION_PATCH
-
-#endif
-
Index: sys/contrib/dev/nve/os.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/os.h	(revision 261434)
+++ sys/contrib/dev/nve/os.h	(working copy)
@@ -1,128 +0,0 @@
-/***********************************************************************=
****\
-|*                                                                      =
     *|
-|*       Copyright 2001-2004 NVIDIA Corporation.  All Rights Reserved.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN  IS PROPRIETARY AND CONFIDENTIAL=
     *|
-|*     TO NVIDIA, CORPORATION.   USE,  REPRODUCTION OR DISCLOSURE TO ANY=
     *|
-|*     THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN IS PROVIDED  "AS IS" WITHOUT    =
     *|
-|*     EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED   =
     *|
-|*     WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A=
     *|
-|*     PARTICULAR PURPOSE.                                              =
     *|
-|*                                                                      =
     *|
-\***********************************************************************=
****/=20
-
-/*
-    FILE:   os.h
-    DATE:   2/7/00
-
-    This file contains the os interface. Note that the os interface is
-    itself an OS-independent API. The OS specific module is implemented
-    by ndis.c for Win9X/NT and linuxnet.c for linux.
-*/
-#ifndef _OS_H_
-#define _OS_H_
-
-#include "phy.h"
-
-#define HDO_VERSION_STRING "HDR O: $Revision: #21 $";
-
-// This is the maximum packet size that we will be sending
-// #define MAX_PACKET_SIZE     2048
-//#define RX_BUFFER_SIZE      2048
-
-#define MIN_PACKET_MTU_SIZE     576
-#define MAX_PACKET_MTU_SIZE     9202
-#define MAX_PACKET_SIZE_2048      2048
-#define MAX_PACKET_SIZE_1514    1514
-#define MAX_PACKET_SIZE_1518    1518
-#define MAX_PACKET_SIZE_JUMBO   (9 * 1024)
-
-typedef struct  _MEMORY_BLOCK
-{
-    PNV_VOID   pLogical;
-    PNV_VOID   pPhysical;
-    NV_UINT32    uiLength;
-}   MEMORY_BLOCK, *PMEMORY_BLOCK;
-
-#define        ALLOC_MEMORY_NONCACHED    0x0001
-#define        ALLOC_MEMORY_ALIGNED    0x0002
-
-typedef struct  _MEMORY_BLOCKEX
-{
-    PNV_VOID   pLogical;
-    PNV_VOID   pPhysical;
-    NV_UINT32    uiLength;
-    /* Parameter to OS layer to indicate what type of memory is needed *=
/
-    NV_UINT16    AllocFlags;
-    NV_UINT16    AlignmentSize; //always power of 2
-    /* Following three fields used for aligned memory allocation */
-    PNV_VOID   pLogicalOrig;
-    NV_UINT32    pPhysicalOrigLow;
-    NV_UINT32    pPhysicalOrigHigh;
-    NV_UINT32    uiLengthOrig;
-}   MEMORY_BLOCKEX, *PMEMORY_BLOCKEX;
-
-
-// The typedefs for the OS functions
-typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOC) (PNV_VOID pOSCX, PMEM=
ORY_BLOCK pMem);
-typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREE)  (PNV_VOID pOSCX, PMEM=
ORY_BLOCK pMem);
-typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOCEX) (PNV_VOID pOSCX, PM=
EMORY_BLOCKEX pMem);
-typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREEEX)  (PNV_VOID pOSCX, PM=
EMORY_BLOCKEX pMem);
-typedef NV_API_CALL NV_SINT32 (* PFN_CLEAR_MEMORY)  (PNV_VOID pOSCX, PNV=
_VOID pMem, NV_SINT32 iLength);
-typedef NV_API_CALL NV_SINT32 (* PFN_STALL_EXECUTION) (PNV_VOID pOSCX, N=
V_UINT32 ulTimeInMicroseconds);
-typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_RECEIVE_BUFFER) (PNV_VOID pOS=
CX, PMEMORY_BLOCK pMem, PNV_VOID *ppvID);
-typedef NV_API_CALL NV_SINT32 (* PFN_FREE_RECEIVE_BUFFER) (PNV_VOID pOSC=
X, PMEMORY_BLOCK pMem, PNV_VOID pvID);
-typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_SENT) (PNV_VOID pOSCX, P=
NV_VOID pvID, NV_UINT32 ulSuccess);
-typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_RECEIVED) (PNV_VOID pOSC=
X, PNV_VOID pvADReadData, NV_UINT32 ulSuccess, NV_UINT8 *pNewBuffer, NV_U=
INT8 uc8021pPriority);
-typedef NV_API_CALL NV_SINT32 (* PFN_LINK_STATE_HAS_CHANGED) (PNV_VOID p=
OSCX, NV_SINT32 nEnabled);
-typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_TIMER) (PNV_VOID pvContext, P=
NV_VOID *ppvTimer);
-typedef NV_API_CALL NV_SINT32 (* PFN_FREE_TIMER) (PNV_VOID pvContext, PN=
V_VOID pvTimer);
-typedef NV_API_CALL NV_SINT32 (* PFN_INITIALIZE_TIMER) (PNV_VOID pvConte=
xt, PNV_VOID pvTimer, PTIMER_FUNC pvFunc, PNV_VOID pvFuncParameter);
-typedef NV_API_CALL NV_SINT32 (* PFN_SET_TIMER) (PNV_VOID pvContext, PNV=
_VOID pvTimer, NV_UINT32 dwMillisecondsDelay);
-typedef NV_API_CALL NV_SINT32 (* PFN_CANCEL_TIMER) (PNV_VOID pvContext, =
PNV_VOID pvTimer);
-
-typedef NV_API_CALL NV_SINT32 (* PFN_PREPROCESS_PACKET) (PNV_VOID pvCont=
ext, PNV_VOID pvADReadData, PNV_VOID *ppvID,
-                NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority);
-typedef NV_API_CALL PNV_VOID (* PFN_PREPROCESS_PACKET_NOPQ) (PNV_VOID pv=
Context, PNV_VOID pvADReadData);
-typedef NV_API_CALL NV_SINT32 (* PFN_INDICATE_PACKETS) (PNV_VOID pvConte=
xt, PNV_VOID *ppvID, NV_UINT32 ulNumPacket);
-typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ALLOC) (PNV_VOID pOSCX, NV_SIN=
T32 iLockType, PNV_VOID *ppvLock);
-typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ACQUIRE) (PNV_VOID pOSCX, NV_S=
INT32 iLockType, PNV_VOID pvLock);
-typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_RELEASE) (PNV_VOID pOSCX, NV_S=
INT32 iLockType, PNV_VOID pvLock);
-typedef NV_API_CALL PNV_VOID (* PFN_RETURN_BUFFER_VIRTUAL) (PNV_VOID pvC=
ontext, PNV_VOID pvADReadData);
-
-// Here are the OS functions that those objects below the OS interface
-// can call up to.
-typedef struct  _OS_API
-{
-    // OS Context -- this is a parameter to every OS API call
-    PNV_VOID                       pOSCX;
-
-    // Basic OS functions
-    PFN_MEMORY_ALLOC            pfnAllocMemory;
-    PFN_MEMORY_FREE             pfnFreeMemory;
-    PFN_MEMORY_ALLOCEX          pfnAllocMemoryEx;
-    PFN_MEMORY_FREEEX           pfnFreeMemoryEx;
-    PFN_CLEAR_MEMORY            pfnClearMemory;
-    PFN_STALL_EXECUTION         pfnStallExecution;
-    PFN_ALLOC_RECEIVE_BUFFER    pfnAllocReceiveBuffer;
-    PFN_FREE_RECEIVE_BUFFER     pfnFreeReceiveBuffer;
-    PFN_PACKET_WAS_SENT         pfnPacketWasSent;
-    PFN_PACKET_WAS_RECEIVED     pfnPacketWasReceived;
-    PFN_LINK_STATE_HAS_CHANGED  pfnLinkStateHasChanged;
-    PFN_ALLOC_TIMER                pfnAllocTimer;
-    PFN_FREE_TIMER                pfnFreeTimer;
-    PFN_INITIALIZE_TIMER        pfnInitializeTimer;
-    PFN_SET_TIMER                pfnSetTimer;
-    PFN_CANCEL_TIMER            pfnCancelTimer;
-    PFN_PREPROCESS_PACKET       pfnPreprocessPacket;
-    PFN_PREPROCESS_PACKET_NOPQ  pfnPreprocessPacketNopq;
-    PFN_INDICATE_PACKETS        pfnIndicatePackets;
-    PFN_LOCK_ALLOC                pfnLockAlloc;
-    PFN_LOCK_ACQUIRE            pfnLockAcquire;
-    PFN_LOCK_RELEASE            pfnLockRelease;
-    PFN_RETURN_BUFFER_VIRTUAL    pfnReturnBufferVirtual;
-}   OS_API, *POS_API;
-
-#endif // _OS_H_
Index: sys/contrib/dev/nve/phy.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/contrib/dev/nve/phy.h	(revision 261434)
+++ sys/contrib/dev/nve/phy.h	(working copy)
@@ -1,164 +0,0 @@
-/***********************************************************************=
****\
-|*                                                                      =
     *|
-|*       Copyright 2001-2004 NVIDIA Corporation.  All Rights Reserved.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN  IS PROPRIETARY AND CONFIDENTIAL=
     *|
-|*     TO NVIDIA, CORPORATION.   USE,  REPRODUCTION OR DISCLOSURE TO ANY=
     *|
-|*     THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP.  =
     *|
-|*                                                                      =
     *|
-|*     THE INFORMATION CONTAINED HEREIN IS PROVIDED  "AS IS" WITHOUT    =
     *|
-|*     EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED   =
     *|
-|*     WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A=
     *|
-|*     PARTICULAR PURPOSE.                                              =
     *|
-|*                                                                      =
     *|
-\***********************************************************************=
****/=20
-
-/*
-    FILE:   phy.h
-    DATE:   2/7/00
-
-    This file contains the functional interface to the PHY.
-*/
-#ifndef _PHY_H_
-#define _PHY_H_
-
-//#include "basetype.h"
-//#include "nvevent.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define DEFAULT_PHY_ADDRESS   1
-
-
-#define HDP_VERSION_STRING "HDR P: $Revision: #23 $"
-
-//
-// Defaults for PHY timeout values.
-//
-#define PHY_POWER_ISOLATION_MS_TIMEOUT_DEFAULT      50
-#define PHY_RESET_MS_TIMEOUT_DEFAULT                50
-#define PHY_AUTONEG_MS_TIMEOUT_DEFAULT              3000
-#define PHY_LINK_UP_MS_TIMEOUT_DEFAULT              2400
-#define PHY_RDWR_US_TIMEOUT_DEFAULT                 2048
-#define PHY_POWER_DOWN_US_TIMEOUT_DEFAULT           500
-
-
-////////////////////////////////////////////////////////////////////////=
/
-// The phy module knows the values that need to go into the phy register=
s
-// but typically the method of writing those registers is controlled by
-// another module (usually the adapter because it is really the hardware=

-// interface.) Hence, the phy needs routines to call to read and write t=
he
-// phy registers. This structure with appropriate routines will be provi=
ded
-// in the PHY_Open call.
-
-typedef NV_API_CALL NV_SINT32 (* PFN_READ_PHY)  (PNV_VOID pvData, NV_UIN=
T32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 *pulValue);
-typedef NV_API_CALL NV_SINT32 (* PFN_WRITE_PHY) (PNV_VOID pvData, NV_UIN=
T32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 ulValue);
-
-typedef struct  PHY_SUPPORT_API
-{
-    PNV_VOID            pADCX;
-    PFN_READ_PHY        pfnRead;
-    PFN_WRITE_PHY       pfnWrite;
-	// PFN_EVENT_OCCURED   pfnEventOccurred;
-
-    //
-    // These fields are passed down via the FD.  FD get's them
-    // from the registry.  They allow one to fine tune the timeout
-    // values in the PHY.
-    //
-    NV_UINT32	PhyPowerIsolationTimeoutInms;
-	NV_UINT32	PhyResetTimeoutInms;
-	NV_UINT32	PhyAutonegotiateTimeoutInms;
-	NV_UINT32	PhyLinkupTimeoutInms;
-	NV_UINT32	PhyPowerdownOnCloseInus;
-
-}   PHY_SUPPORT_API, *PPHY_SUPPORT_API;
-////////////////////////////////////////////////////////////////////////=
/
-
-
-////////////////////////////////////////////////////////////////////////=
/
-// The functional typedefs for the PHY Api
-typedef NV_SINT32 (* PFN_PHY_INIT) (PNV_VOID pvContext, NV_UINT32 *pulLi=
nkState, NV_UINT32 PhyMode);
-typedef NV_SINT32 (* PFN_PHY_DEINIT) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_PHY_CLOSE) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_GET_LINK_SPEED) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_GET_LINK_MODE) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_GET_LINK_STATE) (PNV_VOID pvContext, NV_UINT32 =
*pulLinkState);
-typedef NV_SINT32 (* PFN_IS_LINK_INITIALIZING) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_RESET_PHY_INIT_STATE) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_FORCE_SPEED_DUPLEX) (PNV_VOID pvContext, NV_UIN=
T16 usSpeed, NV_UINT8 ucForceDpx, NV_UINT8 ucForceMode);
-typedef NV_SINT32 (* PFN_PHY_POWERDOWN) (PNV_VOID pvContext);
-typedef NV_SINT32 (* PFN_SET_LOW_SPEED_FOR_PM) (PNV_VOID pvContext);
-
-
-typedef struct  _PHY_API
-{
-    // This is the context to pass back in as the first arg on all
-    // the calls in the API below.
-    PNV_VOID               pPHYCX;
-
-    PFN_PHY_INIT                pfnInit;
-    PFN_PHY_INIT                pfnInitFast;
-    PFN_PHY_DEINIT                pfnDeinit;
-    PFN_PHY_CLOSE                pfnClose;
-    PFN_GET_LINK_SPEED            pfnGetLinkSpeed;
-    PFN_GET_LINK_MODE            pfnGetLinkMode;
-    PFN_GET_LINK_STATE            pfnGetLinkState;
-    PFN_IS_LINK_INITIALIZING    pfnIsLinkInitializing;
-    PFN_RESET_PHY_INIT_STATE    pfnResetPhyInitState;
-    PFN_FORCE_SPEED_DUPLEX        pfnForceSpeedDuplex;
-    PFN_PHY_POWERDOWN            pfnPowerdown;
-    PFN_SET_LOW_SPEED_FOR_PM    pfnSetLowSpeedForPM;
-}   PHY_API, *PPHY_API;
-////////////////////////////////////////////////////////////////////////=
/
-
-
-////////////////////////////////////////////////////////////////////////=
/
-// This is the one function in the PHY interface that is publicly
-// available. The rest of the interface is returned in the pPhyApi;
-// The first argument needs to be cast to a POS_API structure ptr.
-// On input the second argument is a ptr to a PPHY_SUPPORT_API.
-// On output, the second argument should be treated as a ptr to a
-// PPHY_API and set appropriately.
-extern NV_SINT32 PHY_Open (PNV_VOID pvOSApi, PNV_VOID pPhyApi, NV_UINT32=
 *pulPhyAddr, NV_UINT32 *pulPhyConnected);
-////////////////////////////////////////////////////////////////////////=
/
-
-
-////////////////////////////////////////////////////////////////////////=
/
-// Here are the error codes the phy functions can return.
-#define PHYERR_NONE                                 0x0000
-#define PHYERR_COULD_NOT_ALLOC_CONTEXT              0x0001
-#define PHYERR_RESET_NEVER_FINISHED                 0x0002
-#define PHYERR_NO_AVAILABLE_LINK_SPEED              0x0004
-#define PHYERR_INVALID_SETTINGS                     0x0005
-#define PHYERR_READ_FAILED                          0x0006
-#define PHYERR_WRITE_FAILED                         0x0007
-#define PHYERR_NO_PHY                               0x0008
-#define PHYERR_NO_RESOURCE                          0x0009
-#define PHYERR_POWER_ISOLATION_TIMEOUT              0x000A
-#define PHYERR_POWER_DOWN_TIMEOUT                   0x000B
-#define PHYERR_AUTONEG_TIMEOUT                      0x000C
-#define PHYERR_PHY_LINK_SPEED_UNCHANGED             0x000D
-
-#define PHY_INVALID_PHY_ADDR                    0xFFFF;
-
-////////////////////////////////////////////////////////////////////////=
/
-
-// This value can be used in the ulPhyLinkSpeed field.
-#define PHY_LINK_SPEED_UNKNOWN          0x0FFFFFFFF
-
-//
-// Values used to configure PHY mode.
-//
-#define PHY_MODE_MII    1
-#define PHY_MODE_RGMII  2
-
-typedef NV_VOID (* PTIMER_FUNC) (PNV_VOID pvContext);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif //_PHY_H_
Index: sys/dev/nve/if_nve.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/dev/nve/if_nve.c	(revision 261434)
+++ sys/dev/nve/if_nve.c	(working copy)
@@ -1,1791 +0,0 @@
-/*-
- * Copyright (c) 2005 by David E. O'Brien <obrien@FreeBSD.org>.
- * Copyright (c) 2003,2004 by Quinton Dolan <q@onthenet.com.au>.=20
- * All rights reserved.
- *=20
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions=20
- * are met:=20
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.=20
- * 2. Redistributions in binary form must reproduce the above copyright =

- *    notice, this list of conditions and the following disclaimer in th=
e=20
- *    documentation and/or other materials provided with the distributio=
n.
- *=20
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AN=
D ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMP=
LIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AR=
E
- * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE F=
OR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIA=
L
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOO=
DS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HO=
WEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY=
 WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O=
F
- * SUCH DAMAGE.
- *=20
- * $Id: if_nv.c,v 1.19 2004/08/12 14:00:05 q Exp $
- */
-/*
- * NVIDIA nForce MCP Networking Adapter driver
- *=20
- * This is a port of the NVIDIA MCP Linux ethernet driver distributed by=
 NVIDIA
- * through their web site.
- *=20
- * All mainstream nForce and nForce2 motherboards are supported. This mo=
dule
- * is as stable, sometimes more stable, than the linux version. (Recent
- * Linux stability issues seem to be related to some issues with newer
- * distributions using GCC 3.x, however this don't appear to effect Free=
BSD
- * 5.x).
- *=20
- * In accordance with the NVIDIA distribution license it is necessary to=

- * link this module against the nvlibnet.o binary object included in the=

- * Linux driver source distribution. The binary component is not modifie=
d in
- * any way and is simply linked against a FreeBSD equivalent of the nvne=
t.c
- * linux kernel module "wrapper".
- *=20
- * The Linux driver uses a common code API that is shared between Win32 =
and
- * i386 Linux. This abstracts the low level driver functions and uses
- * callbacks and hooks to access the underlying hardware device. By usin=
g
- * this same API in a FreeBSD kernel module it is possible to support th=
e
- * hardware without breaching the Linux source distributions licensing
- * requirements, or obtaining the hardware programming specifications.
- *=20
- * Although not conventional, it works, and given the relatively small
- * amount of hardware centric code, it's hopefully no more buggy than it=
s
- * linux counterpart.
- *
- * NVIDIA now support the nForce3 AMD64 platform, however I have been
- * unable to access such a system to verify support. However, the code i=
s
- * reported to work with little modification when compiled with the AMD6=
4
- * version of the NVIDIA Linux library. All that should be necessary to =
make
- * the driver work is to link it directly into the kernel, instead of as=
 a
- * module, and apply the docs/amd64.diff patch in this source distributi=
on to
- * the NVIDIA Linux driver source.
- *
- * This driver should work on all versions of FreeBSD since 4.9/5.1 as w=
ell
- * as recent versions of DragonFly.
- *
- * Written by Quinton Dolan <q@onthenet.com.au>=20
- * Portions based on existing FreeBSD network drivers.=20
- * NVIDIA API usage derived from distributed NVIDIA NVNET driver source =
files.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/sockio.h>
-#include <sys/mbuf.h>
-#include <sys/malloc.h>
-#include <sys/kernel.h>
-#include <sys/socket.h>
-#include <sys/sysctl.h>
-#include <sys/queue.h>
-#include <sys/module.h>
-
-#include <net/if.h>
-#include <net/if_var.h>
-#include <net/if_arp.h>
-#include <net/ethernet.h>
-#include <net/if_dl.h>
-#include <net/if_media.h>
-#include <net/if_types.h>
-#include <net/bpf.h>
-#include <net/if_vlan_var.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <vm/vm.h>		/* for vtophys */
-#include <vm/pmap.h>		/* for vtophys */
-#include <sys/bus.h>
-#include <sys/rman.h>
-
-#include <dev/pci/pcireg.h>
-#include <dev/pci/pcivar.h>
-#include <dev/mii/mii.h>
-#include <dev/mii/miivar.h>
-#include "miibus_if.h"
-
-/* Include NVIDIA Linux driver header files */
-#include <contrib/dev/nve/nvenet_version.h>
-#define	linux
-#include <contrib/dev/nve/basetype.h>
-#include <contrib/dev/nve/phy.h>
-#include "os+%DIKED-nve.h"
-#include <contrib/dev/nve/drvinfo.h>
-#include <contrib/dev/nve/adapter.h>
-#undef linux
-
-#include <dev/nve/if_nvereg.h>
-
-MODULE_DEPEND(nve, pci, 1, 1, 1);
-MODULE_DEPEND(nve, ether, 1, 1, 1);
-MODULE_DEPEND(nve, miibus, 1, 1, 1);
-
-static int      nve_probe(device_t);
-static int      nve_attach(device_t);
-static int      nve_detach(device_t);
-static void     nve_init(void *);
-static void     nve_init_locked(struct nve_softc *);
-static void     nve_stop(struct nve_softc *);
-static int      nve_shutdown(device_t);
-static int      nve_init_rings(struct nve_softc *);
-static void     nve_free_rings(struct nve_softc *);
-
-static void     nve_ifstart(struct ifnet *);
-static void     nve_ifstart_locked(struct ifnet *);
-static int      nve_ioctl(struct ifnet *, u_long, caddr_t);
-static void     nve_intr(void *);
-static void     nve_tick(void *);
-static void     nve_setmulti(struct nve_softc *);
-static void     nve_watchdog(struct nve_softc *);
-static void     nve_update_stats(struct nve_softc *);
-
-static int      nve_ifmedia_upd(struct ifnet *);
-static void	nve_ifmedia_upd_locked(struct ifnet *);
-static void     nve_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static int      nve_miibus_readreg(device_t, int, int);
-static int      nve_miibus_writereg(device_t, int, int, int);
-
-static void     nve_dmamap_cb(void *, bus_dma_segment_t *, int, int);
-static void     nve_dmamap_tx_cb(void *, bus_dma_segment_t *, int, bus_s=
ize_t, int);
-
-static NV_API_CALL NV_SINT32 nve_osalloc(PNV_VOID, PMEMORY_BLOCK);
-static NV_API_CALL NV_SINT32 nve_osfree(PNV_VOID, PMEMORY_BLOCK);
-static NV_API_CALL NV_SINT32 nve_osallocex(PNV_VOID, PMEMORY_BLOCKEX);
-static NV_API_CALL NV_SINT32 nve_osfreeex(PNV_VOID, PMEMORY_BLOCKEX);
-static NV_API_CALL NV_SINT32 nve_osclear(PNV_VOID, PNV_VOID, NV_SINT32);=

-static NV_API_CALL NV_SINT32 nve_osdelay(PNV_VOID, NV_UINT32);
-static NV_API_CALL NV_SINT32 nve_osallocrxbuf(PNV_VOID, PMEMORY_BLOCK, P=
NV_VOID *);
-static NV_API_CALL NV_SINT32 nve_osfreerxbuf(PNV_VOID, PMEMORY_BLOCK, PN=
V_VOID);
-static NV_API_CALL NV_SINT32 nve_ospackettx(PNV_VOID, PNV_VOID, NV_UINT3=
2);
-static NV_API_CALL NV_SINT32 nve_ospacketrx(PNV_VOID, PNV_VOID, NV_UINT3=
2, NV_UINT8 *, NV_UINT8);
-static NV_API_CALL NV_SINT32 nve_oslinkchg(PNV_VOID, NV_SINT32);
-static NV_API_CALL NV_SINT32 nve_osalloctimer(PNV_VOID, PNV_VOID *);
-static NV_API_CALL NV_SINT32 nve_osfreetimer(PNV_VOID, PNV_VOID);
-static NV_API_CALL NV_SINT32 nve_osinittimer(PNV_VOID, PNV_VOID, PTIMER_=
FUNC, PNV_VOID);
-static NV_API_CALL NV_SINT32 nve_ossettimer(PNV_VOID, PNV_VOID, NV_UINT3=
2);
-static NV_API_CALL NV_SINT32 nve_oscanceltimer(PNV_VOID, PNV_VOID);
-
-static NV_API_CALL NV_SINT32 nve_ospreprocpkt(PNV_VOID, PNV_VOID, PNV_VO=
ID *, NV_UINT8 *, NV_UINT8);
-static NV_API_CALL PNV_VOID  nve_ospreprocpktnopq(PNV_VOID, PNV_VOID);
-static NV_API_CALL NV_SINT32 nve_osindicatepkt(PNV_VOID, PNV_VOID *, NV_=
UINT32);
-static NV_API_CALL NV_SINT32 nve_oslockalloc(PNV_VOID, NV_SINT32, PNV_VO=
ID *);
-static NV_API_CALL NV_SINT32 nve_oslockacquire(PNV_VOID, NV_SINT32, PNV_=
VOID);
-static NV_API_CALL NV_SINT32 nve_oslockrelease(PNV_VOID, NV_SINT32, PNV_=
VOID);
-static NV_API_CALL PNV_VOID  nve_osreturnbufvirt(PNV_VOID, PNV_VOID);
-
-static device_method_t nve_methods[] =3D {
-	/* Device interface */
-	DEVMETHOD(device_probe, nve_probe),
-	DEVMETHOD(device_attach, nve_attach),
-	DEVMETHOD(device_detach, nve_detach),
-	DEVMETHOD(device_shutdown, nve_shutdown),
-
-	/* MII interface */
-	DEVMETHOD(miibus_readreg, nve_miibus_readreg),
-	DEVMETHOD(miibus_writereg, nve_miibus_writereg),
-
-	DEVMETHOD_END
-};
-
-static driver_t nve_driver =3D {
-	"nve",
-	nve_methods,
-	sizeof(struct nve_softc)
-};
-
-static devclass_t nve_devclass;
-
-static int      nve_pollinterval =3D 0;
-SYSCTL_INT(_hw, OID_AUTO, nve_pollinterval, CTLFLAG_RW,
-	   &nve_pollinterval, 0, "delay between interface polls");
-
-DRIVER_MODULE(nve, pci, nve_driver, nve_devclass, 0, 0);
-DRIVER_MODULE(miibus, nve, miibus_driver, miibus_devclass, 0, 0);
-
-static struct nve_type nve_devs[] =3D {
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE_LAN,
-	    "NVIDIA nForce MCP Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_LAN,
-	    "NVIDIA nForce2 MCP2 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1,
-	    "NVIDIA nForce2 400 MCP4 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2,
-	    "NVIDIA nForce2 400 MCP5 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_LAN1,
-	    "NVIDIA nForce3 MCP3 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_250_LAN,
-	    "NVIDIA nForce3 250 MCP6 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_LAN4,
-	    "NVIDIA nForce3 MCP7 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE4_LAN1,
-	    "NVIDIA nForce4 CK804 MCP8 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE4_LAN2,
-	    "NVIDIA nForce4 CK804 MCP9 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP04_LAN1,
-	    "NVIDIA nForce MCP04 Networking Adapter"},		// MCP10
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP04_LAN2,
-	    "NVIDIA nForce MCP04 Networking Adapter"},		// MCP11
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE430_LAN1,
-	    "NVIDIA nForce 430 MCP12 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE430_LAN2,
-	    "NVIDIA nForce 430 MCP13 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP55_LAN1,
-	    "NVIDIA nForce MCP55 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP55_LAN2,
-	    "NVIDIA nForce MCP55 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN1,
-	    "NVIDIA nForce MCP61 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN2,
-	    "NVIDIA nForce MCP61 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN3,
-	    "NVIDIA nForce MCP61 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN4,
-	    "NVIDIA nForce MCP61 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN1,
-	    "NVIDIA nForce MCP65 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN2,
-	    "NVIDIA nForce MCP65 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN3,
-	    "NVIDIA nForce MCP65 Networking Adapter"},
-	{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN4,
-	    "NVIDIA nForce MCP65 Networking Adapter"},
-	{0, 0, NULL}
-};
-
-/* DMA MEM map callback function to get data segment physical address */=

-static void
-nve_dmamap_cb(void *arg, bus_dma_segment_t * segs, int nsegs, int error)=

-{
-	if (error)
-		return;
-
-	KASSERT(nsegs =3D=3D 1,
-	    ("Too many DMA segments returned when mapping DMA memory"));
-	*(bus_addr_t *)arg =3D segs->ds_addr;
-}
-
-/* DMA RX map callback function to get data segment physical address */
-static void
-nve_dmamap_rx_cb(void *arg, bus_dma_segment_t * segs, int nsegs,
-    bus_size_t mapsize, int error)
-{
-	if (error)
-		return;
-	*(bus_addr_t *)arg =3D segs->ds_addr;
-}
-
-/*
- * DMA TX buffer callback function to allocate fragment data segment
- * addresses
- */
-static void
-nve_dmamap_tx_cb(void *arg, bus_dma_segment_t * segs, int nsegs, bus_siz=
e_t mapsize, int error)
-{
-	struct nve_tx_desc *info;
-
-	info =3D arg;
-	if (error)
-		return;
-	KASSERT(nsegs < NV_MAX_FRAGS,
-	    ("Too many DMA segments returned when mapping mbuf"));
-	info->numfrags =3D nsegs;
-	bcopy(segs, info->frags, nsegs * sizeof(bus_dma_segment_t));
-}
-
-/* Probe for supported hardware ID's */
-static int
-nve_probe(device_t dev)
-{
-	struct nve_type *t;
-
-	t =3D nve_devs;
-	/* Check for matching PCI DEVICE ID's */
-	while (t->name !=3D NULL) {
-		if ((pci_get_vendor(dev) =3D=3D t->vid_id) &&
-		    (pci_get_device(dev) =3D=3D t->dev_id)) {
-			device_set_desc(dev, t->name);
-			return (BUS_PROBE_LOW_PRIORITY);
-		}
-		t++;
-	}
-
-	return (ENXIO);
-}
-
-/* Attach driver and initialise hardware for use */
-static int
-nve_attach(device_t dev)
-{
-	u_char			eaddr[ETHER_ADDR_LEN];
-	struct nve_softc	*sc;
-	struct ifnet		*ifp;
-	OS_API			*osapi;
-	ADAPTER_OPEN_PARAMS	OpenParams;
-	int			error =3D 0, i, rid;
-
-	if (bootverbose)
-		device_printf(dev, "nvenetlib.o version %s\n", DRIVER_VERSION);
-
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_attach - entry\n");
-
-	sc =3D device_get_softc(dev);
-
-	/* Allocate mutex */
-	mtx_init(&sc->mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
-	    MTX_DEF);
-	callout_init_mtx(&sc->stat_callout, &sc->mtx, 0);
-
-	sc->dev =3D dev;
-
-	/* Preinitialize data structures */
-	bzero(&OpenParams, sizeof(ADAPTER_OPEN_PARAMS));
-
-	/* Enable bus mastering */
-	pci_enable_busmaster(dev);
-
-	/* Allocate memory mapped address space */
-	rid =3D NV_RID;
-	sc->res =3D bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~0, 1,
-	    RF_ACTIVE);
-
-	if (sc->res =3D=3D NULL) {
-		device_printf(dev, "couldn't map memory\n");
-		error =3D ENXIO;
-		goto fail;
-	}
-	sc->sc_st =3D rman_get_bustag(sc->res);
-	sc->sc_sh =3D rman_get_bushandle(sc->res);
-
-	/* Allocate interrupt */
-	rid =3D 0;
-	sc->irq =3D bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1,
-	    RF_SHAREABLE | RF_ACTIVE);
-
-	if (sc->irq =3D=3D NULL) {
-		device_printf(dev, "couldn't map interrupt\n");
-		error =3D ENXIO;
-		goto fail;
-	}
-	/* Allocate DMA tags */
-	error =3D bus_dma_tag_create(bus_get_dma_tag(dev),
-		     4, 0, BUS_SPACE_MAXADDR_32BIT,
-		     BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES * NV_MAX_FRAGS,
-				   NV_MAX_FRAGS, MCLBYTES, 0,
-				   busdma_lock_mutex, &Giant,
-				   &sc->mtag);
-	if (error) {
-		device_printf(dev, "couldn't allocate dma tag\n");
-		goto fail;
-	}
-	error =3D bus_dma_tag_create(bus_get_dma_tag(dev),
-	    4, 0, BUS_SPACE_MAXADDR_32BIT,
-	    BUS_SPACE_MAXADDR, NULL, NULL,
-	    sizeof(struct nve_rx_desc) * RX_RING_SIZE, 1,
-	    sizeof(struct nve_rx_desc) * RX_RING_SIZE, 0,
-	    busdma_lock_mutex, &Giant,
-	    &sc->rtag);
-	if (error) {
-		device_printf(dev, "couldn't allocate dma tag\n");
-		goto fail;
-	}
-	error =3D bus_dma_tag_create(bus_get_dma_tag(dev),
-	    4, 0, BUS_SPACE_MAXADDR_32BIT,
-	    BUS_SPACE_MAXADDR, NULL, NULL,
-	    sizeof(struct nve_tx_desc) * TX_RING_SIZE, 1,
-	    sizeof(struct nve_tx_desc) * TX_RING_SIZE, 0,
-	    busdma_lock_mutex, &Giant,
-	    &sc->ttag);
-	if (error) {
-		device_printf(dev, "couldn't allocate dma tag\n");
-		goto fail;
-	}
-	/* Allocate DMA safe memory and get the DMA addresses. */
-	error =3D bus_dmamem_alloc(sc->ttag, (void **)&sc->tx_desc,
-	    BUS_DMA_WAITOK, &sc->tmap);
-	if (error) {
-		device_printf(dev, "couldn't allocate dma memory\n");
-		goto fail;
-	}
-	bzero(sc->tx_desc, sizeof(struct nve_tx_desc) * TX_RING_SIZE);
-	error =3D bus_dmamap_load(sc->ttag, sc->tmap, sc->tx_desc,
-		    sizeof(struct nve_tx_desc) * TX_RING_SIZE, nve_dmamap_cb,
-		    &sc->tx_addr, 0);
-	if (error) {
-		device_printf(dev, "couldn't map dma memory\n");
-		goto fail;
-	}
-	error =3D bus_dmamem_alloc(sc->rtag, (void **)&sc->rx_desc,
-	    BUS_DMA_WAITOK, &sc->rmap);
-	if (error) {
-		device_printf(dev, "couldn't allocate dma memory\n");
-		goto fail;
-	}
-	bzero(sc->rx_desc, sizeof(struct nve_rx_desc) * RX_RING_SIZE);
-	error =3D bus_dmamap_load(sc->rtag, sc->rmap, sc->rx_desc,
-	    sizeof(struct nve_rx_desc) * RX_RING_SIZE, nve_dmamap_cb,
-	    &sc->rx_addr, 0);
-	if (error) {
-		device_printf(dev, "couldn't map dma memory\n");
-		goto fail;
-	}
-	/* Initialize rings. */
-	if (nve_init_rings(sc)) {
-		device_printf(dev, "failed to init rings\n");
-		error =3D ENXIO;
-		goto fail;
-	}
-	/* Setup NVIDIA API callback routines */
-	osapi				=3D &sc->osapi;
-	osapi->pOSCX			=3D sc;
-	osapi->pfnAllocMemory		=3D nve_osalloc;
-	osapi->pfnFreeMemory		=3D nve_osfree;
-	osapi->pfnAllocMemoryEx		=3D nve_osallocex;
-	osapi->pfnFreeMemoryEx		=3D nve_osfreeex;
-	osapi->pfnClearMemory		=3D nve_osclear;
-	osapi->pfnStallExecution	=3D nve_osdelay;
-	osapi->pfnAllocReceiveBuffer	=3D nve_osallocrxbuf;
-	osapi->pfnFreeReceiveBuffer	=3D nve_osfreerxbuf;
-	osapi->pfnPacketWasSent		=3D nve_ospackettx;
-	osapi->pfnPacketWasReceived	=3D nve_ospacketrx;
-	osapi->pfnLinkStateHasChanged	=3D nve_oslinkchg;
-	osapi->pfnAllocTimer		=3D nve_osalloctimer;
-	osapi->pfnFreeTimer		=3D nve_osfreetimer;
-	osapi->pfnInitializeTimer	=3D nve_osinittimer;
-	osapi->pfnSetTimer		=3D nve_ossettimer;
-	osapi->pfnCancelTimer		=3D nve_oscanceltimer;
-	osapi->pfnPreprocessPacket	=3D nve_ospreprocpkt;
-	osapi->pfnPreprocessPacketNopq	=3D nve_ospreprocpktnopq;
-	osapi->pfnIndicatePackets	=3D nve_osindicatepkt;
-	osapi->pfnLockAlloc		=3D nve_oslockalloc;
-	osapi->pfnLockAcquire		=3D nve_oslockacquire;
-	osapi->pfnLockRelease		=3D nve_oslockrelease;
-	osapi->pfnReturnBufferVirtual	=3D nve_osreturnbufvirt;
-
-	sc->linkup =3D FALSE;
-	sc->max_frame_size =3D ETHERMTU + ETHER_HDR_LEN + FCS_LEN;
-
-	/* TODO - We don't support hardware offload yet */
-	sc->hwmode =3D 1;
-	sc->media =3D 0;
-
-	/* Set NVIDIA API startup parameters */
-	OpenParams.MaxDpcLoop =3D 2;
-	OpenParams.MaxRxPkt =3D RX_RING_SIZE;
-	OpenParams.MaxTxPkt =3D TX_RING_SIZE;
-	OpenParams.SentPacketStatusSuccess =3D 1;
-	OpenParams.SentPacketStatusFailure =3D 0;
-	OpenParams.MaxRxPktToAccumulate =3D 6;
-	OpenParams.ulPollInterval =3D nve_pollinterval;
-	OpenParams.SetForcedModeEveryNthRxPacket =3D 0;
-	OpenParams.SetForcedModeEveryNthTxPacket =3D 0;
-	OpenParams.RxForcedInterrupt =3D 0;
-	OpenParams.TxForcedInterrupt =3D 0;
-	OpenParams.pOSApi =3D osapi;
-	OpenParams.pvHardwareBaseAddress =3D rman_get_virtual(sc->res);
-	OpenParams.bASFEnabled =3D 0;
-	OpenParams.ulDescriptorVersion =3D sc->hwmode;
-	OpenParams.ulMaxPacketSize =3D sc->max_frame_size;
-	OpenParams.DeviceId =3D pci_get_device(dev);
-
-	/* Open NVIDIA Hardware API */
-	error =3D ADAPTER_Open(&OpenParams, (void **)&(sc->hwapi), &sc->phyaddr=
);
-	if (error) {
-		device_printf(dev,
-		    "failed to open NVIDIA Hardware API: 0x%x\n", error);
-		goto fail;
-	}
-=09
-	/* TODO - Add support for MODE2 hardware offload */=20
-=09
-	bzero(&sc->adapterdata, sizeof(sc->adapterdata));
-=09
-	sc->adapterdata.ulMediaIF =3D sc->media;
-	sc->adapterdata.ulModeRegTxReadCompleteEnable =3D 1;
-	sc->hwapi->pfnSetCommonData(sc->hwapi->pADCX, &sc->adapterdata);
-=09
-	/* MAC is loaded backwards into h/w reg */
-	sc->hwapi->pfnGetNodeAddress(sc->hwapi->pADCX, sc->original_mac_addr);
-	for (i =3D 0; i < 6; i++) {
-		eaddr[i] =3D sc->original_mac_addr[5 - i];
-	}
-	sc->hwapi->pfnSetNodeAddress(sc->hwapi->pADCX, eaddr);
-
-	/* Display ethernet address ,... */
-	device_printf(dev, "Ethernet address %6D\n", eaddr, ":");
-
-	/* Allocate interface structures */
-	ifp =3D sc->ifp =3D if_alloc(IFT_ETHER);
-	if (ifp =3D=3D NULL) {
-		device_printf(dev, "can not if_alloc()\n");
-		error =3D ENOSPC;
-		goto fail;
-	}
-
-	/* Setup interface parameters */
-	ifp->if_softc =3D sc;
-	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-	ifp->if_flags =3D IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-	ifp->if_ioctl =3D nve_ioctl;
-	ifp->if_start =3D nve_ifstart;
-	ifp->if_init =3D nve_init;
-	ifp->if_baudrate =3D IF_Mbps(100);
-	IFQ_SET_MAXLEN(&ifp->if_snd, TX_RING_SIZE - 1);
-	ifp->if_snd.ifq_drv_maxlen =3D TX_RING_SIZE - 1;
-	IFQ_SET_READY(&ifp->if_snd);
-	ifp->if_capabilities |=3D IFCAP_VLAN_MTU;
-	ifp->if_capenable |=3D IFCAP_VLAN_MTU;
-
-	/* Attach device for MII interface to PHY */
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: do mii_attach\n");
-	error =3D mii_attach(dev, &sc->miibus, ifp, nve_ifmedia_upd,
-	    nve_ifmedia_sts, BMSR_DEFCAPMASK, MII_PHY_ANY, MII_OFFSET_ANY, 0);
-	if (error !=3D 0) {
-		device_printf(dev, "attaching PHYs failed\n");
-		goto fail;
-	}
-
-	/* Attach to OS's managers. */
-	ether_ifattach(ifp, eaddr);
-
-	/* Activate our interrupt handler. - attach last to avoid lock */
-	error =3D bus_setup_intr(dev, sc->irq, INTR_TYPE_NET | INTR_MPSAFE,
-	    NULL, nve_intr, sc, &sc->sc_ih);
-	if (error) {
-		device_printf(dev, "couldn't set up interrupt handler\n");
-		goto fail;
-	}
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_attach - exit\n");
-
-fail:
-	if (error)
-		nve_detach(dev);
-
-	return (error);
-}
-
-/* Detach interface for module unload */
-static int
-nve_detach(device_t dev)
-{
-	struct nve_softc *sc =3D device_get_softc(dev);
-	struct ifnet *ifp;
-
-	KASSERT(mtx_initialized(&sc->mtx), ("mutex not initialized"));
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: nve_detach - entry\n");
-
-	ifp =3D sc->ifp;
-
-	if (device_is_attached(dev)) {
-		ether_ifdetach(ifp);
-		NVE_LOCK(sc);
-		nve_stop(sc);
-		NVE_UNLOCK(sc);
-		callout_drain(&sc->stat_callout);
-	}
-
-	if (sc->miibus)
-		device_delete_child(dev, sc->miibus);
-	bus_generic_detach(dev);
-
-	/* Reload unreversed address back into MAC in original state */
-	if (sc->original_mac_addr)
-		sc->hwapi->pfnSetNodeAddress(sc->hwapi->pADCX,
-		    sc->original_mac_addr);
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: do pfnClose\n");
-	/* Detach from NVIDIA hardware API */
-	if (sc->hwapi->pfnClose)
-		sc->hwapi->pfnClose(sc->hwapi->pADCX, FALSE);
-	/* Release resources */
-	if (sc->sc_ih)
-		bus_teardown_intr(sc->dev, sc->irq, sc->sc_ih);
-	if (sc->irq)
-		bus_release_resource(sc->dev, SYS_RES_IRQ, 0, sc->irq);
-	if (sc->res)
-		bus_release_resource(sc->dev, SYS_RES_MEMORY, NV_RID, sc->res);
-
-	nve_free_rings(sc);
-
-	if (sc->tx_desc) {
-		bus_dmamap_unload(sc->rtag, sc->rmap);
-		bus_dmamem_free(sc->rtag, sc->rx_desc, sc->rmap);
-		bus_dmamap_destroy(sc->rtag, sc->rmap);
-	}
-	if (sc->mtag)
-		bus_dma_tag_destroy(sc->mtag);
-	if (sc->ttag)
-		bus_dma_tag_destroy(sc->ttag);
-	if (sc->rtag)
-		bus_dma_tag_destroy(sc->rtag);
-
-	if (ifp)
-		if_free(ifp);
-	mtx_destroy(&sc->mtx);
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: nve_detach - exit\n");
-
-	return (0);
-}
-
-/* Initialise interface and start it "RUNNING" */
-static void
-nve_init(void *xsc)
-{
-	struct nve_softc *sc =3D xsc;
-
-	NVE_LOCK(sc);
-	nve_init_locked(sc);
-	NVE_UNLOCK(sc);
-}
-
-static void
-nve_init_locked(struct nve_softc *sc)
-{
-	struct ifnet *ifp;
-	int error;
-
-	NVE_LOCK_ASSERT(sc);
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_init - entry (%d)\n", sc->linkup);
-
-	ifp =3D sc->ifp;
-
-	/* Do nothing if already running */
-	if (ifp->if_drv_flags & IFF_DRV_RUNNING)
-		return;
-
-	nve_stop(sc);
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: do pfnInit\n");
-
-	nve_ifmedia_upd_locked(ifp);
-
-	/* Setup Hardware interface and allocate memory structures */
-	error =3D sc->hwapi->pfnInit(sc->hwapi->pADCX,=20
-	    0, /* force speed */=20
-	    0, /* force full duplex */
-	    0, /* force mode */
-	    0, /* force async mode */
-	    &sc->linkup);
-
-	if (error) {
-		device_printf(sc->dev,
-		    "failed to start NVIDIA Hardware interface\n");
-		return;
-	}
-	/* Set the MAC address */
-	sc->hwapi->pfnSetNodeAddress(sc->hwapi->pADCX, IF_LLADDR(sc->ifp));
-	sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX);
-	sc->hwapi->pfnStart(sc->hwapi->pADCX);
-
-	/* Setup multicast filter */
-	nve_setmulti(sc);
-
-	/* Update interface parameters */
-	ifp->if_drv_flags |=3D IFF_DRV_RUNNING;
-	ifp->if_drv_flags &=3D ~IFF_DRV_OACTIVE;
-
-	callout_reset(&sc->stat_callout, hz, nve_tick, sc);
-
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_init - exit\n");
-
-	return;
-}
-
-/* Stop interface activity ie. not "RUNNING" */
-static void
-nve_stop(struct nve_softc *sc)
-{
-	struct ifnet *ifp;
-
-	NVE_LOCK_ASSERT(sc);
-
-	DEBUGOUT(NVE_DEBUG_RUNNING, "nve: nve_stop - entry\n");
-
-	ifp =3D sc->ifp;
-	sc->tx_timer =3D 0;
-
-	/* Cancel tick timer */
-	callout_stop(&sc->stat_callout);
-
-	/* Stop hardware activity */
-	sc->hwapi->pfnDisableInterrupts(sc->hwapi->pADCX);
-	sc->hwapi->pfnStop(sc->hwapi->pADCX, 0);
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: do pfnDeinit\n");
-	/* Shutdown interface and deallocate memory buffers */
-	if (sc->hwapi->pfnDeinit)
-		sc->hwapi->pfnDeinit(sc->hwapi->pADCX, 0);
-
-	sc->linkup =3D 0;
-	sc->cur_rx =3D 0;
-	sc->pending_rxs =3D 0;
-	sc->pending_txs =3D 0;
-
-	ifp->if_drv_flags &=3D ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
-
-	DEBUGOUT(NVE_DEBUG_RUNNING, "nve: nve_stop - exit\n");
-
-	return;
-}
-
-/* Shutdown interface for unload/reboot */
-static int
-nve_shutdown(device_t dev)
-{
-	struct nve_softc *sc;
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: nve_shutdown\n");
-
-	sc =3D device_get_softc(dev);
-
-	/* Stop hardware activity */
-	NVE_LOCK(sc);
-	nve_stop(sc);
-	NVE_UNLOCK(sc);
-
-	return (0);
-}
-
-/* Allocate TX ring buffers */
-static int
-nve_init_rings(struct nve_softc *sc)
-{
-	int error, i;
-
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_init_rings - entry\n");
-
-	sc->cur_rx =3D sc->cur_tx =3D sc->pending_rxs =3D sc->pending_txs =3D 0=
;
-	/* Initialise RX ring */
-	for (i =3D 0; i < RX_RING_SIZE; i++) {
-		struct nve_rx_desc *desc =3D sc->rx_desc + i;
-		struct nve_map_buffer *buf =3D &desc->buf;
-
-		buf->mbuf =3D m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
-		if (buf->mbuf =3D=3D NULL) {
-			device_printf(sc->dev, "couldn't allocate mbuf\n");
-			nve_free_rings(sc);
-			return (ENOBUFS);
-		}
-		buf->mbuf->m_len =3D buf->mbuf->m_pkthdr.len =3D MCLBYTES;
-		m_adj(buf->mbuf, ETHER_ALIGN);
-
-		error =3D bus_dmamap_create(sc->mtag, 0, &buf->map);
-		if (error) {
-			device_printf(sc->dev, "couldn't create dma map\n");
-			nve_free_rings(sc);
-			return (error);
-		}
-		error =3D bus_dmamap_load_mbuf(sc->mtag, buf->map, buf->mbuf,
-					  nve_dmamap_rx_cb, &desc->paddr, 0);
-		if (error) {
-			device_printf(sc->dev, "couldn't dma map mbuf\n");
-			nve_free_rings(sc);
-			return (error);
-		}
-		bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_PREREAD);
-
-		desc->buflength =3D buf->mbuf->m_len;
-		desc->vaddr =3D mtod(buf->mbuf, caddr_t);
-	}
-	bus_dmamap_sync(sc->rtag, sc->rmap,
-	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
-
-	/* Initialize TX ring */
-	for (i =3D 0; i < TX_RING_SIZE; i++) {
-		struct nve_tx_desc *desc =3D sc->tx_desc + i;
-		struct nve_map_buffer *buf =3D &desc->buf;
-
-		buf->mbuf =3D NULL;
-
-		error =3D bus_dmamap_create(sc->mtag, 0, &buf->map);
-		if (error) {
-			device_printf(sc->dev, "couldn't create dma map\n");
-			nve_free_rings(sc);
-			return (error);
-		}
-	}
-	bus_dmamap_sync(sc->ttag, sc->tmap,
-	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
-
-	DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_init_rings - exit\n");
-
-	return (error);
-}
-
-/* Free the TX ring buffers */
-static void
-nve_free_rings(struct nve_softc *sc)
-{
-	int i;
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: nve_free_rings - entry\n");
-
-	for (i =3D 0; i < RX_RING_SIZE; i++) {
-		struct nve_rx_desc *desc =3D sc->rx_desc + i;
-		struct nve_map_buffer *buf =3D &desc->buf;
-
-		if (buf->mbuf) {
-			bus_dmamap_unload(sc->mtag, buf->map);
-			bus_dmamap_destroy(sc->mtag, buf->map);
-			m_freem(buf->mbuf);
-		}
-		buf->mbuf =3D NULL;
-	}
-
-	for (i =3D 0; i < TX_RING_SIZE; i++) {
-		struct nve_tx_desc *desc =3D sc->tx_desc + i;
-		struct nve_map_buffer *buf =3D &desc->buf;
-
-		if (buf->mbuf) {
-			bus_dmamap_unload(sc->mtag, buf->map);
-			bus_dmamap_destroy(sc->mtag, buf->map);
-			m_freem(buf->mbuf);
-		}
-		buf->mbuf =3D NULL;
-	}
-
-	DEBUGOUT(NVE_DEBUG_DEINIT, "nve: nve_free_rings - exit\n");
-}
-
-/* Main loop for sending packets from OS to interface */
-static void
-nve_ifstart(struct ifnet *ifp)
-{
-	struct nve_softc *sc =3D ifp->if_softc;
-
-	NVE_LOCK(sc);
-	nve_ifstart_locked(ifp);
-	NVE_UNLOCK(sc);
-}
-
-static void
-nve_ifstart_locked(struct ifnet *ifp)
-{
-	struct nve_softc *sc =3D ifp->if_softc;
-	struct nve_map_buffer *buf;
-	struct mbuf    *m0, *m;
-	struct nve_tx_desc *desc;
-	ADAPTER_WRITE_DATA txdata;
-	int error, i;
-
-	DEBUGOUT(NVE_DEBUG_RUNNING, "nve: nve_ifstart - entry\n");
-
-	NVE_LOCK_ASSERT(sc);
-
-	/* If link is down/busy or queue is empty do nothing */
-	if (ifp->if_drv_flags & IFF_DRV_OACTIVE ||
-	    IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-		return;
-
-	/* Transmit queued packets until sent or TX ring is full */
-	while (sc->pending_txs < TX_RING_SIZE) {
-		desc =3D sc->tx_desc + sc->cur_tx;
-		buf =3D &desc->buf;
-
-		/* Get next packet to send. */
-		IFQ_DRV_DEQUEUE(&ifp->if_snd, m0);
-
-		/* If nothing to send, return. */
-		if (m0 =3D=3D NULL)
-			return;
-
-		/*
-		 * On nForce4, the chip doesn't interrupt on transmit,
-		 * so try to flush transmitted packets from the queue
-		 * if it's getting large (see note in nve_watchdog).
-		 */
-		if (sc->pending_txs > TX_RING_SIZE/2) {
-			sc->hwapi->pfnDisableInterrupts(sc->hwapi->pADCX);
-			sc->hwapi->pfnHandleInterrupt(sc->hwapi->pADCX);
-			sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX);
-		}
-
-		/* Map MBUF for DMA access */
-		error =3D bus_dmamap_load_mbuf(sc->mtag, buf->map, m0,
-		    nve_dmamap_tx_cb, desc, BUS_DMA_NOWAIT);
-
-		if (error && error !=3D EFBIG) {
-			m_freem(m0);
-			sc->tx_errors++;
-			continue;
-		}
-		/*
-		 * Packet has too many fragments - defrag into new mbuf
-		 * cluster
-		 */
-		if (error) {
-			m =3D m_defrag(m0, M_NOWAIT);
-			if (m =3D=3D NULL) {
-				m_freem(m0);
-				sc->tx_errors++;
-				continue;
-			}
-			m0 =3D m;
-
-			error =3D bus_dmamap_load_mbuf(sc->mtag, buf->map, m,
-			    nve_dmamap_tx_cb, desc, BUS_DMA_NOWAIT);
-			if (error) {
-				m_freem(m);
-				sc->tx_errors++;
-				continue;
-			}
-		}
-		/* Do sync on DMA bounce buffer */
-		bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_PREWRITE);
-
-		buf->mbuf =3D m0;
-		txdata.ulNumberOfElements =3D desc->numfrags;
-		txdata.pvID =3D (PVOID)desc;
-
-		/* Put fragments into API element list */
-		txdata.ulTotalLength =3D buf->mbuf->m_len;
-		for (i =3D 0; i < desc->numfrags; i++) {
-			txdata.sElement[i].ulLength =3D
-			    (ulong)desc->frags[i].ds_len;
-			txdata.sElement[i].pPhysical =3D
-			    (PVOID)desc->frags[i].ds_addr;
-		}
-
-		/* Send packet to Nvidia API for transmission */
-		error =3D sc->hwapi->pfnWrite(sc->hwapi->pADCX, &txdata);
-
-		switch (error) {
-		case ADAPTERERR_NONE:
-			/* Packet was queued in API TX queue successfully */
-			sc->pending_txs++;
-			sc->cur_tx =3D (sc->cur_tx + 1) % TX_RING_SIZE;
-			break;
-
-		case ADAPTERERR_TRANSMIT_QUEUE_FULL:
-			/* The API TX queue is full - requeue the packet */
-			device_printf(sc->dev,
-			    "nve_ifstart: transmit queue is full\n");
-			ifp->if_drv_flags |=3D IFF_DRV_OACTIVE;
-			bus_dmamap_unload(sc->mtag, buf->map);
-			IFQ_DRV_PREPEND(&ifp->if_snd, buf->mbuf);
-			buf->mbuf =3D NULL;
-			return;
-
-		default:
-			/* The API failed to queue/send the packet so dump it */
-			device_printf(sc->dev, "nve_ifstart: transmit error\n");
-			bus_dmamap_unload(sc->mtag, buf->map);
-			m_freem(buf->mbuf);
-			buf->mbuf =3D NULL;
-			sc->tx_errors++;
-			return;
-		}
-		/* Set watchdog timer. */
-		sc->tx_timer =3D 8;
-
-		/* Copy packet to BPF tap */
-		BPF_MTAP(ifp, m0);
-	}
-	ifp->if_drv_flags |=3D IFF_DRV_OACTIVE;
-
-	DEBUGOUT(NVE_DEBUG_RUNNING, "nve: nve_ifstart - exit\n");
-}
-
-/* Handle IOCTL events */
-static int
-nve_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
-{
-	struct nve_softc *sc =3D ifp->if_softc;
-	struct ifreq *ifr =3D (struct ifreq *) data;
-	struct mii_data *mii;
-	int error =3D 0;
-
-	DEBUGOUT(NVE_DEBUG_IOCTL, "nve: nve_ioctl - entry\n");
-
-	switch (command) {
-	case SIOCSIFMTU:
-		/* Set MTU size */
-		NVE_LOCK(sc);
-		if (ifp->if_mtu =3D=3D ifr->ifr_mtu) {
-			NVE_UNLOCK(sc);
-			break;
-		}
-		if (ifr->ifr_mtu + ifp->if_hdrlen <=3D MAX_PACKET_SIZE_1518) {
-			ifp->if_mtu =3D ifr->ifr_mtu;
-			nve_stop(sc);
-			nve_init_locked(sc);
-		} else
-			error =3D EINVAL;
-		NVE_UNLOCK(sc);
-		break;
-
-	case SIOCSIFFLAGS:
-		/* Setup interface flags */
-		NVE_LOCK(sc);
-		if (ifp->if_flags & IFF_UP) {
-			if ((ifp->if_drv_flags & IFF_DRV_RUNNING) =3D=3D 0) {
-				nve_init_locked(sc);
-				NVE_UNLOCK(sc);
-				break;
-			}
-		} else {
-			if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-				nve_stop(sc);
-				NVE_UNLOCK(sc);
-				break;
-			}
-		}
-		/* Handle IFF_PROMISC and IFF_ALLMULTI flags. */
-		nve_setmulti(sc);
-		NVE_UNLOCK(sc);
-		break;
-
-	case SIOCADDMULTI:
-	case SIOCDELMULTI:
-		/* Setup multicast filter */
-		NVE_LOCK(sc);
-		if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-			nve_setmulti(sc);
-		}
-		NVE_UNLOCK(sc);
-		break;
-
-	case SIOCGIFMEDIA:
-	case SIOCSIFMEDIA:
-		/* Get/Set interface media parameters */
-		mii =3D device_get_softc(sc->miibus);
-		error =3D ifmedia_ioctl(ifp, ifr, &mii->mii_media, command);
-		break;
-
-	default:
-		/* Everything else we forward to generic ether ioctl */
-		error =3D ether_ioctl(ifp, command, data);
-		break;
-	}
-
-	DEBUGOUT(NVE_DEBUG_IOCTL, "nve: nve_ioctl - exit\n");
-
-	return (error);
-}
-
-/* Interrupt service routine */
-static void
-nve_intr(void *arg)
-{
-	struct nve_softc *sc =3D arg;
-	struct ifnet *ifp =3D sc->ifp;
-
-	DEBUGOUT(NVE_DEBUG_INTERRUPT, "nve: nve_intr - entry\n");
-
-	NVE_LOCK(sc);
-	if (!ifp->if_flags & IFF_UP) {
-		nve_stop(sc);
-		NVE_UNLOCK(sc);
-		return;
-	}
-	/* Handle interrupt event */
-	if (sc->hwapi->pfnQueryInterrupt(sc->hwapi->pADCX)) {
-		sc->hwapi->pfnHandleInterrupt(sc->hwapi->pADCX);
-		sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX);
-	}
-	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-		nve_ifstart_locked(ifp);
-
-	/* If no pending packets we don't need a timeout */
-	if (sc->pending_txs =3D=3D 0)
-		sc->tx_timer =3D 0;
-	NVE_UNLOCK(sc);
-
-	DEBUGOUT(NVE_DEBUG_INTERRUPT, "nve: nve_intr - exit\n");
-
-	return;
-}
-
-/* Setup multicast filters */
-static void
-nve_setmulti(struct nve_softc *sc)
-{
-	struct ifnet *ifp;
-	struct ifmultiaddr *ifma;
-	PACKET_FILTER hwfilter;
-	int i;
-	u_int8_t andaddr[6], oraddr[6];
-
-	NVE_LOCK_ASSERT(sc);
-
-	DEBUGOUT(NVE_DEBUG_RUNNING, "nve: nve_setmulti - entry\n");
-
-	ifp =3D sc->ifp;
-
-	/* Initialize filter */
-	hwfilter.ulFilterFlags =3D 0;
-	for (i =3D 0; i < 6; i++) {
-		hwfilter.acMulticastAddress[i] =3D 0;
-		hwfilter.acMulticastMask[i] =3D 0;
-	}
-
-	if (ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) {
-		/* Accept all packets */
-		hwfilter.ulFilterFlags |=3D ACCEPT_ALL_PACKETS;
-		sc->hwapi->pfnSetPacketFilter(sc->hwapi->pADCX, &hwfilter);
-		return;
-	}
-	/* Setup multicast filter */
-	if_maddr_rlock(ifp);
-	TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
-		u_char *addrp;
-
-		if (ifma->ifma_addr->sa_family !=3D AF_LINK)
-			continue;
-
-		addrp =3D LLADDR((struct sockaddr_dl *) ifma->ifma_addr);
-		for (i =3D 0; i < 6; i++) {
-			u_int8_t mcaddr =3D addrp[i];
-			andaddr[i] &=3D mcaddr;
-			oraddr[i] |=3D mcaddr;
-		}
-	}
-	if_maddr_runlock(ifp);
-	for (i =3D 0; i < 6; i++) {
-		hwfilter.acMulticastAddress[i] =3D andaddr[i] & oraddr[i];
-		hwfilter.acMulticastMask[i] =3D andaddr[i] | (~oraddr[i]);
-	}
-
-	/* Send filter to NVIDIA API */
-	sc->hwapi->pfnSetPacketFilter(sc->hwapi->pADCX, &hwfilter);
-
-	DEBUGOUT(NVE_DEBUG_RUNNING, "nve: nve_setmulti - exit\n");
-
-	return;
-}
-
-/* Change the current media/mediaopts */
-static int
-nve_ifmedia_upd(struct ifnet *ifp)
-{
-	struct nve_softc *sc =3D ifp->if_softc;
-
-	NVE_LOCK(sc);
-	nve_ifmedia_upd_locked(ifp);
-	NVE_UNLOCK(sc);
-	return (0);
-}
-
-static void
-nve_ifmedia_upd_locked(struct ifnet *ifp)
-{
-	struct nve_softc *sc =3D ifp->if_softc;
-	struct mii_data *mii;
-	struct mii_softc *miisc;
-
-	DEBUGOUT(NVE_DEBUG_MII, "nve: nve_ifmedia_upd\n");
-
-	NVE_LOCK_ASSERT(sc);
-	mii =3D device_get_softc(sc->miibus);
-
-	LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
-		PHY_RESET(miisc);
-	mii_mediachg(mii);
-}
-
-/* Update current miibus PHY status of media */
-static void
-nve_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
-{
-	struct nve_softc *sc;
-	struct mii_data *mii;
-
-	DEBUGOUT(NVE_DEBUG_MII, "nve: nve_ifmedia_sts\n");
-
-	sc =3D ifp->if_softc;
-	NVE_LOCK(sc);
-	mii =3D device_get_softc(sc->miibus);
-	mii_pollstat(mii);
-
-	ifmr->ifm_active =3D mii->mii_media_active;
-	ifmr->ifm_status =3D mii->mii_media_status;
-	NVE_UNLOCK(sc);
-
-	return;
-}
-
-/* miibus tick timer - maintain link status */
-static void
-nve_tick(void *xsc)
-{
-	struct nve_softc *sc =3D xsc;
-	struct mii_data *mii;
-	struct ifnet *ifp;
-
-	NVE_LOCK_ASSERT(sc);
-
-	ifp =3D sc->ifp;
-	nve_update_stats(sc);
-
-	mii =3D device_get_softc(sc->miibus);
-	mii_tick(mii);
-
-	if (mii->mii_media_status & IFM_ACTIVE &&
-	    IFM_SUBTYPE(mii->mii_media_active) !=3D IFM_NONE) {
-		if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-			nve_ifstart_locked(ifp);
-	}
-
-	if (sc->tx_timer > 0 && --sc->tx_timer =3D=3D 0)
-		nve_watchdog(sc);
-	callout_reset(&sc->stat_callout, hz, nve_tick, sc);
-
-	return;
-}
-
-/* Update ifnet data structure with collected interface stats from API *=
/
-static void
-nve_update_stats(struct nve_softc *sc)
-{
-	struct ifnet *ifp =3D sc->ifp;
-	ADAPTER_STATS stats;
-
-	NVE_LOCK_ASSERT(sc);
-
-	if (sc->hwapi) {
-		sc->hwapi->pfnGetStatistics(sc->hwapi->pADCX, &stats);
-
-		ifp->if_ipackets =3D stats.ulSuccessfulReceptions;
-		ifp->if_ierrors =3D stats.ulMissedFrames +
-			stats.ulFailedReceptions +
-			stats.ulCRCErrors +
-			stats.ulFramingErrors +
-			stats.ulOverFlowErrors;
-
-		ifp->if_opackets =3D stats.ulSuccessfulTransmissions;
-		ifp->if_oerrors =3D sc->tx_errors +
-			stats.ulFailedTransmissions +
-			stats.ulRetryErrors +
-			stats.ulUnderflowErrors +
-			stats.ulLossOfCarrierErrors +
-			stats.ulLateCollisionErrors;
-
-		ifp->if_collisions =3D stats.ulLateCollisionErrors;
-	}
-
-	return;
-}
-
-/* miibus Read PHY register wrapper - calls Nvidia API entry point */
-static int
-nve_miibus_readreg(device_t dev, int phy, int reg)
-{
-	struct nve_softc *sc =3D device_get_softc(dev);
-	ULONG data;
-
-	DEBUGOUT(NVE_DEBUG_MII, "nve: nve_miibus_readreg - entry\n");
-
-	ADAPTER_ReadPhy(sc->hwapi->pADCX, phy, reg, &data);
-
-	DEBUGOUT(NVE_DEBUG_MII, "nve: nve_miibus_readreg - exit\n");
-
-	return (data);
-}
-
-/* miibus Write PHY register wrapper - calls Nvidia API entry point */
-static int
-nve_miibus_writereg(device_t dev, int phy, int reg, int data)
-{
-	struct nve_softc *sc =3D device_get_softc(dev);
-
-	DEBUGOUT(NVE_DEBUG_MII, "nve: nve_miibus_writereg - entry\n");
-
-	ADAPTER_WritePhy(sc->hwapi->pADCX, phy, reg, (ulong)data);
-
-	DEBUGOUT(NVE_DEBUG_MII, "nve: nve_miibus_writereg - exit\n");
-
-	return 0;
-}
-
-/* Watchdog timer to prevent PHY lockups */
-static void
-nve_watchdog(struct nve_softc *sc)
-{
-	struct ifnet *ifp;
-	int pending_txs_start;
-
-	NVE_LOCK_ASSERT(sc);
-	ifp =3D sc->ifp;
-
-	/*
-	 * The nvidia driver blob defers tx completion notifications.
-	 * Thus, sometimes the watchdog timer will go off when the
-	 * tx engine is fine, but the tx completions are just deferred.
-	 * Try kicking the driver blob to clear out any pending tx
-	 * completions.  If that clears up any of the pending tx
-	 * operations, then just return without printing the warning
-	 * message or resetting the adapter, as we can then conclude
-	 * the chip hasn't actually crashed (it's still sending packets).
-	 */
-	pending_txs_start =3D sc->pending_txs;
-	sc->hwapi->pfnDisableInterrupts(sc->hwapi->pADCX);
-	sc->hwapi->pfnHandleInterrupt(sc->hwapi->pADCX);
-	sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX);
-	if (sc->pending_txs < pending_txs_start)
-		return;
-
-	device_printf(sc->dev, "device timeout (%d)\n", sc->pending_txs);
-
-	sc->tx_errors++;
-
-	nve_stop(sc);
-	nve_init_locked(sc);
-
-	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-		nve_ifstart_locked(ifp);
-}
-
-/* --- Start of NVOSAPI interface --- */
-
-/* Allocate DMA enabled general use memory for API */
-static NV_API_CALL NV_SINT32
-nve_osalloc(PNV_VOID ctx, PMEMORY_BLOCK mem)
-{
-	struct nve_softc *sc;
-	bus_addr_t mem_physical;
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osalloc - %d\n", mem->uiLength);
-
-	sc =3D (struct nve_softc *)ctx;
-
-	mem->pLogical =3D (PVOID)contigmalloc(mem->uiLength, M_DEVBUF,
-	    M_NOWAIT | M_ZERO, 0, 0xffffffff, PAGE_SIZE, 0);
-
-	if (!mem->pLogical) {
-		device_printf(sc->dev, "memory allocation failed\n");
-		return (0);
-	}
-	memset(mem->pLogical, 0, (ulong)mem->uiLength);
-	mem_physical =3D vtophys(mem->pLogical);
-	mem->pPhysical =3D (PVOID)mem_physical;
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osalloc 0x%x/0x%x - %d\n",
-	    (uint)mem->pLogical, (uint)mem->pPhysical, (uint)mem->uiLength);
-
-	return (1);
-}
-
-/* Free allocated memory */
-static NV_API_CALL NV_SINT32
-nve_osfree(PNV_VOID ctx, PMEMORY_BLOCK mem)
-{
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osfree - 0x%x - %d\n",
-	    (uint)mem->pLogical, (uint) mem->uiLength);
-
-	contigfree(mem->pLogical, PAGE_SIZE, M_DEVBUF);
-	return (1);
-}
-
-/* Copied directly from nvnet.c */
-static NV_API_CALL NV_SINT32
-nve_osallocex(PNV_VOID ctx, PMEMORY_BLOCKEX mem_block_ex)
-{
-	MEMORY_BLOCK mem_block;
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osallocex\n");
-
-	mem_block_ex->pLogical =3D NULL;
-	mem_block_ex->uiLengthOrig =3D mem_block_ex->uiLength;
-
-	if ((mem_block_ex->AllocFlags & ALLOC_MEMORY_ALIGNED) &&
-	    (mem_block_ex->AlignmentSize > 1)) {
-		DEBUGOUT(NVE_DEBUG_API, "     aligning on %d\n",
-		    mem_block_ex->AlignmentSize);
-		mem_block_ex->uiLengthOrig +=3D mem_block_ex->AlignmentSize;
-	}
-	mem_block.uiLength =3D mem_block_ex->uiLengthOrig;
-
-	if (nve_osalloc(ctx, &mem_block) =3D=3D 0) {
-		return (0);
-	}
-	mem_block_ex->pLogicalOrig =3D mem_block.pLogical;
-	mem_block_ex->pPhysicalOrigLow =3D (unsigned long)mem_block.pPhysical;
-	mem_block_ex->pPhysicalOrigHigh =3D 0;
-
-	mem_block_ex->pPhysical =3D mem_block.pPhysical;
-	mem_block_ex->pLogical =3D mem_block.pLogical;
-
-	if (mem_block_ex->uiLength !=3D mem_block_ex->uiLengthOrig) {
-		unsigned int offset;
-		offset =3D mem_block_ex->pPhysicalOrigLow &
-		    (mem_block_ex->AlignmentSize - 1);
-
-		if (offset) {
-			mem_block_ex->pPhysical =3D
-			    (PVOID)((ulong)mem_block_ex->pPhysical +
-			    mem_block_ex->AlignmentSize - offset);
-			mem_block_ex->pLogical =3D
-			    (PVOID)((ulong)mem_block_ex->pLogical +
-			    mem_block_ex->AlignmentSize - offset);
-		} /* if (offset) */
-	} /* if (mem_block_ex->uiLength !=3D *mem_block_ex->uiLengthOrig) */
-	return (1);
-}
-
-/* Copied directly from nvnet.c */
-static NV_API_CALL NV_SINT32
-nve_osfreeex(PNV_VOID ctx, PMEMORY_BLOCKEX mem_block_ex)
-{
-	MEMORY_BLOCK mem_block;
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osfreeex\n");
-
-	mem_block.pLogical =3D mem_block_ex->pLogicalOrig;
-	mem_block.pPhysical =3D (PVOID)((ulong)mem_block_ex->pPhysicalOrigLow);=

-	mem_block.uiLength =3D mem_block_ex->uiLengthOrig;
-
-	return (nve_osfree(ctx, &mem_block));
-}
-
-/* Clear memory region */
-static NV_API_CALL NV_SINT32
-nve_osclear(PNV_VOID ctx, PNV_VOID mem, NV_SINT32 length)
-{
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osclear\n");
-	memset(mem, 0, length);
-	return (1);
-}
-
-/* Sleep for a tick */
-static NV_API_CALL NV_SINT32
-nve_osdelay(PNV_VOID ctx, NV_UINT32 usec)
-{
-	DELAY(usec);
-	return (1);
-}
-
-/* Allocate memory for rx buffer */
-static NV_API_CALL NV_SINT32
-nve_osallocrxbuf(PNV_VOID ctx, PMEMORY_BLOCK mem, PNV_VOID *id)
-{
-	struct nve_softc *sc =3D ctx;
-	struct nve_rx_desc *desc;
-	struct nve_map_buffer *buf;
-	int error;
-
-	if (device_is_attached(sc->dev))
-		NVE_LOCK_ASSERT(sc);
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osallocrxbuf\n");
-
-	if (sc->pending_rxs =3D=3D RX_RING_SIZE) {
-		device_printf(sc->dev, "rx ring buffer is full\n");
-		goto fail;
-	}
-	desc =3D sc->rx_desc + sc->cur_rx;
-	buf =3D &desc->buf;
-
-	if (buf->mbuf =3D=3D NULL) {
-		buf->mbuf =3D m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
-		if (buf->mbuf =3D=3D NULL) {
-			device_printf(sc->dev, "failed to allocate memory\n");
-			goto fail;
-		}
-		buf->mbuf->m_len =3D buf->mbuf->m_pkthdr.len =3D MCLBYTES;
-		m_adj(buf->mbuf, ETHER_ALIGN);
-
-		error =3D bus_dmamap_load_mbuf(sc->mtag, buf->map, buf->mbuf,
-		    nve_dmamap_rx_cb, &desc->paddr, 0);
-		if (error) {
-			device_printf(sc->dev, "failed to dmamap mbuf\n");
-			m_freem(buf->mbuf);
-			buf->mbuf =3D NULL;
-			goto fail;
-		}
-		bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_PREREAD);
-		desc->buflength =3D buf->mbuf->m_len;
-		desc->vaddr =3D mtod(buf->mbuf, caddr_t);
-	}
-	sc->pending_rxs++;
-	sc->cur_rx =3D (sc->cur_rx + 1) % RX_RING_SIZE;
-
-	mem->pLogical =3D (void *)desc->vaddr;
-	mem->pPhysical =3D (void *)desc->paddr;
-	mem->uiLength =3D desc->buflength;
-	*id =3D (void *)desc;
-
-	return (1);
-=09
-fail:
-	return (0);
-}
-
-/* Free the rx buffer */
-static NV_API_CALL NV_SINT32
-nve_osfreerxbuf(PNV_VOID ctx, PMEMORY_BLOCK mem, PNV_VOID id)
-{
-	struct nve_softc *sc =3D ctx;
-	struct nve_rx_desc *desc;
-	struct nve_map_buffer *buf;
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osfreerxbuf\n");
-
-	desc =3D (struct nve_rx_desc *) id;
-	buf =3D &desc->buf;
-
-	if (buf->mbuf) {
-		bus_dmamap_unload(sc->mtag, buf->map);
-		bus_dmamap_destroy(sc->mtag, buf->map);
-		m_freem(buf->mbuf);
-	}
-	sc->pending_rxs--;
-	buf->mbuf =3D NULL;
-
-	return (1);
-}
-
-/* This gets called by the Nvidia API after our TX packet has been sent =
*/
-static NV_API_CALL NV_SINT32
-nve_ospackettx(PNV_VOID ctx, PNV_VOID id, NV_UINT32 success)
-{
-	struct nve_softc *sc =3D ctx;
-	struct nve_map_buffer *buf;
-	struct nve_tx_desc *desc =3D (struct nve_tx_desc *) id;
-	struct ifnet *ifp;
-
-	NVE_LOCK_ASSERT(sc);
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_ospackettx\n");
-
-	ifp =3D sc->ifp;
-	buf =3D &desc->buf;
-	sc->pending_txs--;
-
-	/* Unload and free mbuf cluster */
-	if (buf->mbuf =3D=3D NULL)
-		goto fail;
-
-	bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_POSTWRITE);
-	bus_dmamap_unload(sc->mtag, buf->map);
-	m_freem(buf->mbuf);
-	buf->mbuf =3D NULL;
-
-	/* Send more packets if we have them */
-	if (sc->pending_txs < TX_RING_SIZE)
-		sc->ifp->if_drv_flags &=3D ~IFF_DRV_OACTIVE;
-
-	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd) && sc->pending_txs < TX_RING_SIZE)
-		nve_ifstart_locked(ifp);
-
-fail:
-
-	return (1);
-}
-
-/* This gets called by the Nvidia API when a new packet has been receive=
d */
-/* XXX What is newbuf used for? XXX */
-static NV_API_CALL NV_SINT32
-nve_ospacketrx(PNV_VOID ctx, PNV_VOID data, NV_UINT32 success, NV_UINT8 =
*newbuf,
-    NV_UINT8 priority)
-{
-	struct nve_softc *sc =3D ctx;
-	struct ifnet *ifp;
-	struct nve_rx_desc *desc;
-	struct nve_map_buffer *buf;
-	ADAPTER_READ_DATA *readdata;
-	struct mbuf *m;
-
-	NVE_LOCK_ASSERT(sc);
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_ospacketrx\n");
-
-	ifp =3D sc->ifp;
-
-	readdata =3D (ADAPTER_READ_DATA *) data;
-	desc =3D readdata->pvID;
-	buf =3D &desc->buf;
-	bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_POSTREAD);
-
-	if (success) {
-		/* Sync DMA bounce buffer. */
-		bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_POSTREAD);
-
-		/* First mbuf in packet holds the ethernet and packet headers */
-		buf->mbuf->m_pkthdr.rcvif =3D ifp;
-		buf->mbuf->m_pkthdr.len =3D buf->mbuf->m_len =3D
-		    readdata->ulTotalLength;
-
-		bus_dmamap_unload(sc->mtag, buf->map);
-
-		/* Blat the mbuf pointer, kernel will free the mbuf cluster */
-		m =3D buf->mbuf;
-		buf->mbuf =3D NULL;
-
-		/* Give mbuf to OS. */
-		NVE_UNLOCK(sc);
-		(*ifp->if_input)(ifp, m);
-		NVE_LOCK(sc);
-		if (readdata->ulFilterMatch & ADREADFL_MULTICAST_MATCH)
-			ifp->if_imcasts++;
-
-	} else {
-		bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_POSTREAD);
-		bus_dmamap_unload(sc->mtag, buf->map);
-		m_freem(buf->mbuf);
-		buf->mbuf =3D NULL;
-	}
-
-	sc->cur_rx =3D desc - sc->rx_desc;
-	sc->pending_rxs--;
-
-	return (1);
-}
-
-/* This gets called by NVIDIA API when the PHY link state changes */
-static NV_API_CALL NV_SINT32
-nve_oslinkchg(PNV_VOID ctx, NV_SINT32 enabled)
-{
-
-	DEBUGOUT(NVE_DEBUG_API, "nve: nve_oslinkchg\n");
-
-	return (1);
-}
-
-/* Setup a watchdog timer */
-static NV_API_CALL NV_SINT32
-nve_osalloctimer(PNV_VOID ctx, PNV_VOID *timer)
-{
-	struct nve_softc *sc =3D (struct nve_softc *)ctx;
-
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_osalloctimer\n");
-
-	callout_init(&sc->ostimer, CALLOUT_MPSAFE);
-	*timer =3D &sc->ostimer;
-
-	return (1);
-}
-
-/* Free the timer */
-static NV_API_CALL NV_SINT32
-nve_osfreetimer(PNV_VOID ctx, PNV_VOID timer)
-{
-
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_osfreetimer\n");
-
-	callout_drain((struct callout *)timer);
-
-	return (1);
-}
-
-/* Setup timer parameters */
-static NV_API_CALL NV_SINT32
-nve_osinittimer(PNV_VOID ctx, PNV_VOID timer, PTIMER_FUNC func, PNV_VOID=
 parameters)
-{
-	struct nve_softc *sc =3D (struct nve_softc *)ctx;
-
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_osinittimer\n");
-
-	sc->ostimer_func =3D func;
-	sc->ostimer_params =3D parameters;
-
-	return (1);
-}
-
-/* Set the timer to go off */
-static NV_API_CALL NV_SINT32
-nve_ossettimer(PNV_VOID ctx, PNV_VOID timer, NV_UINT32 delay)
-{
-	struct nve_softc *sc =3D ctx;
-
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_ossettimer\n");
-
-	callout_reset((struct callout *)timer, delay, sc->ostimer_func,
-	    sc->ostimer_params);
-
-	return (1);
-}
-
-/* Cancel the timer */
-static NV_API_CALL NV_SINT32
-nve_oscanceltimer(PNV_VOID ctx, PNV_VOID timer)
-{
-
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_oscanceltimer\n");
-
-	callout_stop((struct callout *)timer);
-
-	return (1);
-}
-
-static NV_API_CALL NV_SINT32
-nve_ospreprocpkt(PNV_VOID ctx, PNV_VOID readdata, PNV_VOID *id,
-    NV_UINT8 *newbuffer, NV_UINT8 priority)
-{
-
-	/* Not implemented */
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_ospreprocpkt\n");
-
-	return (1);
-}
-
-static NV_API_CALL PNV_VOID
-nve_ospreprocpktnopq(PNV_VOID ctx, PNV_VOID readdata)
-{
-
-	/* Not implemented */
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_ospreprocpkt\n");
-
-	return (NULL);
-}
-
-static NV_API_CALL NV_SINT32
-nve_osindicatepkt(PNV_VOID ctx, PNV_VOID *id, NV_UINT32 pktno)
-{
-
-	/* Not implemented */
-	DEBUGOUT(NVE_DEBUG_BROKEN, "nve: nve_osindicatepkt\n");
-
-	return (1);
-}
-
-/* Allocate mutex context (already done in nve_attach) */
-static NV_API_CALL NV_SINT32
-nve_oslockalloc(PNV_VOID ctx, NV_SINT32 type, PNV_VOID *pLock)
-{
-	struct nve_softc *sc =3D (struct nve_softc *)ctx;
-
-	DEBUGOUT(NVE_DEBUG_LOCK, "nve: nve_oslockalloc\n");
-
-	*pLock =3D (void **)sc;
-
-	return (1);
-}
-
-/* Obtain a spin lock */
-static NV_API_CALL NV_SINT32
-nve_oslockacquire(PNV_VOID ctx, NV_SINT32 type, PNV_VOID lock)
-{
-
-	DEBUGOUT(NVE_DEBUG_LOCK, "nve: nve_oslockacquire\n");
-
-	return (1);
-}
-
-/* Release lock */
-static NV_API_CALL NV_SINT32
-nve_oslockrelease(PNV_VOID ctx, NV_SINT32 type, PNV_VOID lock)
-{
-
-	DEBUGOUT(NVE_DEBUG_LOCK, "nve: nve_oslockrelease\n");
-
-	return (1);
-}
-
-/* I have no idea what this is for */
-static NV_API_CALL PNV_VOID
-nve_osreturnbufvirt(PNV_VOID ctx, PNV_VOID readdata)
-{
-
-	/* Not implemented */
-	DEBUGOUT(NVE_DEBUG_LOCK, "nve: nve_osreturnbufvirt\n");
-	panic("nve: nve_osreturnbufvirtual not implemented\n");
-
-	return (NULL);
-}
-
-/* --- End on NVOSAPI interface --- */
Index: sys/dev/nve/if_nvereg.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/dev/nve/if_nvereg.h	(revision 261434)
+++ sys/dev/nve/if_nvereg.h	(working copy)
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2005 by David E. O'Brien <obrien@FreeBSD.org>.
- * Copyright (c) 2003 by Quinton Dolan <q@onthenet.com.au>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in th=
e
- *    documentation and/or other materials provided with the distributio=
n.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS `AS IS'' AND=

- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE=

- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU=
RPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIAB=
LE=20
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUE=
NTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOO=
DS=20
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)=
=20
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, S=
TRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY=
 WAY=20
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O=
F=20
- * SUCH DAMAGE.
- *
- * $Id: if_nvreg.h,v 1.6 2004/08/12 14:00:05 q Exp $
- * $FreeBSD$
- */
-=20
-#ifndef _IF_NVEREG_H_
-#define _IF_NVEREG_H_
-
-#ifndef PCI_VENDOR_NVIDIA
-#define	PCI_VENDOR_NVIDIA 0x10DE
-#endif
-
-#define	PCI_PRODUCT_NVIDIA_NFORCE_LAN		0x01C3
-#define	PCI_PRODUCT_NVIDIA_NFORCE2_LAN		0x0066
-#define	PCI_PRODUCT_NVIDIA_NFORCE3_LAN1		0x00D6
-#define	PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1	0x0086
-#define	PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2	0x008C
-#define	PCI_PRODUCT_NVIDIA_NFORCE3_250_LAN	0x00E6
-#define	PCI_PRODUCT_NVIDIA_NFORCE3_LAN4		0x00DF
-#define	PCI_PRODUCT_NVIDIA_NFORCE4_LAN1		0x0056
-#define	PCI_PRODUCT_NVIDIA_NFORCE4_LAN2		0x0057
-#define	PCI_PRODUCT_NVIDIA_MCP04_LAN1		0x0037
-#define	PCI_PRODUCT_NVIDIA_MCP04_LAN2		0x0038
-#define	PCI_PRODUCT_NVIDIA_NFORCE430_LAN1	0x0268
-#define	PCI_PRODUCT_NVIDIA_NFORCE430_LAN2	0x0269
-#define	PCI_PRODUCT_NVIDIA_MCP55_LAN1		0x0372
-#define	PCI_PRODUCT_NVIDIA_MCP55_LAN2		0x0373
-#define	PCI_PRODUCT_NVIDIA_MCP61_LAN1		0x03e5
-#define	PCI_PRODUCT_NVIDIA_MCP61_LAN2		0x03e6
-#define	PCI_PRODUCT_NVIDIA_MCP61_LAN3		0x03ee
-#define	PCI_PRODUCT_NVIDIA_MCP61_LAN4		0x03ef
-#define	PCI_PRODUCT_NVIDIA_MCP65_LAN1		0x0450
-#define	PCI_PRODUCT_NVIDIA_MCP65_LAN2		0x0451
-#define	PCI_PRODUCT_NVIDIA_MCP65_LAN3		0x0452
-#define	PCI_PRODUCT_NVIDIA_MCP65_LAN4		0x0453
-
-#define	PCI_PRODUCT_NVIDIA_NFORCE3_LAN2	PCI_PRODUCT_NVIDIA_NFORCE2_400_L=
AN1
-#define	PCI_PRODUCT_NVIDIA_NFORCE3_LAN3	PCI_PRODUCT_NVIDIA_NFORCE2_400_L=
AN2
-#define	PCI_PRODUCT_NVIDIA_NFORCE3_LAN5	PCI_PRODUCT_NVIDIA_NFORCE3_250_L=
AN
-#define	PCI_PRODUCT_NVIDIA_CK804_LAN1	PCI_PRODUCT_NVIDIA_NFORCE4_LAN1
-#define	PCI_PRODUCT_NVIDIA_CK804_LAN2	PCI_PRODUCT_NVIDIA_NFORCE4_LAN2
-#define	PCI_PRODUCT_NVIDIA_MCP51_LAN1	PCI_PRODUCT_NVIDIA_NFORCE430_LAN1
-#define	PCI_PRODUCT_NVIDIA_MCP51_LAN2	PCI_PRODUCT_NVIDIA_NFORCE430_LAN2
-
-#define	NV_RID		0x10
-
-#define	TX_RING_SIZE	64
-#define	RX_RING_SIZE	64
-#define	NV_MAX_FRAGS	32	// match adapter.h:ADAPTER_WRITE_DATA.sElement[]=

-
-#define	FCS_LEN 4
-
-#define	NVE_DEBUG		0x0000
-#define	NVE_DEBUG_INIT		0x0001
-#define	NVE_DEBUG_RUNNING	0x0002
-#define	NVE_DEBUG_DEINIT 	0x0004
-#define	NVE_DEBUG_IOCTL		0x0008
-#define	NVE_DEBUG_INTERRUPT	0x0010
-#define	NVE_DEBUG_API		0x0020
-#define	NVE_DEBUG_LOCK		0x0040
-#define	NVE_DEBUG_BROKEN	0x0080
-#define	NVE_DEBUG_MII		0x0100
-#define	NVE_DEBUG_ALL		0xFFFF
-
-#if NVE_DEBUG
-#define	DEBUGOUT(level, fmt, args...) if (NVE_DEBUG & level) \
-    printf(fmt, ## args)
-#else
-#define	DEBUGOUT(level, fmt, args...)
-#endif
-
-typedef unsigned long	ulong;
-
-struct nve_map_buffer {
-	struct mbuf *mbuf;	/* mbuf receiving packet */
-	bus_dmamap_t map;	/* DMA map */=09
-};
-
-struct nve_dma_info {
-	bus_dma_tag_t tag;
-	struct nve_map_buffer buf;
-	u_int16_t buflength;
-	caddr_t vaddr;		/* Virtual memory address */
-	bus_addr_t paddr;	/* DMA physical address */
-};
-
-struct nve_rx_desc {
-	struct nve_rx_desc *next;
-	struct nve_map_buffer buf;
-	u_int16_t buflength;
-	caddr_t vaddr;
-	bus_addr_t paddr;
-};
-
-struct nve_tx_desc {
-	/* Don't add anything above this structure */
-	TX_INFO_ADAP TxInfoAdap;
-	struct nve_tx_desc *next;
-	struct nve_map_buffer buf;
-	u_int16_t buflength;
-	u_int32_t numfrags;
-	bus_dma_segment_t frags[NV_MAX_FRAGS];
-};
-
-struct nve_softc {
-	struct ifnet *ifp;	/* interface info */
-	struct resource *res;
-	struct resource *irq;
-
-	ADAPTER_API *hwapi;
-	OS_API osapi;
-	=09
-	device_t miibus;
-	device_t dev;
-	struct callout stat_callout;
-	int tx_timer;
-
-	void *sc_ih;
-	bus_space_tag_t sc_st;
-	bus_space_handle_t sc_sh;
-	bus_dma_tag_t mtag;
-	bus_dma_tag_t rtag;
-	bus_dmamap_t rmap;
-	bus_dma_tag_t ttag;
-	bus_dmamap_t tmap;
-
-	struct nve_rx_desc *rx_desc;
-	struct nve_tx_desc *tx_desc;
-	bus_addr_t rx_addr;
-	bus_addr_t tx_addr;
-	u_int16_t rx_ring_full;
-	u_int16_t tx_ring_full;
-	u_int32_t cur_rx;
-	u_int32_t cur_tx;
-	u_int32_t pending_rxs;
-	u_int32_t pending_txs;
-
-	struct mtx mtx;
-
-	/* Stuff for dealing with the NVIDIA OS API */
-	struct callout ostimer;
-	PTIMER_FUNC ostimer_func;
-	void *ostimer_params;
-	int linkup;
-	ulong tx_errors;
-	NV_UINT32 hwmode;
-	NV_UINT32 max_frame_size;
-	NV_UINT32 phyaddr;
-	NV_UINT32 media;
-	CMNDATA_OS_ADAPTER adapterdata;
-	unsigned char original_mac_addr[6];
-};
-
-struct nve_type {
-	u_int16_t	vid_id;
-	u_int16_t	dev_id;
-	char		*name;
-};
-
-#define NVE_LOCK(_sc)		mtx_lock(&(_sc)->mtx)
-#define NVE_UNLOCK(_sc)		mtx_unlock(&(_sc)->mtx)
-#define NVE_LOCK_ASSERT(_sc)	mtx_assert(&(_sc)->mtx, MA_OWNED)
-
-extern int ADAPTER_ReadPhy (PVOID pContext, ULONG ulPhyAddr, ULONG ulReg=
, ULONG *pulVal);
-extern int ADAPTER_WritePhy (PVOID pContext, ULONG ulPhyAddr, ULONG ulRe=
g, ULONG ulVal);
-extern int ADAPTER_Init (PVOID pContext, USHORT usForcedSpeed, UCHAR ucF=
orceDpx, UCHAR ucForceMode, UINT *puiLinkState);
-
-#endif	/* _IF_NVEREG_H_ */
Index: sys/i386/conf/GENERIC
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/i386/conf/GENERIC	(revision 261434)
+++ sys/i386/conf/GENERIC	(working copy)
@@ -245,7 +245,6 @@
 device		msk		# Marvell/SysKonnect Yukon II Gigabit Ethernet
 device		nfe		# nVidia nForce MCP on-board Ethernet
 device		nge		# NatSemi DP83820 gigabit Ethernet
-#device		nve		# nVidia nForce MCP on-board Ethernet Networking
 device		pcn		# AMD Am79C97x PCI 10/100 (precedence over 'le')
 device		re		# RealTek 8139C+/8169/8169S/8110S
 device		rl		# RealTek 8129/8139
Index: sys/i386/conf/NOTES
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/i386/conf/NOTES	(revision 261434)
+++ sys/i386/conf/NOTES	(working copy)
@@ -581,7 +581,6 @@
 # mlxen: Mellanox ConnectX HCA Ethernet
 # mthca: Mellanox HCA InfiniBand
 # nfe:	nVidia nForce MCP on-board Ethernet Networking (BSD open source)
-# nve:	nVidia nForce MCP on-board Ethernet Networking
 # sbni: Granch SBNI12-xx ISA and PCI adapters
 # vmx:	VMware VMXNET3 Ethernet (BSD open source)
 # wl:   Lucent Wavelan (ISA card only).
@@ -628,7 +627,6 @@
 device  	mlxen		# Mellanox ConnectX HCA Ethernet
 device  	mthca		# Mellanox HCA InfiniBand
 device		nfe		# nVidia nForce MCP on-board Ethernet
-device		nve		# nVidia nForce MCP on-board Ethernet Networking
 device		sbni
 hint.sbni.0.at=3D"isa"
 hint.sbni.0.port=3D"0x210"
Index: sys/i386/conf/PAE
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/i386/conf/PAE	(revision 261434)
+++ sys/i386/conf/PAE	(working copy)
@@ -54,7 +54,6 @@
 nodevice	txp
 nodevice	vx
=20
-nodevice	nve
 nodevice	pcn
 nodevice	sf
 nodevice	sis
Index: sys/i386/conf/XEN
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/i386/conf/XEN	(revision 261434)
+++ sys/i386/conf/XEN	(working copy)
@@ -7,7 +7,7 @@
 ident		XEN
=20
 makeoptions	DEBUG=3D-g		# Build kernel with gdb(1) debug symbols
-makeoptions	WITHOUT_MODULES=3D"aha ahb amd ctl cxgb dpt drm drm2 hptnr h=
ptmv ida malo mps mwl nve rdma sound sym trm xfs"
+makeoptions	WITHOUT_MODULES=3D"aha ahb amd ctl cxgb dpt drm drm2 hptnr h=
ptmv ida malo mps mwl rdma sound sym trm xfs"
=20
 options 	SCHED_ULE		# ULE scheduler
 options 	PREEMPTION		# Enable kernel thread preemption
Index: sys/mips/conf/OCTEON1
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/mips/conf/OCTEON1	(revision 261434)
+++ sys/mips/conf/OCTEON1	(working copy)
@@ -218,7 +218,6 @@
 device		lge		# Level 1 LXT1001 gigabit Ethernet
 device		msk		# Marvell/SysKonnect Yukon II Gigabit Ethernet
 device		nge		# NatSemi DP83820 gigabit Ethernet
-#device		nve		# nVidia nForce MCP on-board Ethernet Networking
 device		pcn		# AMD Am79C97x PCI 10/100 (precedence over 'le')
 device		re		# RealTek 8139C+/8169/8169S/8110S
 device		rl		# RealTek 8129/8139
Index: sys/modules/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/modules/Makefile	(revision 261434)
+++ sys/modules/Makefile	(working copy)
@@ -251,7 +251,6 @@
 	nullfs \
 	${_ntb} \
 	${_nvd} \
-	${_nve} \
 	${_nvme} \
 	${_nvram} \
 	${_nxge} \
@@ -609,9 +608,6 @@
 _mly=3D		mly
 _nfe=3D		nfe
 _nvd=3D		nvd
-.if ${MK_SOURCELESS_HOST} !=3D "no"
-_nve=3D		nve
-.endif
 _nvme=3D		nvme
 _nvram=3D		nvram
 _nxge=3D		nxge
@@ -730,9 +726,6 @@
 _nfe=3D		nfe
 _ntb=3D		ntb
 _nvd=3D		nvd
-.if ${MK_SOURCELESS_HOST} !=3D "no"
-_nve=3D		nve
-.endif
 _nvme=3D		nvme
 _nvram=3D		nvram
 _nxge=3D		nxge
Index: sys/modules/nve/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/modules/nve/Makefile	(revision 261434)
+++ sys/modules/nve/Makefile	(working copy)
@@ -1,20 +0,0 @@
-# $FreeBSD$
-
-.PATH: ${.CURDIR}/../../dev/nve
-
-KMOD=3D	if_nve
-SRCS=3D	if_nve.c if_nvereg.h miidevs.h \
-	device_if.h bus_if.h pci_if.h miibus_if.h \
-	os+%DIKED-nve.h
-OBJS+=3D	nvenetlib.o
-WERROR=3D
-
-CLEANFILES+=3D	nvenetlib.o os+%DIKED-nve.h
-nvenetlib.o: ${.CURDIR}/../../contrib/dev/nve/${MACHINE}/${.TARGET}.bz2.=
uu
-	uudecode < ${.CURDIR}/../../contrib/dev/nve/${MACHINE}/${.TARGET}.bz2.u=
u
-	bzip2 -df ${.TARGET}.bz2
-
-os+%DIKED-nve.h: ${.CURDIR}/../../contrib/dev/nve/os.h
-	sed -e 's/^.*#include.*phy\.h.*$$//' ${.OODATE} > ${.TARGET}
-
-.include <bsd.kmod.mk>

--------------040205050306080801060107--

--fiVRRWfOLp81fpU4PaJraA20cOanR3h3B
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQJ8BAEBCgBmBQJS8JmaXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ5QzhCQjQ5MDgzNDUwNjkyOUM5Mjg2NDE3
OEM4MzY5ODQ3RTE2NDg3AAoJEHjINphH4WSHLxcP/0QWQJh0rgtfiolgYkvcYG+3
O2w/toyqO5SGEfVh8GP4aT9jTi6H7C/WpbkfsWSokNigoH8YAuB+Omuco4TYulf/
/gyySjmVF2NMSpakQkye1rQIv3hKidwHfRWuIYBPfRXHmwjwNZIwAxNBp/1P65Qw
U1ZbqyBkhv0kpKfqGturvCV+6GjDpfmAw6eaVN9CntNXInr+EtIwatTN3oMbpYVY
15HG4ZM4J/Vli+V/rYNMKsRWzETFpNZHHmb1m5SFLQh2qfr18GhJnW/gX+o0fP8L
UwNtntFsqEBLbuObajAwTcalUG4X1y+2QvD/HYy6ivimCd2qbi1L2YaBn7BB6A57
JBM9xsTtJRMgiFoxVNuyfgm9w5fVSgBnWzob7ovhH4m2mxvq+9ZIxy38HF2CD1B+
t2wTd5fR3wjka5fqhWVNa4Bb5b2XbklCDVK9Q2Q3fH8LZZM5AIEpdnBaptrT7K8q
aAaqWviDEL6BA3QCK0aHirumYnL8ZtbdL24Kf9M/bjojsH5KkcqDo8AU8dLCwrGN
ZxunOV4Sfw7BDLAyaHVryXz/n4x65XHjbJc7DKeYsv4xfCs4h1/RxnT/4Xv+mdZ4
ST9TEuRFMfRowkBaNrxNuDj7R+oEA/eb9Dgx3kugX0ned5fYGoJrOi1FwJewiqlk
1IZjS6BAgr6Us624pQC9
=HlBj
-----END PGP SIGNATURE-----

--fiVRRWfOLp81fpU4PaJraA20cOanR3h3B--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52F09999.9030807>