From 42be00154871585c35bb5f89136f691229a6b033 Mon Sep 17 00:00:00 2001 From: Hasso Tepper Date: Mon, 27 Aug 2007 21:51:41 +0000 Subject: [PATCH] Nuke nv(4), we have nfe(4) which replaces it. --- etc/Makefile | 3 +- share/man/man4/miibus.4 | 4 +- share/man/man4/polling.4 | 3 +- sys/boot/forth/loader-bootp.conf | 3 +- sys/boot/forth/loader.conf | 3 +- sys/config/LINT | 4 +- sys/contrib/dev/nv/LICENSE | 122 -- sys/contrib/dev/nv/adapter.h | 583 -------- sys/contrib/dev/nv/amd64/nvenetlib.o.uu | 1013 ------------- sys/contrib/dev/nv/basetype.h | 281 ---- sys/contrib/dev/nv/drvinfo.h | 190 --- sys/contrib/dev/nv/i386/nvenetlib.o.uu | 868 ----------- sys/contrib/dev/nv/nvenet_version.h | 29 - sys/contrib/dev/nv/os.h | 128 -- sys/contrib/dev/nv/phy.h | 164 --- sys/dev/netif/nv/Makefile | 22 - sys/dev/netif/nv/adapter.h.patch | 454 ------ sys/dev/netif/nv/basetype.h.patch | 150 -- sys/dev/netif/nv/drvinfo.h.patch | 161 --- sys/dev/netif/nv/if_nv.c | 1766 ----------------------- sys/dev/netif/nv/if_nvreg.h | 191 --- sys/dev/netif/nv/os.h.patch | 60 - sys/dev/netif/nv/phy.h.patch | 158 -- 23 files changed, 8 insertions(+), 6352 deletions(-) delete mode 100644 sys/contrib/dev/nv/LICENSE delete mode 100644 sys/contrib/dev/nv/adapter.h delete mode 100644 sys/contrib/dev/nv/amd64/nvenetlib.o.uu delete mode 100644 sys/contrib/dev/nv/basetype.h delete mode 100644 sys/contrib/dev/nv/drvinfo.h delete mode 100644 sys/contrib/dev/nv/i386/nvenetlib.o.uu delete mode 100644 sys/contrib/dev/nv/nvenet_version.h delete mode 100644 sys/contrib/dev/nv/os.h delete mode 100644 sys/contrib/dev/nv/phy.h delete mode 100644 sys/dev/netif/nv/Makefile delete mode 100644 sys/dev/netif/nv/adapter.h.patch delete mode 100644 sys/dev/netif/nv/basetype.h.patch delete mode 100644 sys/dev/netif/nv/drvinfo.h.patch delete mode 100644 sys/dev/netif/nv/if_nv.c delete mode 100644 sys/dev/netif/nv/if_nvreg.h delete mode 100644 sys/dev/netif/nv/os.h.patch delete mode 100644 sys/dev/netif/nv/phy.h.patch diff --git a/etc/Makefile b/etc/Makefile index 56b3b64dda..0c0323fcbf 100644 --- a/etc/Makefile +++ b/etc/Makefile @@ -1,6 +1,6 @@ # from: @(#)Makefile 5.11 (Berkeley) 5/21/91 # $FreeBSD: src/etc/Makefile,v 1.219.2.38 2003/03/04 09:49:00 ru Exp $ -# $DragonFly: src/etc/Makefile,v 1.185 2007/08/27 20:51:11 hasso Exp $ +# $DragonFly: src/etc/Makefile,v 1.186 2007/08/27 21:51:40 hasso Exp $ .if !defined(NO_SENDMAIL) SUBDIR= sendmail @@ -531,6 +531,7 @@ upgrade_etc: preupgrade csh -c "rm -f ${DESTDIR}/usr/share/man/{man,cat}4/fea.4.gz" csh -c "rm -f ${DESTDIR}/usr/share/man/{man,cat}4/fpa.4.gz" csh -c "rm -f ${DESTDIR}/usr/share/man/{man,cat}4/fla.4.gz" + csh -c "rm -f ${DESTDIR}/usr/share/man/{man,cat}4/nv.4.gz" ldconfig -R .if !defined(BINARY_UPGRADE) # binary upgrade just copies these nodes .if !defined(NOMAN) diff --git a/share/man/man4/miibus.4 b/share/man/man4/miibus.4 index ebf99d328a..358100b3fe 100644 --- a/share/man/man4/miibus.4 +++ b/share/man/man4/miibus.4 @@ -7,7 +7,7 @@ .\" I doubt you would ever notice due to large differences. .\" .\" $FreeBSD: src/share/man/man4/miibus.4,v 1.3.2.6 2004/03/01 09:22:11 brueffer Exp $ -.\" $DragonFly: src/share/man/man4/miibus.4,v 1.10 2007/05/26 22:54:28 swildner Exp $ +.\" $DragonFly: src/share/man/man4/miibus.4,v 1.11 2007/08/27 21:51:40 hasso Exp $ .\" .Dd February 15, 2003 .Dt MIIBUS 4 @@ -72,8 +72,6 @@ Level 1 LXT1001 NetCellerator Gigabit Ethernet NVIDIA nForce MCP 10/100/Gigabit Ethernet .It Xr nge 4 National Semiconductor DP83820/DP83821 Gigabit Ethernet -.It Xr nv 4 -NVIDIA nForce MCP Networking Adapter .It Xr pcn 4 AMD Am79C97x PCI 10/100 .It Xr re 4 diff --git a/share/man/man4/polling.4 b/share/man/man4/polling.4 index 752e8bea04..49210d93ac 100644 --- a/share/man/man4/polling.4 +++ b/share/man/man4/polling.4 @@ -1,6 +1,6 @@ .\" .\" $FreeBSD: src/share/man/man4/polling.4,v 1.1.2.4 2003/04/14 08:58:02 maxim Exp $ -.\" $DragonFly: src/share/man/man4/polling.4,v 1.9 2007/06/08 07:39:20 swildner Exp $ +.\" $DragonFly: src/share/man/man4/polling.4,v 1.10 2007/08/27 21:51:40 hasso Exp $ .\" .Dd October 13, 2005 .Dt POLLING 4 @@ -102,7 +102,6 @@ As of this writing, the .Xr fxp 4 , .Xr nfe 4 , .Xr nge 4 , -.Xr nv 4 , .Xr re 4 , .Xr rl 4 , .Xr sis 4 , diff --git a/sys/boot/forth/loader-bootp.conf b/sys/boot/forth/loader-bootp.conf index acf03b5be9..7677814556 100644 --- a/sys/boot/forth/loader-bootp.conf +++ b/sys/boot/forth/loader-bootp.conf @@ -7,7 +7,7 @@ # All arguments must be in double quotes. # # $FreeBSD: src/sys/boot/forth/loader.conf,v 1.72 2003/07/01 01:03:32 brueffer Exp $ -# $DragonFly: src/sys/boot/forth/loader-bootp.conf,v 1.13 2007/05/26 22:54:29 swildner Exp $ +# $DragonFly: src/sys/boot/forth/loader-bootp.conf,v 1.14 2007/08/27 21:51:40 hasso Exp $ ############################################################## ### Basic configuration options ############################ @@ -204,7 +204,6 @@ if_my_load="NO" # Myson PCI fast ethernet #if_ndis_load="NO" # NDIS miniport driver wrapper if_nfe_load="NO" # NVIDIA nForce MCP 10/100/Gigabit ethernet if_nge_load="NO" # National Semiconductor PCI gigabit ethernet -if_nv_load="NO" # NVidia MB ethernet (Typ AMDXP/AMD64 boxes) if_pcn_load="NO" # AMD PCnet PCI if_ral_load="NO" # Ralink Technology 802.11 wireless NICs if_ray_load="NO" # Raytheon Raylink/Webgear Aviator PCCard diff --git a/sys/boot/forth/loader.conf b/sys/boot/forth/loader.conf index 097aeae21b..656aa4a8d3 100644 --- a/sys/boot/forth/loader.conf +++ b/sys/boot/forth/loader.conf @@ -7,7 +7,7 @@ # All arguments must be in double quotes. # # $FreeBSD: src/sys/boot/forth/loader.conf,v 1.72 2003/07/01 01:03:32 brueffer Exp $ -# $DragonFly: src/sys/boot/forth/loader.conf,v 1.19 2007/05/26 22:54:29 swildner Exp $ +# $DragonFly: src/sys/boot/forth/loader.conf,v 1.20 2007/08/27 21:51:40 hasso Exp $ ############################################################## ### Basic configuration options ############################ @@ -200,7 +200,6 @@ if_my_load="NO" # Myson PCI fast ethernet #if_ndis_load="NO" # NDIS miniport driver wrapper if_nfe_load="NO" # NVIDIA nForce MCP 10/100/Gigabit ethernet if_nge_load="NO" # National Semiconductor PCI gigabit ethernet -if_nv_load="NO" # NVidia MB ethernet (Typ AMDXP/AMD64 boxes) if_pcn_load="NO" # AMD PCnet PCI if_ral_load="NO" # Ralink Technology 802.11 wireless NICs if_ray_load="NO" # Raytheon Raylink/Webgear Aviator PCCard diff --git a/sys/config/LINT b/sys/config/LINT index 0c66a055a1..e80eaafdc2 100644 --- a/sys/config/LINT +++ b/sys/config/LINT @@ -3,7 +3,7 @@ # as much of the source tree as it can. # # $FreeBSD: src/sys/i386/conf/LINT,v 1.749.2.144 2003/06/04 17:56:59 sam Exp $ -# $DragonFly: src/sys/config/LINT,v 1.128 2007/08/27 20:40:52 hasso Exp $ +# $DragonFly: src/sys/config/LINT,v 1.129 2007/08/27 21:51:40 hasso Exp $ # # NB: You probably don't want to try running a kernel built from this # file. Instead, you should start from GENERIC, and add options from @@ -712,7 +712,7 @@ device hfa #FORE PCA-200E ATM PCI # Only the following devices support this mode of operation at the time of # this writing: # -# bce, bge, dc, em, fwe, fxp, nfe, nge, nv, re, rl, sis, stge, vge, vr, wi, xl +# bce, bge, dc, em, fwe, fxp, nfe, nge, re, rl, sis, stge, vge, vr, wi, xl options DEVICE_POLLING diff --git a/sys/contrib/dev/nv/LICENSE b/sys/contrib/dev/nv/LICENSE deleted file mode 100644 index 05153ab0a3..0000000000 --- a/sys/contrib/dev/nv/LICENSE +++ /dev/null @@ -1,122 +0,0 @@ - License For Customer Use of NVIDIA Software - - -IMPORTANT NOTICE -- READ CAREFULLY: This License For Customer Use of -NVIDIA Software ("LICENSE") is the agreement which governs use of the -software of NVIDIA Corporation and its subsidiaries ("NVIDIA") -downloadable herefrom, including computer software and associated -printed materials ("SOFTWARE"). 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 the SOFTWARE. - -RECITALS - -Use of NVIDIA's products requires three elements: the SOFTWARE, the -hardware on a graphics controller board, 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 sold, and instead is only licensed for use, strictly -in accordance with this document. The hardware is protected by various -patents, and is sold, but this LICENSE does not cover that sale, since -it may not necessarily be sold as a package with the SOFTWARE. This -LICENSE sets forth the terms and conditions of the SOFTWARE LICENSE only. - -1. DEFINITIONS - -1.1 Customer. Customer means the entity or individual that downloads -the SOFTWARE. - -2. GRANT OF LICENSE - -2.1 Rights and Limitations of Grant. NVIDIA hereby grants Customer -the following 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 Section 2.1.1, SOFTWARE designed exclusively for use on the Linux or -FreeBSD operating systems, or other operating systems derived from the -source code to these operating systems, may be copied and redistributed, -provided that the binary files thereof are not modified in any way -(except for unzipping of compressed files). - -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. - -No Separation of Components. The SOFTWARE is licensed as a single product. -Its component parts may not be separated for use on more than one computer, -nor otherwise used separately from the other parts. - -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 -with any of the terms and conditions hereof. In such event, Customer -must destroy all copies of the SOFTWARE and all of its component parts. - -Defensive Suspension. If Customer commences or participates in any legal -proceeding against NVIDIA, then NVIDIA may, in its sole discretion, -suspend or terminate all license grants and any other rights provided -under this LICENSE during the pendency of such legal proceedings. - -4. COPYRIGHT - -All title and copyrights in and to the SOFTWARE (including but not -limited to all images, photographs, animations, video, audio, music, -text, and other information incorporated into the SOFTWARE), the -accompanying printed materials, and any copies of the SOFTWARE, are -owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright -laws and international treaty provisions. Accordingly, Customer is -required to treat the SOFTWARE like any other copyrighted material, -except as otherwise allowed pursuant to this LICENSE and that it may -make one copy of the SOFTWARE solely for backup or archive purposes. - -5. APPLICABLE LAW - -This LICENSE shall be deemed to have been made in, and shall be -construed pursuant to, the laws of the State of California. The -United Nations Convention on Contracts for the International Sale -of Goods is specifically disclaimed. - -6. DISCLAIMER OF WARRANTIES AND LIMITATION ON LIABILITY - -6.1 No Warranties. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, -THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM -ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED -TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -6.2 No Liability for Consequential Damages. TO THE MAXIMUM EXTENT -PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS -PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY -OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE -SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -7. MISCELLANEOUS - -If any provision of this LICENSE is inconsistent with, or cannot be -fully enforced under, the law, such provision will be construed as -limited to the extent necessary to be consistent with and fully -enforceable under the law. This LICENSE is the final, complete and -exclusive agreement between the parties relating to the subject matter -hereof, and supersedes all prior or contemporaneous understandings and -agreements relating to such subject matter, whether oral or written. -This LICENSE may only be modified in writing signed by an authorized -officer of NVIDIA. 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 United States Bureau of Export Administration -or any export laws, restrictions or regulations. - -EULA (07-22-04) diff --git a/sys/contrib/dev/nv/adapter.h b/sys/contrib/dev/nv/adapter.h deleted file mode 100644 index 40520e9df5..0000000000 --- a/sys/contrib/dev/nv/adapter.h +++ /dev/null @@ -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. *| -|* *| -\***************************************************************************/ - -/* - 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 differenet - 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 remove MODS compilation error - // Elements[0] and Elements[] have the same effect. - // sizeof(NVSCATTER_GATHER_LIST) 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 -// function call from OS layer to Adapter layer -// - -typedef struct _CMNDATA_OS_ADAPTER -{ -#ifndef linux - ASF_SEC0_BASE sRegSec0Base; -#endif - NV_UINT32 bFPGA; - 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_UINT8 ucAsyncMode, NV_UINT32 *puiLinkState); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_DEINIT) (PNV_VOID pvContext, 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_VOID 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_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_ENABLE_INTERRUPTS) (PNV_VOID 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 pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_SPEED) (PNV_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_MODE) (PNV_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_STATE) (PNV_VOID pvContext, 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) (PNV_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_RECEIVE_QUEUE_SIZE) (PNV_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_STATISTICS) (PNV_VOID pvContext, PADAPTER_STATS pADStats); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_POWER_CAPS) (PNV_VOID pvContext, 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) (PNV_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_PACKET_FILTER) (PNV_VOID pvContext, PPACKET_FILTER pPacketFilter); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_WAKE_UP_PATTERN) (PNV_VOID pvContext, NV_SINT32 iPattern, PWAKE_UP_PATTERN pPattern); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_ENABLE_WAKE_UP_PATTERN) (PNV_VOID pvContext, NV_SINT32 iPattern, NV_SINT32 iEnable); -typedef NV_API_CALL NV_SINT32 (* PFN_SET_NODE_ADDRESS) (PNV_VOID pvContext, NV_UINT8 *pNodeAddress); -typedef NV_API_CALL NV_SINT32 (* PFN_GET_NODE_ADDRESS) (PNV_VOID pvContext, NV_UINT8 *pNodeAddress); -typedef NV_API_CALL NV_SINT32 (* PFN_GET_ADAPTER_INFO) (PNV_VOID pvContext, PNV_VOID pVoidPtr, NV_SINT32 iType, NV_SINT32 *piLength); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_READ_PHY) (PNV_VOID pvContext, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 *pulValue); -typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE_PHY) (PNV_VOID pvContext, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 ulValue); -typedef NV_API_CALL NV_VOID(* PFN_ADAPTER_SET_SPPED_DUPLEX) (PNV_VOID pvContext); -typedef NV_API_CALL NV_SINT32 (*PFN_REGISTER_OFFLOAD) (PNV_VOID pvContext, PADAPTER_OFFLOAD pOffload); -typedef NV_API_CALL NV_SINT32 (*PFN_DEREGISTER_OFFLOAD) (PNV_VOID pvContext, 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 pvContext, ASF_SEC0_BASE **ppsSec0Base); -typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETSOURCEIPADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucSrcIPAddress); -typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETDESTIPADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucDestIPAddress); -typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETDESTIPADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucDestIPAddress); -typedef NV_SINT32 (*PFN_ADAPTER_ASF_WRITEEEPROMANDSETUPREGISTERS) (PNV_VOID pvContext, NV_BOOLEAN bCompare, PNV_VOID pucValue, PNV_VOID pszSec0BaseMember, - NV_UINT16 usCount, NV_UINT32 ulAddressOffset); - -typedef NV_SINT32 (*PFN_ADAPTER_ASF_ISASFREADY) (PNV_VOID pvContext, ASF_ASFREADY *psASFReady); - -typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETDESTMACADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucDestMACAddress); -typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETSOURCEMACADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucSrcMACAddress); - -typedef NV_SINT32 (*PFN_ADAPTER_ASF_CHECK_FOR_EEPROM_PRESENCE) (PNV_VOID pvContext); -#endif - -typedef NV_API_CALL NV_VOID (*PFN_ADAPTER_SET_COMMONDATA) (PNV_VOID pvContext, CMNDATA_OS_ADAPTER *psOSAdpater); -typedef NV_API_CALL NV_VOID (*PFN_ADAPTER_SET_CHECKSUMOFFLOAD) (PNV_VOID pvContext, NV_UINT32 bSet); - - - -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 pfnASFWriteEEPROMAndSetupRegisters; - PFN_ADAPTER_ASF_SETDESTMACADDRESS pfnASFSetDestMACAddress; - PFN_ADAPTER_ASF_GETSOURCEMACADDRESS pfnASFGetSourceMACAddress; - PFN_ADAPTER_ASF_ISASFREADY pfnASFIsASFReady; - PFN_ADAPTER_ASF_CHECK_FOR_EEPROM_PRESENCE pfnASFCheckForEepromPresence; -#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 layer - 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 function 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 accumulate in UpdateReceiveDescRingData before - //indicating packets to OS. - NV_UINT32 SentPacketStatusSuccess; //Status returned from adapter layer 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 descriptor based interrupt - NV_UINT32 TxForcedInterrupt; //NOT USED: For experiment with descriptor 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. -NV_API_CALL NV_SINT32 ADAPTER_Open (PADAPTER_OPEN_PARAMS pAdapterOpenParams, 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 error -////////////////////////////////////////////////////////////////// - -// 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 -#define MAX_TX_DESCS_VER2 (256 * 4) - -typedef struct _TX_INFO_ADAP -{ - NV_UINT32 NoOfDesc; - PNV_VOID pvVar2; -}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 -#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 version -#define DESCR_VER_2 2 // The decsriptor structure for CK8G - -// Get device and vendor IDs from 32 bit DeviceVendorID -#define GET_DEVICEID(x) (((x) >> 16) & 0xFFFF) -#define GET_VENDORID(x) ((x) & 0xFFFF) - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _ADAPTER_H_ diff --git a/sys/contrib/dev/nv/amd64/nvenetlib.o.uu b/sys/contrib/dev/nv/amd64/nvenetlib.o.uu deleted file mode 100644 index 1a7a43edd0..0000000000 --- a/sys/contrib/dev/nv/amd64/nvenetlib.o.uu +++ /dev/null @@ -1,1013 +0,0 @@ -begin 644 nvenetlib.o -M?T5,1@(!`0````````````$`/@`!`````````````````````````*B````` -M`````````$```````$``#@`+`$%628G6055)B?5!5%5(B?U32(/L($R+)TC' -M!@````#'1"00F!@``$C'1"0(`````$B)YDF+/"1!_U0D"+H!````2(7`#X3F -M"```2(L<)$B)6PA(BT0D"$B)0Q!(BT0D$$B)0QB+14R)@VP8``"+152)@W08 -M``"+112%P(F#-!@``'4*QX,T&```!0```(M%&(7`B8,X&```=1Z+BVP8``"Z -M0````+B`````@_D!#T70B9,X&```ZP:+BVP8``"+11R%P(F#/!@``'46N@`! -M``"#^0&X``0```]%T(F3/!@``(M%)(F#1!@``(M%*(F#2!@``(M%((7`B8-` -M&```=0K'@T`8```'````BT40BU4LB8,P&```B9-,&```BT4PB8-0&```BT4T -MA<")@U08``!T#H72=0K'@TP8```'````BT4XA<")@U@8``!T%(N[4!@``(7_ -M=0K'@U`8```'````BT4\A<")@UP8``!U%L>#7!@``,,!``#'@V`8```!```` -MZR8]A@```'05/8P```!T#CWF````=`<]WP```'4*QX-@&````@```(M%1(7` -MB8-D&```=0K'@V08``#T`0``BT5(_\F)@V@8``"+15")@W`8``"+17!,B:.@ -M`0``B8.0&```2(M%"$C'0U``````2,=#*`````!(QT,P`````$C'0S@````` -M2,=#0`````!(QT-(`````$B)`W4HB[,P&```2,?"`````$C'P`````!(QT-8 -M`````$C'0V``````A?;K)HN+,!@``$C'0U@`````2,=#8`````!(Q\(````` -M2,?``````(7)2`]%T$C'0V@`````2,=#>`````!(C4,@2(E3<#'V2(V30`8` -M`$C'@X``````````2,>#B`````````!(QX.0`````````$C'@Y@````````` -M2,>#H`````````!(QX.H`````````$C'@[``````````2,>#N`````````!( -MQX/``````````$C'@\@`````````2,>#T`````````!(QX/8`````````$C' -M@^``````````2,>#Z`````````!(QX/P`````````$C'@_@`````````2,># -M``$```````!(QX,(`0```````$C'@Q`!````````2,>#&`$```````!(QX,@ -M`0```````$C'@R@!````````2,>#,`$```````!(QX,X`0```````$C'@T`! -M````````2,>#2`$```````!(QX-0`0```````$C'@U@!````````2,>#8`$` -M``````!(QX-H`0```````$B)6R!)B44`28L\)$'_E"2@````N@(```!(A<`/ -MA#,%``"+@W`8``#'@Z@6````````QX,,!@``9````(F#``8``(/`,(&[7!@` -M`,,!``")@Z`6``!U)HN+;!@``,>#T`,```````#'@Q`&``!?````QX,4!@`` -M9P```.LPBXML&```N@`!``"X````0,>#$`8``$#"`8```(```!IP-P%``")P$@/K\)(P>@@P>@- -MB8,@!@``BX,4!@``ZRYIP-P%``"ZB8B(B,>#"`8```````")P$@/K\)(P>@@ -MP>@-B8,@!@``BX,,!@``B8,8!@``_\FZ``0``+@``0``#T7"2,>#4`,```$` -M``!FQX-<`P```@")@SP#``!FQX->`P``0`!(C;-(`P``B`#B8-8`P`` -M28L\)$'_5"08N@(```!(A<`/A+D#``"+DSP#``!(BXM(`P``2,>#F`,````` -M``!(C;.0`P``2(F+>`,``(U"_TC!X@-(C03!B9.@`P``2(F#@`,``$F+/"1! -M_U0D"+H"````2(7`#X1D`P``BY,\`P``2(N+D`,``$C'@X`6```!````2(VS -M>!8``(U"_TB)BZ@#``!(B8NP`P``C1250````$B-!,&)DX@6``!(B8.X`P`` -M28L\)$'_5"0(N@(```!(A<`/A`4#``!(BY-X%@``,>V)Z/_%@_T/QP2"```` -M`';PBX,\`P``,>TYQ7,BC02M`````/_%B8$2`'>2(V6P`$``$C'AL`! -M```!````2('&N`$``(E""&;'0@P"`&;'0@Y``$F+/"1!_U0D&+H"````2(7` -M#X1B`@``_\6#_0=VH8N#H!8``$C'@Q@%```!````2(VS$`4``(F#(`4``$F+ -M/"1!_U0D"+H"````2(7`#X0F`@``@[ML&````;J`````N$````!(QX.P!``` -M`0```&;'@[P$```"`&;'@[X$``!``$B-LZ@$```/1<*)@Z`$``")P$C!X`.) -M@[@$``!)BSPD0?]4)!BZ`@```$B%P`^$Q0$``(N+H`0``$B+DZ@$```Q[8U! -M_SG-2(F3V`0``$B-!,)(B8/@!```G_Q8D$RHN+ -MH`0``#G-Y(B=__ -MQ4B--/#H`````#NKH`0``'+ABX-X&```QX,X!@````@``$B)FW`!``!(QX-X -M`0```````$C'@X`!````````QX.(`0``,@```,>#C`$``#(```#'@Y`!``"X -M"P``QX.4`0``8`D``(7`QX.8`0``]`$``'0&B8.(`0``BX-\&```A%"`4```````"02(.]J`0```!T.TB-M:@$ -M``!)BWT`0?]5($C'A:@$````````2,>%V`0```````!(QX7@!````````$C' -MA>@$````````2(.]$`4```!T(4B-M1`%``!)BWT`0?]5$$C'A1`%```````` -M9F9FD&9FD$B#O9`#````=%9(C;60`P``28M]`$'_51!(QX60`P```````$C' -MA:@#````````2,>%L`,```````!(QX6X`P```````$C'A<`#````````2,>% -MR`,```````!F9I!FD$B#O4@#````=#M(C;5(`P``28M]`$'_52!(QX5(`P`` -M`````$C'A7@#````````2,>%@`,```````!(QX6(`P```````$B#O7@6```` -M="%(C;5X%@``28M]`$'_51!(QX5X%@```````&9F9I!F9I!%,>1$B>!(C01` -M2,'@!$B-7`4`2(.[N`$```!(C;.X`0``=!-)BWT`0?]5($C'@[@!```````` -M0?_$08/\!W;#2(N%H`$``,>%.`,```````!(C74(2(LX_U`02(/$"#'`6UU! -M7$%=P\-F9I`QP,.02(/L"+X`*`"`O_@,``#H`````+_\#```Z``````]WA#6 -M`'4QOFC``("_^`P``.@`````OFC``("_^`P``.@`````OMX8U@"__`P``$B# -MQ`CI`````$B#Q`C#9I!(@^P8O@`H`(!(B6PD$$B)7"0(2(G]O_@,``#H```` -M`+_\#```Z`````"_^`P``+YHP`"`BUT!;@!````#[;P2(G?Z`````"+BW08``"%R70B08N$),`````E____[XG" -M@"9(BX,(!0``2,<$R`````"+@Q@%``!(BY/8!``` -MB03*2(NSV`0```^W@P`&``#_Q?_(9HE$S@1(BX/8!```9L=$R`8`@#NKH`0` -M`'*CZW@Q[3NKH`0``'-ND$B+L]@$``")Z42+7,X$187;>"9(BX,(!0``2,<$ -MR`````"+@Q@%``!(BY/8!```B03*2(NSV`0```^WDP`&``"+1,X$_\4E`,#_ -M___*#[?2"=")1,X$2(N#V`0``(%,R`0```"`.ZN@!```$)!`!````````0<>$)`P!````````0<>$)$0!```4````BX-< -M&```/88```!T9#V&````=Q2#^#=R,H/X.'93@^A6@_@!=R7K23W?````=$(] -MWP```'<'/8P```#K##WF````="T]PP$``'0F08N$)*@```")1"0,08N$)*P` -M``")1"0(08ML)#1`@,W_08EL)#2^!````$F+?0!!_U4PBX-<&```/88```!T -M<3V&````=Q2#^#=R,H/X.'9@@^A6@_@!=R7K5CW?````=$\]WP```'<'/8P` -M``#K##WF````=#H]PP$``'0S08ML)#2^!````$"`Y0!!B6PD-$F+?0!!_U4P -MBT0D#$&)A"2H````BT0D"$&)A"2L````0<>$)$0!```$````0<>$)+`````` -M````0<>$)+0`````````0<>$)+@```#_____0<>$)+P```#__P``0<=$)`@` -M````BX-0`P``08F$)``!``"+@[`$``!!B80D!`$``(N#H`0``(N3/`,``/_( -M_\K!X!"!XO\#```E``#_`PG"08F4)`@!``!!QX0D$`$```H``0"#NVP8```! -M=0Y!QX0D/`$``!``(`#K&XN#&!@``(7`=`5!B40D$$''A"0\`0``((#@`4'' -MA"1$`0```````(N#I!8``(/(`D&)A"1$`0``@[ML&````74S08N$)#`!```Q -M[87`>%N^!0```$F+?0#_Q4'_53!!BX0D,`$``(7`>$"!_0\G``!VW>LV08N$ -M)#`!```Q[87`>"B^!0```$F+?0#_Q4'_53!!BX0D,`$``(7`>`V!_0\G``!V -MW69FD&:00<>$)(0!````````0<>$)(`!```?````0<<$)/\!``!!BX0DC`$` -M`"7_````:<``D`$`B4````0=!&]`@```,>#'!@``.@#``#K#[T!````QX,<&```9````$B+@Z@! -M```/MDPD$4$/MMI,B?9(BSC_ -M4`A(A8#``!!QX0D@````#X/.P!!BX0DB````$&)A"2(````0<>$)(P````H`'\` -M2(.[D!8```"+@P`&``"-4`1T#8/`"$&)A"20````ZPA!B90DD````$&+A"28 -M````1(GBP>H(08F$))@```!$B>#!Z!`QPHG8P>@(,<*)V,'H$##0=06X"``` -M`(.[;!@```%U%`^VP(#,?T&)A"2<````ZQ!F9F:00<>$))P````(?P``0<>$ -M)*`````/!Q8`0<>$)*0````6````1(N3,!@``$6%TG42BX,4!@``QX,(!@`` -M`@```.L0BX,,!@``QX,(!@```````(F#&`8``(N#(`8``,>#)`8```````!( -MB=]!B40D#$''1"0(`P```(N#2`8``,'@&"4````?#0``!`!!B80DB`$``.@` -M````2(7`=15!BX0DB`$```T``!``08F$)(@!``!!QX0DC`$```4!``!!QX0D -MA`$```@```!!QX0D``(``'!W``!!BX0D;`(``&:%P'D308N$)&P"``"`S(!! -MB80D;`(``$''A"2``0``'P```$2+BY`8``!%ALE/8"6F`!U"X'A_P#\_X#- -M=.L3/0#*FCMU#('A_P#\_X/*`H#-?XG0@.;^@,P!@[LP!@```@]$PD&)A"3` -M````08F,))P```#K(H!\)!``=!N#HR@&``#[QX,L!@``_____\>#,`8``/__ -M__^#NV`8```"08N$)$0!``")@Z@6```/A?P```!!BX0DE`(``(E$)!1!BX0D -MF`(``(E$)!1!BX0DD`(``(E$)!1!BX0DH`(``(E$)!1!BX0DG`(``(E$)!1! -MBX0DA`(``(E$)!1!BX0DB`(``(E$)!1!BX0DC`(``(E$)!1!BX0D@`(``(E$ -M)!1!BX0DO`(``(E$)!1!BX0DI`(``(E$)!1!BX0DN`(``(E$)!1!BX0DK`(` -M`(E$)!1!BX0DL`(``(E$)!1!BX0DQ`(``(E$)!1!BX0DJ`(``(E$)!1!BX0D -MM`(``(E$)!1!BX0DP`(``(E$)!1!BX0DR`(``(E$)!1!BX0DS`(``(E$)!1! -MBX0DT`(``(E$)!0QTDB#Q!A(B=!;74%<05U!7D%?PT%6055!5%53BX$)(@```#_____2(NSP`,``$@[L\@#```/A)P```!F9F:0 -M9F:02(L61(L"2(M*"$J-1,4`387`2(UX^$B)Q4B)>@A^4I"+`8D'@[ML&``` -M`746#[=!!&:)1P0/MT$&9@T`@&:)1P;K"XM!!`T```"`B4<$2(G(2(/I"$@[ -M@W@#``!U!TB+BX`#``!)_\A(@^\(387`?Z](B?!(@\8(2#N#N`,``'4'2(NS -ML`,``$@[L\@#```/A6O___])BP9(BY-(`P``O@0```!(B8-(`P``28M&"$F) -M%DB+DU`#``!(B8-0`P``28E6"$B)JX@#``"+@SP#``!(BY-(`P``_\A(C03" -M2(F3>`,``$B)@X`#``!(BX/8!```2(F#Z`0``$''A"00`0```````$''A"0, -M`0```````(N#I!8``(/(`D&)A"1$`0``28M]`$'_53!!QX0D1`$```0```!! -MQT0D"`````"+@U`#``!!B80D``$``(N#L`0``$&)A"0$`0``BX.@!```BY,\ -M`P``_\C_RL'@$('B_P,``"4``/\#"<)!B90D"`$``$''A"1$`0```````(N# -MI!8``(/(`D&)A"1$`0``@[ML&````74S08N$)#`!```Q[87`>%:^!0```$F+ -M?0#_Q4'_53!!BX0D,`$``(7`>#N!_0\G``!VW>LQ08N$)#`!```Q[87`>".^ -M!0```$F+?0#_Q4'_53!!BX0D,`$``(7`>`B!_0\G``!VW4B)W^@`````BX.D -M%@``@\@!08F$)$0!```QP%M=05Q!74%>PV:02(7_4TB)^W010`^V]N@````` -M2(G?Z`````!;,<##9I!54TB)^TB#[`A(A?]T8TB+E\`#``!(BZ^@`0``2#N7 -MR`,``'1,9F9FD&9FD$@[D[@#``!(C4((2(LR2(F#P`,``'4.2(N#L`,``$B) -M@\`#``"+DT@8``!(BWT`_U5(2(N#P`,``$@[@\@#``!(B<)UNTB#Q`@QP%M= -MPV:04TB+%TB)^XN";`(``&:%P'D/BX)L`@``@,R`B8)L`@``BX)L`@``2(G? -M@,P!B8)L`@``BX*(`0``#0``$`")@H@!``#H`````$B)W[X#````Z``````Q -MP%O#9I!!5D#VQ@%!B?9!54F)_4%455-,BZ>@`0``2(LO=16+AT@&``#!X!@E -M````'PT``!0`ZPN+A8@!```E___O_XF%B`$``$R)[S';Z`````!!BX6D%@`` -M@\@$B85$`0``9F:09F:0BX5$`0``J`AU&/_#OC(```!)BSPD0?]4)#"!^P\G -M``!VWD2)\$R)[P^V\.@`````O@0```!!BX6D%@``@\@4B85$`0``28L\)$'_ -M5"0P08N%I!8``(/(!(F%1`$``#'`6UU!7$%=05[#9F:02(._D!8```!T"HN' -M0`,``(/H",.+AT`#``"#Z`7#9I!!5DB#OY`6````28GS055,BS=!5%531`^V -M;A`/A14!``"+ET`#``"+#K@$````.`,``$B+EX@#``!(*`$3HU,&""008L13(G` -M08D000^W40AF18E0!D&Z`(#____*9D&)4`1)@^@(2#N'>`,``'4'3(N'@`,` -M`$F#Z1!(_\YYP^E+`@``1(N'D!8``#';,>U%AP0[NP(```!W$XN/F!8``(7)=`G_P[T!````9I!!BP-,BZ>(`P``2(NW -M>`,``(N//`,```'83(GB*8=``P``08L#2"GR_\E(P?H#`=@!T(U0_R'(2(T$ -MQB'*2(F'B`,``$R-!-9FQT`&``!!BP--BTL(`=A-B4$(08D!2(N'R`,``$R) -M"$B+E\@#``!(.Y>X`P``2(U""$B)A\@#``!U#DB+A[`#``!(B8?(`P``08LS -M1`^WE]`#``"Y.P```$'!Y07_SDB)\&9!@`%@``3(G`08D0B`,``'4' -M3(N'@`,``$&Z`(#__S'MA=L/A,$```!(A?8/A;@```!!BQ%,B<"#P@Q!B1!! -M#[=1"&9%B5`&0;H`@/__@^H-9D&)4`1)@^@(2#N'>`,``'4'3(N'@`,``$0K -MIW@#``"+AYP6``#!Z`A!P>P#@^`/0HT4I0````!!"<6)T4@#CW@6``!(@\%` -M1(AI`@^VAYP6``"(00,#EX`6``!,B`,``'4'3(N'@`,``$&+`69%B5`&9D''0`0+`$&)`.M'08L13(G`08D0 -M00^W40AF18E0!D&Z`(#____*9D&)4`1)@^@(2#N'>`,``'4-3(N'@`,``&9F -MD&9FD$F#Z1!(_\X/B;/^__^+AZ06``"#R`%!B89$`0``,`,``$B+EX@#``!(*X`P`` -M2(U""$B)A\@#``!U#DB+A[`#``!(B8?(`P``08LS1(N7T`,``/_.08'*```` -MH$B)\$C!X`1.C4P8($&+`3')2(7V08D`=3Y)BT,8BQ#VP@%T$8M(!,'A#H') -M````$.LE9F:0]L("=!V)T(G1P>H#P>@$P>$6"="!X0````B#X`'!X!H)P4$/ -MMU$(B<@E`,#____*#[?2"=!,B<)$"=!!N@```(!!B4`$28/H"$@[EW@#``!U -M#DR+AX`#``!F9F:09F:028/I$$C_S@^):O___^F"`@``1(NGD!8``#';,>U% -MA>1U$42+EY06``!%A=)T)$6$[70?08-[!#N[`@```'<31(N/F!8``$6%R70' -M_\.]`0```$&+`TR+IX@#``!(B[=X`P``BX\\`P```=A,B>(IAT`#``!!BP-( -M*?+_R4C!^@,!V`'0C5#_((`P``3(T$UH%@!/___Q]!BP-- -MBTL(`=A-B4$(08D!2(N'R`,``$R)"$B+E\@#``!(.Y>X`P``2(U""$B)A\@# -M``!U#DB+A[`#``!(B8?(`P``08LS1(N7T`,``$'!Y07_SD&!R@```*!(B?!( -MP>`$3HU,&""%[70]BX>`%@``3(G"08D`N#L```!F02M#!`^WR$0)T4&)2`1) -M@^@(2#N7>`,``'4(3(N'@`,``)!!N@```(`Q[87;#X2V````2(7V#X6M```` -M08L13(G`@\(,08D000^W40B#Z@T/M\I$"=%!B4@$28/H"$@[AW@#``!U!TR+ -MAX`#``!$*Z=X`P``BX><%@``P>@(0<'L`X/@#T*-%*4`````00G%B=%(`X]X -M%@``2(/!0$2(:0(/MH><%@``B$$#`Y>`%@``3(G`0<=`!`,``("#PD!!B1!) -M@^@(2#N'>`,``'4'3(N'@`,``$&+`4''0`0+``"`08D`Z8X```!!BP$QR4B% -M]D&)`'4]28M#&(L0]L(!=`Z+2`3!X0Z!R0```!#K)/;"`G0?B=")T<'J`\'H -M!,'A%@G0@>$````(@^`!P>`:"<%FD$$/MU$(B<@E`,#____*#[?2"=!,B<)$ -M"=!!N@```(!!B4`$28/H"$@[EW@#``!U!TR+AX`#``!)@^D02/_.#XES_O__ -M08N&1`$``(/(`4&)AD0!```QP%M=05Q!74%>PTR+3B"+AT`#``!(BW8(3(L7 -M02L!B8=``P``08L!B09!BP%(BX]X`P``2(N7B`,``$@IRDC!^@-,C000BY<\ -M`P``28U`___*2"'02(T,P4B)3@B+ASP#``!,BY^(`P``_\A)(WT`,``$'_R$N-!$!F@@@-=C>+`HD!#[=""&:)<0:^`(#____(9HE!!$B)R$B# -MZ0A(.X=X`P``#X67````2(N/@`,``.F+````2(G(2(/!"$@[AX`#``!U!TB+ -MCW@#``!(.X^(`P``="QF9I!FQT$&``!(B`,` -M`&9FD$@[CX@#``!UUTB+E\@#``!,B9^(`P``08L!`8=``P``2#N7L`,``$B- -M0OA(B8?(`P``=0Y(BX>X`P``2(F'R`,``+@&````PTB#ZAA)_\@/B2O___\Q -MP$''@D0!```!````PY!!5(N'0`,``$F)\U5(BR]32(M>($B+=@@K`XF'0`,` -M`(L#B0:+`TB+CW@#``!(BY>(`P``2"G*2,'Z`TR-#!"+ESP#``!)C4'__\I( -M(=!,C03!3(E&"(N'/`,``$R+IX@#``#_R$DAP4B+AW@#``!*C03(2(F'B`,` -M`(%@!/___Q](BX?(`P``2(DP2(N7R`,``$@[E[@#``!(C4((2(F'R`,``'4. -M2(N'L`,``$B)A\@#``!$BPM$BY?0`P``0?_)08'*````H$N-!$E(C73#$(-^ -M"`T/AI````"+!D&)``^W1@C_R$V%R0^WT'5028M#&(L(]L$!=!:+0`2!XO\_ -M`/#!X`X)PH'*````$.LO]L$"="J)R('B____]\'@%B4````("<*)R,'I`\'H -M!('B____^PG(@^`!P>`:"<)$"=),B``P``Z8D```!,B`,``$P[AX@# -M``!T*I!!@6`$____'TR)P$F#P`A(.X>``P``=0A,BX=X`P``D$P[AX@#``!U -MUTB+E\@#``!,B:>(`P``BP,!AT`#``!(.Y>P`P``2(U"^$B)A\@#``!U#DB+ -MA[@#``!(B8?(`P``N`8```#K'DB#[AA)_\D/B=#^__^+A40!``"#R`&)A40! -M```QP%M=05S#D(L&@_@"=">#^`)W!O_(=`GK-(/X!'0CZRW'AY`6```!```` -MBT8$B8><%@``ZQ['AY06```!````ZQ+'AY@6```!````ZP:X`@```,,QP,.0 -MBP:#^`)T*H/X`G<(_\AT"^LW9I"#^`1T).LNQX>0%@```````,>'G!8````` -M``#K(\>'E!8```````#K%\>'F!8```````#K"[@"````PV9FD&:0,<##D$%6 -M2(GR056#X@%)B?5!5(7255-(BZ^@`0``2(L?=`^+@Y0```"#X/Z)@Y0```!! -M]L4"=`^+@X0```"#X/Z)@X0```#VAR@&```$=0Q$B[1) -MB=9%A?9T"HN#F````*@!=1!!]L4"="*+@X@```"H`7080?_$O@H```!(BWT` -M_U4P08'\3\,``';)OC(```!(BWT`_U4POC(```!(BWT`_U4P0?;%`70*QX,0 -M`0```````$&#Y0)T"L>##`$```````!;74%<05U!7C'`PTB#[!A`]L8"2(EL -M)!!(B5PD"+WH`P``2(L?=`^+@X0```"#R`&)@X0```"#Y@%T.$B+AZ@!``!( -MBSC_4"A(/0#A]06X9`````]$Z`^WQ0T```$`B8,0`0``BX.4````@\@!B8.4 -M````2(M<)`A(BVPD$#'`2(/$&,-F9I!(@^P8NC````!(B5PD"$B);"002(G[ -M2(V_[!<``$B)]>@`````@[ML&````G4\QX.D%@````$``(M%*(7`=`K'@Z06 -M````(0``BX/X%P``]L0$=0KVQ!!U!?;$"'0G@8ND%@````0``.L;QX.D%@`` -M`````(M%*(7`=`K'@Z06````(```2(M<)`A(BVPD$$B#Q!C#]\8`!```2(L7 -MB;?\%P``=1/WQ@`(``!U"X'F`!```'089F:0@8^D%@````0``(N"1`$``(#, -M!.L3@:>D%@``__O__XN"1`$``(#D^XF"1`$``,.0@[]@&````DB+-TB-E]@# -M``!(C8\H!0``=`:X!P```,.+AI0"``")P$@!0A"+AI@"``")P$@!0B"+AI`" -M``")P$@!0AB+AJ`"``")P$@!0BB+AIP"``")P$@!0CB+AH0"``")P$@!0D"+ -MAH@"``")P$@!0DB+AHP"``")P$@!0E"+AH`"``")P$@!@L````"+AKP"``") -MP$@!02B+AJ0"``")P$@!01B+AK@"``")P$@!02"+AJP"``")P$@!04"+AK`" -M``")P$@!04B+AL0"``")P$@!03"+AJ@"``")P$@!@:````"+AK0"``")P$@! -M@:@```"+AL`"``")P$@!@;````"+AL@"``")P$@!@;@```"+ALP"``")P$@! -M@<````"+AM`"``")P$@!@<@````QP,-(@^P(2(N'J`$``$B+./]02$B#Q`C# -M9I!(@^P(2(N'J`$``$B+./]00$B#Q`C#9I!(@^P(2(N'J`$``$B+./]0.$B# -MQ`@QP,-(@^P(BXH```!(BX-8!0``2(F%\@```$B+@T`%``!(B87Z````2(N#2`4` -M`$B)A0(!``"#NV`8```"#X6.````2(N#F`0``$B)A%(@$` -M`/____](QX4J`0``_____TC'A3(!``#_____2,>%.@$``/____](QX5*`0`` -M_____TC'A5(!``#_____2,>%6@$``/____](QX5B`0``_____TB+@U`&``!( -MB85J`0``2(N#6`8``$B)A7(!``!(BX-@!@``2(F%>@$``$B+@V@&``!(B86" -M`0``2(N#<`8``$B)A8H!``"#NVP8```"=7)(BX.(!0``2(F%R@$``$B+@Y`% -M``!(B872`0``2(N#F`4``$B)A=H!``!(BX.@!0``2(F%X@$``$B+@Z@%``!( -MB87J`0``2(N#L`4``$B)A?(!``!(BX.X!0``2(F%^@$``$B+@\`%``!(B84" -M`@``ZUA(QX7*`0``_____TC'A=(!``#_____2,>%V@$``/____](QX7B`0`` -M_____TC'A>H!``#_____2,>%\@$``/____](QX7Z`0``_____TC'A0("``#_ -M____2(/$"#'`6UW#2(L'QP8!````BX!H`@``J0```$!T!L<&"0```*D````$ -M=`.##@2I`````G0#@PX",<#'1@0/````QT8(#P```,=&#`\```!(QT80!0`` -M`,-(BQ>+@FP"``"#X`.%P(D&=0C'!@$```#K'X/X`74(QP8"````ZQ*#^`(/ -ME<`/ML"-!(4$````B0:+@@`"``#'1@0`````J`%T!\=&!`$```"H$'0$@TX$ -M`O;$`70$@TX$!/;$$'0$@TX$"*@"QT8(`````'0'QT8(`0```*@@=`2#3@@" -M]L0"=`2#3@@$]L0@=`2#3@@(J`3'1@P`````=`?'1@P!````J$!T!(-.#`+V -MQ`1T!(-.#`3VQ$!T!(-.#`@QP,-FD$B+/XM.!(N'``(``"6(B/__B<*#R@'V -MP0$/1<*)PH/*$/;!`@]%PHG"@,X!]L$$#T7"B<*`SA"#X0B+3@@/1<*)PH/* -M`O;!`0]%PHG"@\H@]L$"#T7"B<*`S@+VP00/1<*)PH#.((/A"(M.#`]%PHG" -M@\H$]L$!#T7"B<*#RD#VP0(/1<*)PH#.!/;!!`]%PHG"@,Y`@^$(#T7"N@`` -M``")AP`"``"+#O;!`0]%PKH!````]L$"#T7"N@(```#VP00/1<*Z`P```(/A -M"`]%PH#,`8F';`(``#'`PY!(@^PH,L5/8"6F`!T#HG0@\@"@?D`RIH[#T30B="`YOZ`S`%!@_T"#T3" -MB87`````3(G@2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9FD+@/````PV:0 -M05=!5D%528G]051)B?154TB#[`B+%DB++XN=C````(/CWX#+@(G8@\@@]L(! -M#T78]L("='=(C48*@\L@3(UV!$B)!"2+A90```!!B<=!@^@/ML"H`70)T>@U -M((.X[>L"T>A(_\)(@_H'?NA!P>T(03'%2/_#2(/[?WZK18N&``(``+@```$` -M1(G)T^!!]]5$AV)@Z@```!!BT0D!(F#K````'00O@$```!(B>_H```` -M`&9FD$B+7"0(2(ML)!`QP$R+9"083(ML)"!(@\0HPY!(BQ>+@J@```")!HN" -MK````(E&!#'`PY!(@_H!4TB)\$B)RTC'`0````!T.$B#^@%_"DB%TG00Z9$` -M``!(@_H"=%+IA@```$B+-[H`$```2(G'Z`````!(QP,`$```ZVUF9F:0,`#2(D#6S'`PV9FD$B+!XL0B1"+D(`!``")D(`!```QP,-FD$B+ -M!\=`!``````QP,>'!`8```````##D(N'&`8``$B+%XF'!`8``(E"!#'`QX<< -M!@```````,=""`,```##9I"+AQP&``!(BP^%P'4.BP$Q]B.'!`8``(7`ZPF+ -M$3'VBT$$A=!T%L=!!`````"^`0```,>'!`8```````!(B?##05=%,?]!5D4Q -M]D%5051%,>154TB)^TB#[`A,BR]!BT4`,>U!"<9(BX/H!```9H-X!@!X$4C_ -M@U`&``!(B=_H`````(G%2(N#P`,``$@[@\@#``!T'TB+`$B+0`AF@W@&`'@1 -M2/^#8`8``$B)W^@``````<5!`>]!_\2%[70)1#NC-!@``'*60<=%`/____^+ -M@Y`8``"%P'5]08/F0'0A08NU@`$``$B)WTC_@W`&``!!QX6``0``_____^@` -M````BX,(!@``A# -M"`8```$```#K$(N##`8``,>#"`8```````")@Q@&``#'@R0&````````ZR>+ -M!0````#_P#WH`P``B04`````=1)(B=_H`````,<%``````````!(@\0(,154TB)^TB#[`A,BR]!BT4` -M,>U!"<9(BX/H!```BW`$A?9X%$C_@U`&``!(B=_H`````(G%9F:02(N#P`,` -M`$@[@\@#``!T($B+`$B+0`B+2`2%R7@22/^#8`8``$B)W^@``````<6000'O -M0?_$A>UT"40[HS08``!RDD''10#_____BY.0&```A=)U?4&#YD!T(4&+M8`! -M``!(B=](_X-P!@``0<>%@`$``/_____H`````(N#"`8``(7`=2I%A?]U.XN# -M)`8``/_`@_@*B8,D!@``=F*+@Q`&``#'@P@&```!````ZQ"+@PP&``#'@P@& -M````````B8,8!@``QX,D!@```````.LNBP4`````_\`]Z`,``(D%`````'49 -M2(G?Z`````#'!0``````````9F9FD&9FD$B#Q`@QP%M=05Q!74%>05_#9F:0 -M05=%,?]!5D4Q]D%5051%,>154TB)^TB#[`A,BR]!BT4`,>U!"<9(BX/H!``` -M9H-X!@!X$4C_@U`&``!(B=_H`````(G%2(N#P`,``$@[@\@#``!T'TB+`$B+ -M0`AF@W@&`'@12/^#8`8``$B)W^@``````<5!`>]!_\2%[70)1#NC-!@``'*6 -M0<=%`/____^+NY`8``"%_W5\08/F0'0A08NU@`$``$B)WTC_@W`&``!!QX6` -M`0``_____^@`````@[L(!@```G4J187_=3N+@R0&``#_P(/X"HF#)`8``'9; -MBX,0!@``QX,(!@```0```.L0BX,4!@``QX,(!@```@```(F#&`8``,>#)`8` -M``````#K)XL%`````/_`/>@#``")!0````!U$DB)W^@`````QP4````````` -M`$B#Q`@QP%M=05Q!74%>05_#9F:005=%,?]!5D4Q]D%5051%,>154TB)^TB# -M[`A,BR]!BT4`,>U!"<9(BX/H!```1(M0!$6%TG@62/^#4`8``$B)W^@````` -MB<5F9I!FD$B+@\`#``!(.X/(`P``="%(BP!(BT`(1(M(!$6%R7@12/^#8`8` -M`$B)W^@``````<5!`>]!_\2%[70)1#NC-!@``'*-0<=%`/____]$BX.0&``` -M187`=7Q!@^9`="%!B[6``0``2(G?2/^#<`8``$''A8`!``#_____Z`````"# -MNP@&```"=2I%A?]U.XN#)`8``/_`@_@*B8,D!@``=F"+@Q`&``#'@P@&```! -M````ZQ"+@Q0&``#'@P@&```"````B8,8!@``QX,D!@```````.LLBP4````` -M_\`]Z`,``(D%`````'472(G?Z`````#'!0``````````9F:09I!(@\0(,@`0``2(UT)`!(@\8428L\)$'_5"0H2(NKZ`0``$'_Q4B-10A(.ZO@ -M!```2(F#Z`0``'402(N#V`0``$B)@^@$``#K!TB+@]@$``!(B>I(*<)(BX,( -M!0``2(LT`DB%]@^$"P(```^W508/M\*)T:@!#X0W`0``]L1`=!PE@G\``#T` -M8```=!`]`$0```^%&P$``&9FD&:0@[M@&````G0+2/^#*`4```^W508/MT4$ -M@>($(```2(ET)`B!^@0@``"-2/\/1,%(@[N0%@````^WP(E$)`1U"D4QP#') -MZ;0```!(C70D`$F+/"1%,?]!_Y0DN````&:!>`R!`$B)P0^%BP```(N#D!8` -M`(7`=$D/MG$.#[91#XGP@^`/P>`("=`Y@YP6``!T&0^W@Z`6``!FQT4&`("# -MZ#%FB44$Z4$!``!$BYN4%@``187;=!.)\,#H!4&)Q^L)1`^V>0Y!P.\%BT$( -MB4$,BT$$B4$(BP&)002+1"0$2(/!!(/H!(/X.XE$)`1W#,=$)`0\````ZP(Q -MR44/ML>Z`0```$B-="0`28L\)$'_5"10Z<,```!(A?8/A+H```!%,?:#X0$/ -MA)4```"#NV`8```"#X2(````2/^#,`4```^W50;VP@)T"TC_@S@%```/MU4& -M]L8@=`M(_X-`!0``#[=5!O;&$'0+2/^#2`4```^W50;VQ@AT"TC_@U`%```/ -MMU4&]L8$=`M(_X-8!0``#[=5!O;&`G0+2/^#8`4```^W50:`Y@%T!TC_@V@% -M``"`?08`>0M(_X-P!0``9F9FD`^W@Z`6``!(B70D"&;'108`@(/H,6:)101% -MA?9T#4B)[DB)W^@`````ZP9!O@$```!(B[/H!```9H-^!@!(B?5X#40[JS@8 -M```/@G?]__](@<3(````1(GH6UU!7$%=05Y!7\-!5T%60;X!````055%,>U! -M5%532(G[2('LV````$B+K^@$``!,BZ>@`0``D$'_Q4B-10A(.ZO@!```2(F# -MZ`0``'402(N#V`0``$B)@^@$``#K!TB+@]@$``!(B>I(*<)(BX,(!0``2(LT -M`DB%]@^$60(``(M5!/?"````((G1#X1W`0``]\(```!`=!*)T"4``/0!/0`` -M``$/A5T!``"#NV`8```"=`I(_X,H!0``BU4$#[=-!&:!X?\_]\(````!=`R- -M0?^!X@````(/1<@/M\%,C7PD$$B)="08B40D%+H!````28UW%$F+/"1!_U0D -M*(M%!,'H&H/@!XA$)"0/ML!(_X3#B`4``$B#NY`6````=0I%,<`QR>G#```` -M13'`28L\)$R)_D2(1"0(0?^4)+@```!$#[9$)`AF@7@,@0!(B<$/A9$```"+ -M@Y`6``"%P'1/#[9Q#@^V40^)\(/@#\'@"`G0.8.<%@``="''100`````#[># -MH!8``(/H,0^WP`T```"`B44$Z5`!``"+@Y06``"%P'03B?#`Z`5!B<#K"40/ -MMD$.0<#H!8M!"(E!#(M!!(E!"(L!B4$$BT0D%$B#P02#Z`2#^#N)1"04=PS' -M1"04/````.L",$````@#X28````@[M@&````@^$BP```$C_@S`%``"+503W -MP@````%T"DC_@T`%``"+503WP@``@`!T"DC_@T@%``"+503WP@``0`!T"DC_ -M@U`%``"+503WP@``(`!T"DC_@U@%``"+503WP@``$`!T"DC_@V`%``"+503W -MP@``"`!T"DC_@V@%``"+502!X@``!`!T#4C_@W`%``!F9I!F9I!(B70D&,=% -M!``````/MX.@%@``@^@Q#[?`#0```(")101%A?9T#4B)[DB)W^@`````ZP9! -MO@$```!(B[/H!```BT8$2(GUA154TB+E\`#``!(BZ^@`0``2(G[2#N3N`,``$B- -M0@A(BS)(B8/``P``=0Y(BX.P`P``2(F#P`,``$B+5@B+!@�`,``/9"!T!U -M2X.[8!@```)T.DC_@]@#``"+0@3!Z!.#X`](_X3#&`0``(M"!*D````"=`I( -M_X,(!```BT($J0````%T!TC_@Q`$``"+DT08``#K6H.[8!@```)T2TC_@^`# -M``"+0@2I````$'0*2/^#Z`,``(M"!*D````(=`I(_X/P`P``BT($J0````1T -M"DC_@_@#``"+0@2I```$`'0'2/^#``0``(N32!@``$B+?0!!_\3_54A(BX/` -M`P``2#N#R`,``$B)PG0;2(L`2(M`"(M`!(7`>`U$.Z,\&```#X+L_O__6UU$ -MB>!!7,-(@^P82(D<)$B);"0(3(ED)!!(BP=(B?M,BZ>@`0``BZB(`0``B>@S -MAR@&``"#Y@AT1*@$=$!`]L4$="&^`P```.@`````2(G?Z`````"^`P```$B) -MW^@`````ZPK'ARP&``#_____2(GN28L\)(/F!$'_5"18B:LH!@``3(MD)!`Q -MP$B+'"1(BVPD"$B#Q!C#9F:02(/L*+H!````2(E<)!!(B6PD&$R)9"0@B[=( -M!@``2(U,)`Q(B?M,BZ>@`0``,>WH`````$B%P'1S]D0D#`2X!````(N3*`8` -M``]%Z(GH,="H!'1&A>UT)+X#````2(G?Z`````!(B=_H`````+X#````2(G? -MZ`````#K"L>#+`8``/____^)[DF+/"2#Y@1!_U0D6(N3*`8``(7M=`6#R@3K -M`X/B^XF3*`8``$B+7"002(ML)!A,BV0D($B#Q"C#2(/L*$B)7"002(EL)!A, -MB60D($B++TB)^\=$)`P`````BX6(`0``J0``$`!U$8N%B`$```T``!``B86( -M`0``2(N#J`$``$B-="0,2(LX_U`XBU0D#(72#X03`0``2(N#J`$``(.+*`8` -M``1(BSC_4#!!B<1(BX.H`0``2(LX_U`H1#NC,`8``(G&=0H[@RP&``!T+^L@ -M08/\`G4+BX6`````@^#]ZPF+A8````"#R`*)A8````!$B:,P!@``B;,L!@`` -MBY7`````BXV<````]\(````0#X25````@^+\@?X`X?4%=0Z!X?\`_/^#R@&` -MS2WK/('^@):8`'4+@>'_`/S_@,UTZRF!_@#*FCMU(8'A_P#\_\>%/`$``""` -MX`^#R@*`S7^+A3P!``!F9I!FD(G0@.;^@,P!08/\`@]$PHF%P````(F-G``` -M`(N#[!<``(7`=!N+@Q@8``"%P'01B440QX,8&````````&9F9I!(BUPD$$B+ -M;"083(MD)"!(@\0HPT%728G/059!B=9!54F)_4%408GT,?954TB#[`A(BQ_' -M1"0$`````,#@`$```\` -M``"+@X@!``"I```0`'09QT0D!`$```"+@X@!```E___O_XF#B`$``(N#D`$` -M`&:%P'D3@ -M`P``@^`?1`G@13'DB8.0`0``@,R`13NE.`8``',K9H7`>29FD+X*````2(M] -M`$&#Q`K_53!%.Z4X!@``BX.0`0``05_#D$%708G7059!B#@`$```\```"+@X@!``"I```0`'09QT0D!`$```"+@X@!```E -M___O_XF#B`$``(N#D`$``&:%P'D6QX.0`0```(```+XR````2(M]`/]5,$'! -MY`5$B?A$B;.4`0``08'DX`,``(/@'T0)X$4QY(G!@,T$B8N0`0``B<&`S81% -M.Z4X!@``1FA!;74%<05U!7D%?PTB#[$A(B5PD.$B);"1` -M2(U4)`A(BX^@`0``BX>@%@``2(G[2(GU2(UT)!")1"0@2(LY_U$X2(7`=%I( -MB>E(BT0D"$B+DP@%``!(*XO8!```2(D$$8M$)!B)10"#NVP8```!=1.+1"0@ -M9L=%!@"`@^@Q9HE%!.L/BT0D((/H,0T```"`B44$N`$```#K8&9F9I!F9I!( -MB>A(BY,(!0``2"N#V`0``$C'!!``````BX,8!0``B44`@[ML&````745#[># -M``8``&;'108`@/_(9HE%!.L7QT4$`````(N#``8``/_(#0```(")100QP$B+ -M7"0X2(ML)$!(@\1(PS'`PY!(@^PX2(E<)"A(B6PD,$B)^XL.2(GU3(N'H`$` -M`#N/&`4``'1E2(GR2(N'"`4``(G)2"N7V`0``$B+%`)(B4PD"(N'H!8``(E$ -M)!!FQT8$``!FQT8&``!(B>9)BSA!_U!`2(GJ2(N#"`4``$@KD]@$``!(QP0" -M`````(N#&`4``(E%`+@!````ZP(QP$B+7"0H2(ML)#!(@\0XPY!!5TF)ST%6 -M28G6055!5$F)]%5(B?U32(/L.$R++DC'!@````#'1"0@:`,``$C'1"08```` -M`$B-="002(L__U4(N@$```!(A<`/A*H!``!(BUPD$$B)F[````!(B=](BT0D -M&$B)@[@```!(BT0D($R):W!(B2M(B8/`````Z`````!(C4,(2,=#:`````!( -MB5L(2,=#$`````!(QT,8`````$C'0R``````2,=#,`````!(QT,X`````$C' -M0T``````2,=#2`````!(QT-0`````$C'0R@`````2,=#8`````!(QT-8```` -M`$F)!"2+@X````!!B0:+@X````!(C02`BX2#V````$&)!XN[2`,``(7_=$)( -MBP-(BU!@2(72=$!(C;.0````2(LX_]*Z"0```$B%P`^$O@```$B+`TB+LY`` -M``!(B=E(Q\(`````2(LX_U!PZPJZ"````.F8````2(M#<,=#>/____^Z`@`` -M`(NS@````$B-3"0,2(LH3(M@"$B)[T'_U+H&````2(7`=&:+1"0,N@,```!( -MC4PD#$B)[R7_`P``P>`&B40D#(NS@````(M$)`QFB8-8`P``0?_4N@8```!( -MA#3@,``&:%P'04#[?(B[.`````N@0```!(B>]!_]1( -MBX.P````2(GF2(D$)$B+@[@```!(B40D"$B+@\````!(B40D$$B+`TB+./]0 -M$$B+7"0@2(ML)"@QP$R+9"0P2(/$.,-FD$%5051)B?154TB)^TB#[`A(BT=P -M2(U,)`1(BRA,BT`(3(MH$(F75`,``$2+#D6%R0^5AZ@````QTL<&`````(NW -M@````,:'J0````%(B>]!_]`/MX-0`P``9H7`=!T/M\B+LX````"Z"0```$B) -M[T'_U6;'@U`#``````^W@U(#``!FA#4@,`````9F9FD$B+LY````#'@Y@````$````2(7V=`Q(BP-(BSC_D(`` -M``#W@Z0```#___\`=2%(B=_H`````,:#J`````!(A9(B=_H`````#'`2(/$ -M"%M=05Q!7<-FD$%7`=)!5D%508G5N@$```!!5%5(B?U32(/L&$B)="0(2(U, -M)!1(BT=P3(LP3(MX",<&`````(NW@````$R)]T'_U[H&````2(7`=&Q%,>1- -M.>Q]5(M$)!2H!'50,=M(BT4`2/_#OC(```!(BSC_4#!(@_L)?NBZ`0```(NU -M@````$B-3"043(GW0?_7N@8```!(A]!_]2Z!@```$B%P'1J -MN@$```"+LX````!(B>%(B>]!_]2Z!@```$B%P'1,]D0D!0*+!"1FB8-<`P`` -M=0;V!"0@=0U,B>Y(B=_H`````.LF2(G?NF`)``!,B>['!"0`````Z`````!( -MB=_H`````&9F9I!F9I`QTDB#Q`A(B=!;74%<05W#,<"#OY@````##Y;`PV9F -MD#'`QX>8`````````,-F9I!(@^Q(2(E<)!A,B6PD,$R)="0X2(EL)"!,B60D -M*$R)?"1`2(M'<$4Q[44Q]DB)^TB+:`A,BW@03(L@BX>8````@_@!#X2%```` -M@_@!#^`(/A(\!``"#^`,/A!T"``#I>`(``.@`````2(7`#X5@`@``,=*+ -MLX````!(C4PD%$R)Y__52(7`#X1%`@``BTPD%#'2B[.`````3(GG@,V`B4PD -M%$'_UTB%P`^$(P(``$B+`TB+LY````"Z$@(``,>#F`````$```#I^@$``(NW -M@````#'22(U,)!1,B>?_U4B%P`^$Z@$``(M$)!1FA#G````"`#``#I,0$``#'2B[.`````2(U,)!1,B>?_U4B%P`^$(0$` -M`(M,)!0QTHNS@````$R)YX#E;XE,)!1!_]=(A<`/A/\```!(C70D$$B)W^@` -M````Z?<```"+MX````!(C4PD#+H!````3(GG_]5(A<`/A,\```#V1"0,('4F -M2(M#<(N3G````#M0(',7C8(F`@``2(NSD````+HF`@``Z8X````QTHNS@``` -M`$B-3"043(GG_]5(A<`/A(<```#V1"05`G4']D0D#"!U&<>#F`````,```!( -MC70D$$B)W^@`````ZVI(B=_H`````.M6B[>`````2(U,)`RZ`0```$R)Y__5 -M2(7`=#SV1"0,!'4U2(M#<(N3G````#M0)',FC8*6````2(NSD````+J6```` -MB8.<````2(L#2(LX_U!X2(7`=0K'@Y@````$````2(M<)!A(BVPD($R+9"0H -M3(ML)#!,BW0D.$R+?"1`2(/$2,-!5D%5051)B?152(G]4TB#[!"+MX````!( -MBT=P2(U,)`Q,BRA(BU@(3(MP$,:'J0````")EU0#``"Z`0```$R)[__33(GO -MB[6`````2(U,)`RZ`0```/_30<<$)``````/MX50`P``QX68`````````&:% -MP'0=#[?(B[6`````N@D```!,B>]!_]9FQX50`P`````/MX52`P``9H7`="$/ -MM\B+M8````"Z!````$R)[T'_UF;'A5(#`````&9F9I"+M8````!(B>_H```` -M`(G`2(7`=0M(B>_H`````#'`D$B#Q!!;74%<05U!7L-F9I!(@^PH2(7_2(E< -M)!!(B6PD&$R)9"0@2(G[#X31````1(N72`,``$6%T@^$P0```$B+1W"+MX`` -M``!,BV`(2(LHZ`````")PDB%TDB)T`^%GP```+H!````B[.`````2(U,)`Q( -MB>]!_]1(B<*X!@```$B%TG1\@+NH`````'0E2(G?Z`````!(A@#=5KV@UT#```!=%&+1"0DQT-X`,J: -M.X/(0(G"@.;?08#]`8E4)"1U%_9$)"$@="V`Y-Z)1"0DQT-\`0```.LG08#] -M`G47]D0D(4!T$(#.`8E4)"3'0WP"````ZPJX!0```.EF`0``BTPD'#'2B[.` -M````3(GW,>V`Y>^)3"0<_U0D"$R)]S'2B[.`````2(U,)!Q!_]?V1"0=$'0Y -M2(L#2/_%OC(```!(BSC_4#!,B?2(MT)!#'@Y@` -M```$````NF`)``!(B=_H`````.LX2(L#QX.8`````P```,>#G````)8```!( -MB[.0````NI8```!(BSC_4'A(A#F`````0````QP$B#Q"A;74%<05U! -M7D%?PV:005=%,?]!5D%505154TB)^TB#["A(B70D$$B+1W!(BU`03(MP"$B) -M5"0(1`^VIZ8````/MZ^D````3(LHQT0D(`````#'1"0<`````&:%[70%183D -M=0JX!````.E/`@``@+^G`````'0?QX>8````!````$B+="00Z`````#I+0(` -M`&9FD&9FD(NW@````#'22(U,)"1,B>]!_]9,B>](C8N@````B[.`````N@0` -M``!!_]9F@_T*=1!!OX`#``#'1"0$`!@``.L?9H/]9,=$)`0`^```=1''1"0$ -M`.```$&_8````&9FD$&`_`%U$8%D)`3_K___08'/0`$``.L908#\`G43@60D -M!/]7__]!@<^@`@``9F9FD/:#70,```$/A+@```"+LX````!(C4PD(+H)```` -M3(GO0?_63(GOBT0D((NS@````$B-3"0#8`,``(#,`8#D_>L808#\ -M`G49]L00=&0/MX-@`P``@,P"@.3^9HF#8`,``$&!S^`#``#K"6:!HV`#``#_ -M_`^WBV`#``"+LX````"Z"0```$R)[_]4)`A(AM/9H']Z`-T%T2+7"0$ -M187;=!H/MX-<`P``A40D!'4-N`4```#K+V9FD&9FD$'WUXNS@````+H$```` -M1".[H````$R)[T2)^?]4)`A(A#'`2(/$*%M=05Q!74%>05_#9I`QP&:)MZ0```"( -MEZ8```"(CZ<```##9I`QP,.005=%,?]!5D%5051)B?Q5O2````!3NP$```!( -M@^P(2(M'<$R+*$R+<`C'AT@#````````B=Y,B>?H`````(7`#X7Y````2(U, -M)`2Z`0```(G>3(GO0?_62(7`#X3>````BU0D!(72#X32````08N$)$@#``"# -MX@1(C02`08F4A-@```!!BX0D2`,``$B-!(!!B9R$R````/9$)`0!=$Q!BXPD -M2`,``+H#````B=Y,B>](C0R)28V,C-````!!_]9(A$A-0` -M````````ZS!!#[>4),P```!!BX0D2`,``$&+C"30````P>(0@>$`_```2(T$ -M@`G*08F4A-0```!!_X0D2`,``.L?2/_#2(/[_TB-0Q](#T_#2(/@X$@IPTC_ -MS0^%UO[__T&+C"1(`P``A!2+0`A!B80D@````$B#Q`A$B?A; -M74%<05U!7D%?PY!!5T4Q_T%613'V055!B?5!5%5(B?U32(/L&$B+1W!(C4PD -M%$R+($B+4`A,B>=(B50D"#'22(M8$/]4)`BZ!@```$B%P`^$P@```(M,)!0Q -MTD2)[DR)YX#-@(E,)!3_T[H'````2(7`#X2?````ZPJZ`@```.F3````BT0D -M%#';9H7`>2A(BT4`_\.^,@```$B+./]0,('[#R<``'<+BT0D%&:%P'C>ZP2+ -M1"049H7`>5EF9I!(BT4`OC(```!(BSC_4#!,B>Z"@```.L",=)(@\0( -MB=!;74%<05U!7D%?PV:0058QTD%513'M05154TB)^TB#[!"+MX````!(BT=P -M2(U,)`Q(BRA,BV`(3(MP$,>'F`````````!(B>]!_]2Z!@```$B%P`^$LP`` -M`/>#I````/___P!T'(N+H````(NS@````+H$````2(GO0?_69F:09I`QTL=$ -M)`P`"```B[.`````N0`(``!(B>]!_]:Z!P```$B%P'1F,=*+LX````!(C4PD -M#$B)[T'_U/9$)`T(=4J02(L#OC(```!(BSC_4#!(B>\QTHNS@````$B-3"0, -M0?_4N@8```!(APY!!5KH!````055!5$4QY%4Q[5-(B?M(@^P0B[>` -M````2(M'<$B-3"0,3(LP3(MH"$R)]T'_U;H&````2(7`=&CK![H,````ZU_V -M1"0,('569F:09I!(BP.^,@```$B+./]0,$R)][H!````B[.`````2(U,)`Q! -M_]6Z!@```$B%P'0E_\6#_11U"S'M0?_$9F:09F:02(M#<$0[8"!WH_9$)`P@ -M=*\QTDB#Q!")T%M=05Q!74%>PV:02(/L&+H!````2(E<)!!(C4PD#$B+1W!( -MB?-,BP!(BT`(QP8`````B[>`````3(G'_]"Z!@```$B%P'0/]D0D#`1T!L<# -M`0```#'22(M<)!!(B=!(@\08PTB#[!BZ`0```$B)7"002(U,)`Q(BT=P2(GS -M3(L`2(M`",<&`````(NW@````$R)Q__0N@8```!(A]!_]2Z!@```$B%P`^$:P$``/=$)`0`,```=""+1"0,QT-X`,J:.\=# -M?`(```"`Y-\-0`$``(E$)`SK4&;W1"0(`*)T$8%,)`P`(```QT-X`.'U!>LO -M]D0D"0AT$8%D)`S_W___QT-X@):8`.L7N@0```#'0WB`EI@`Z?X```!F9I!F -M9I#'0WP!````9H&[6`,``$-0=76+3"0,,=*+LX````!(B>^`S8")3"0,0?_5 -M13'M,=*+LX````!(C4PD#$B)[T'_U&:#?"0,`'E09F9FD&9FD$B+`T'_Q;XR -M````2(LX_U`P2(GO,=*+LX````!(C4PD#$'_U$&!_?,!``!W'&:#?"0,`'C+ -MZQ*+3"0,B[.`````,=)(B>]!_]6`NZD`````=!['@Y@````$````NF`)``!, -MB?9(B=_H`````.LX9I!(BP/'@Y@````#````QX.<````E@```$B+LY````"Z -ME@```$B+./]0>.L+2(GF2(G?Z``````QTDB#Q!!(B=!;74%<05U!7L-!5[H$ -M````059!54%454B)_5-(@^P8B[>`````1(M_>$B+1W!(C4PD%$R+($R+:`A, -MBW`0QT=X_____TR)YT'_U4R)YXNU@````$B-3"00N@4```!(B<-!_]5("<-U -M"K@&````Z70!``#VA5T#```!#X2;````B[6`````2(U,)`RZ"0```$R)YT'_ -MU4R)Y[H*````B[6`````2(U,)`Q("<.+1"0,9HF%8`,``$'_U8M4)`QFB95B -M`P``2`G#N`8```!(A=L/A!$!```/MX5@`P``]L0"=!B`Y@AT$\=%>`#*FCO' -M17P"````Z>L```#VQ`%T'/:%8P,```1T$\=%>`#*FCO'17P!````Z("6F`!U>D&!_X"6F`!T<8&] -M6`,``$-0P0QU98NU@````$B-3"0(NA````!,B>=!_]6+1"0(@^!@@_A@B40D -M"'4_B[6`````N1T```"Z'0```$R)YT'_UDR)YXNU@````+DP_@``NAX```!! -M_]9,B>>Z'@```(NU@````#')0?_6,`````2(M'<$B-3"042(LH3(M@"$R+]! -M_]1(B>^+LX````!(C4PD$+H)````0?_42(GON@4```!(C4PD#(NS@````$'_ -MU$2+;"041(M\)!!$B>I$B>DC5"0,]L)@=!.!X7_\___'0WB`EI@`B4PD%.L5 -M,<"!XH`!```/A)<```#'0WB`EI@`1(GXB[.`````N@0```"`Y/Q(B>^)1"00 -M0?_62(GOBTPD$(NS@````+H)````0?_62(GO,=*+LX````!(C4PD"$'_U(M, -M)`@QTHNS@````$B)[X#-$HE,)`A!_]9(B=^+LX````#H`````(G`2(7`=1]( -MC70D!$B)W^@`````,05_# -M9I!!5;H!````05154TB)^TB#[`B+MX````!(BT=P2(U,)`1(BRA,BV`(3(MH -M$$B)[T'_U+H&````2(7`#X3F`@``BT0D!/;$`6:)@UP#``!T+[H/````B[.` -M````2(U,)`1(B>]!_]2Z!@```$B%P`^$L@(``(M$)`1FB8->`P``N@0```"+ -MLX````!(C4PD!$B)[T'_U+H&````2(7`#X2#`@``9H.[3@,```!U"XM$)`1F -MB8-.`P``BTPD!+H$````B[.`````2(GO@]!_]2Z!@```$B%P`^$!`(``(M$)`1FB8-,`P``B<*`YOZ#NU0#```! -M9HF38`,``'4,@.3\9HF#8`,``.L*@,X"9HF38`,```^WBV`#``"Z"0```(NS -M@````$B)[X#E^V:)BV`#```/M\E!_]6Z!P```$B%P`^$FP$``&:!NU@#``!# -M4`^%+@$``+H=````B[.`````N0L```!(B>]!_]6Z!P```$B%P`^$:`$``+H> -M````B[.`````N02```!(B>]!_]6Z!P```$B%P`^$1`$``+H=````B[.````` -MN08```!(B>]!_]6Z!P```$B%P`^$(`$``+H>````B[.`````2(U,)`1(B>]! -M_]2Z!@```$B%P`^$_````(M,)`2Z'@```(NS@````$B)[X#E/X#-0(E,)`1! -M_]6Z!P```$B%P`^$SP```+H=````B[.`````N0H```!(B>]!_]6Z!P```$B% -MP`^$JP```+H>````B[.`````2(U,)`1(B>]!_]2Z!@```$B%P`^$AP```(M, -M)`2Z'@```(NS@````$B)[X/AWXE,)`1!_]6Z!P```$B%P'1A9F:0,=*+LX`` -M``!(C4PD!$B)[T'_U+H&````2(7`=$'W@Z0```#___\`=0J!3"0$`!```.L( -M@60D!/_O__\QTHM,)`2+LX````!(B>]!_]6Z!P```$B%P+@`````2`]%T$B# -MQ`A(B=!;74%<05W#055!5%532(G[2(/L"$B+1W!,BV`(3(MH$$B+*`^WAU@# -M``#'1WC_____9CWQ`P^%50$``(._5`,```(/A:8```"+MX````"Z%P```$B- -M3"0$2(GO0?_4N@8```!(A<`/A)H!``"+3"0$NA<```"+LX````!(B>^`Y0&` -MS1*)3"0$0?_5N@<```!(A<`/A&T!``"Z'````(NS@````$B-3"0$2(GO0?_4 -MN@8```!(A<`/A$D!``"+3"0$NAP```"+LX````!(B>^#R02)3"0$0?_5N@<` -M``!(A<`/A!\!```/MX-8`P``9CWQ`P^%F````+H6````B[.`````2(U,)`1( -MB>]!_]2Z!@```$B%P`^$Z@```(M,)`2Z%@```(NS@````$B)[X#-((E,)`1! -M_]6Z!P```$B%P`^$P````+H2````B[.`````2(U,)`1(B>]!_]2Z!@```$B% -MP`^$G````(M,)`2Z$@```(NS@````$B)[X/A_HE,)`1!_]6Z!P```$B%P'1V -M]H-=`P```71&N@D```"+LX````!(C4PD!$B)[T'_U+H&````2(7`=$V+3"0$ -MN@D```"+LX````!(B>^`Y?N)3"0$0?_5N@<```!(A]!_]2Z!@```$B%P+@`````2`]%T$B#Q`A(B=!;74%<05W#9F:0 -M,<")\4B%_W092#G0?1%F9I!F9I"(##A(_\!(.=!\]4B)^,.02(7_=`M(A?9U -M#&9FD&9FD+@!````PS')2#G1?1AF9I`/M@8X!W7I2/_!2/_'2/_&2#G1?.LQ -MP,-(A?]T!4B%]G4#,<##,=(B>7H`````#'29H,[`'07#[8$4X@$%$C_ -MPDB#^A-W!V:#/%,`=>E(B>_H`````$B#Q"A;7<-F9I`/M@PQP,.0, -M````2(G?Z`````!(B=],B>9(B>JX'@```$PIXDB#^A](#T/0Z`````!(B=_H -M`````#'29CW_``^'EP```$.(1#4`3(UE`4G_Q;XN````3(GGZ`````!(A````3(GGZ`````!,B>=,B?ZZ -M'@```.@`````3(GGOBX```#H`````+H!````2(7`="VZ'@```$R)YDB)Y\8` -M`.@`````2(GGZ``````QTF8]_P!W"D.(1#4`N@$```!(@\1(2(G06UU!7$%= -M05Y!7\,`````````````````````````````````````````````4U)#($$Z -M("12979I& -M!HP%C01'#E``````````-````#0!`````````````,H"````````0@X00@X8 -M0@X@00XH00XP@P:&!8P$C0..`@`````````<````;`$`````````````'@`` -M``````!$#A"#`@```"0```",`0````````````!Z`````````$$.$$$.&(,# -MA@)'#B`````<````M`$`````````````6@````````!!#A"#`@```#0```#4 -M`0````````````#-`````````$(.$(X"20X8C0-%#B!!#BA!#C"#!H8%C`0` -M````````%`````P"`````````````!X`````````-````"0"```````````` -M`)P#````````0@X030X8C0..`D4.($$.*$$.,(,&A@6,!``````````T```` -M7`(`````````````*`0```````!"#A!-#AB-`XX"10X@00XH00XP@P:&!8P$ -M`````````!0```"4`@````````````"S`0```````"0```"L`@`````````` -M```7`@```````$(.$$H.&(8#C`)$#B"#!``4````U`(`````````````3P`` -M```````4````[`(`````````````5P`````````T````!`,````````````` -MV`````````!"#A!%#AB-`XX"2`X@0PXH00XP@P:&!8P$`````````!P````\ -M`P````````````!Y`````````$0.($Z#`X8"'````%P#`````````````)0` -M````````1`X@3X8"@P,4````?`,`````````````4P`````````4````E`,` -M````````````-`$````````<````K`,`````````````%@````````!$#A`` -M`````!P```#,`P`````````````6`````````$0.$```````'````.P#```` -M`````````!@`````````1`X0```````<````#`0`````````````+``````` -M``!$#A```````!P````L!``````````````H`````````$0.$```````%``` -M`$P$``````````````<`````````%````&0$``````````````<````````` -M)````'P$``````````````@$````````00X0A@)$#AB#`T<.(````!0```"D -M!`````````````!0`````````!0```"\!`````````````#&`````````!0` -M``#4!`````````````#;`````````"0```#L!`````````````#%```````` -M`$0.,%:-`HP#A@2#!0`````4````%`4`````````````!@`````````\```` -M+`4`````````````V0````````!"#A!"#AA"#B"-!(X#CP)%#BB,!40.,$$. -M.$0.0(,'A@8`````````/````&P%`````````````$T!````````0@X02@X8 -M0@X@C02.`X\"2`XHC`5$#C!!#CB#!X8&1@Y0`````````!0```"L!0`````` -M``````!!`````````"0```#$!0````````````!_`````````$0.,%2#!8T" -MC`.&!``````4````[`4`````````````%P`````````<````!`8````````` -M````N0````````!%#A"#`@```!0````D!@`````````````6`````````!0` -M```\!@`````````````7`````````!0```!4!@`````````````F```````` -M`!0```!L!@````````````!``````````#P```"$!@````````````!.`0`` -M`````$(.$(\"10X8C@-%#B!"#BB,!8T$1`XP00XX@P>&!D<.0``````````\ -M````Q`8`````````````60$```````!"#A"/`D4.&(X#10X@0@XHC`6-!$0. -M,$$..(,'A@9'#D``````````/`````0'`````````````$T!````````0@X0 -MCP)%#AB.`T4.($(.*(P%C01$#C!!#CB#!X8&1PY``````````#P```!$!P`` -M``````````!=`0```````$(.$(\"10X8C@-%#B!"#BB,!8T$1`XP00XX@P>& -M!D<.0``````````\````A`<`````````````X`(```````!"#A!'#AB.`X\" -M2`X@C01%#BA!#C!!#CB#!X8&C`5*#H`"````````/````,0'```````````` -M`!@#````````0@X00@X8C@./`D@.((T$10XH00XP00XX@P>&!HP%2@Z0`@`` -M`````"0````$"``````````````Y`0```````$(.$(P"1`X800X@@P2&`P`D -M````+`@`````````````-`$```````!"#A",`D0.&$$.((,$A@,`)````%0( -M`````````````)$`````````1`X@3HP"A@.#!````````"0```!\"``````` -M``````#``````````$0.,%2,`H8#@P0````````D````I`@````````````` -MA`$```````!$#C!/C`*&`X,$````````/````,P(`````````````$\!```` -M````0@X0CP)%#AB.`T4.((T$10XHC`5&#C!!#CA$#D"#!X8&`````````#P` -M```,"0`````````````X`0```````$(.$(\"10X8C@-%#B"-!$4.*(P%1@XP -M00XX1`Y`@P>&!@`````````<````3`D`````````````_`````````!$#E!* -MA@*#`Q0```!L"0`````````````#`````````!P```"$"0````````````"; -M`````````$0.0$J&`H,#/````*0)``````````````H"````````0@X0CP)% -M#AB.`T4.($(.*(P%C01$#C"&!D0..$0.<(,'`````````"0```#D"0`````` -M``````#B`````````$0.0%*,`H8#@P0````````L````#`H````````````` -M*@$```````!"#A!"#AB,`XT"1`X@00XH@P6&!$<.,``\````/`H````````` -M````R@````````!"#A!$#AA"#B"-!(X#CP)*#BA!#C"&!HP%1`XX1`Y0@P<` -M````````+````'P*`````````````+``````````0@X0C0)'#AA!#B!!#BB# -M!88$C`-'#C``%````*P*``````````````T`````````%````,0*```````` -M``````T`````````)````-P*```````````````#````````1`Y07H\"C`6& -M!HX#C02#!S0````$"P````````````#M`````````$(.$$(.&$(.((P$C0.. -M`D0.*(8%1`XP1`Y`@P8`````)````#P+``````````````8!````````1`XP -M4HP"A@.#!````````!P```!D"P`````````````=`````````$$.$(,"```` -M'````(0+`````````````!T`````````00X0@P(````\````I`L````````` -M````_@(```````!"#A!"#AA"#B!"#BA!#C!!#CB#!X8&C`6-!(X#CP)'#F`` -M````````/````.0+`````````````+X"````````0@X0CP)%#AA"#B!"#BA! -M#C!!#CB#!X8&C`6-!(X#1PY@`````````!0````D#``````````````6```` -M`````!0````\#``````````````#`````````#P```!4#`````````````#G -M`0```````$(.$(\"10X80@X@0@XHC`6-!(X#1`XPA@9&#CB#!TD.0``````` -M```\````E`P`````````````'0$```````!"#A"/`D4.&(X#10X@C01%#BA! -M#C"&!HP%1`XX1`Y0@P<`````````/````-0,`````````````/X````````` -M0@X0CP)'#AA"#B!"#BB,!8T$C@-$#C"&!D0..$0.0(,'`````````#0````4 -M#0`````````````/`0```````$(.$$0.&(T#C@)%#B!!#BA!#C"#!H8%C`1' -M#D``````-````$P-`````````````+8`````````0@X01PX80@X@C`2-`XX" -M1`XHA@5##C"#!D<.0``````<````A`T`````````````6`````````!$#B!* -M@P(``!P```"D#0````````````!8`````````$0.($J#`@``-````,0-```` -M`````````#0"````````0@X0C@)'#AA"#B!!#BA!#C"#!H8%C`2-`T<.0``` -M```\````_`T`````````````[`$```````!"#A!'#AA"#B!"#BA!#C"&!HP% -MC02.`X\"1`XX1`Y0@P<`````````/````#P.`````````````$(!```````` -M0@X01PX80@X@0@XH00XP00XX@P>&!HP%C02.`X\"1PY0`````````"P```!\ -M#@`````````````T`P```````$(.$$<.&$$.($$.*(,%A@2,`XT"1PXP`"P` -M``"L#@`````````````-`@```````$(.$$(.&$$.($$.*(,%A@2,`XT"1PXP -M`!0```#<#@`````````````C`````````!0```#T#@`````````````X```` -M`````!0````,#P`````````````K`````````"0````D#P````````````!) -M`````````$$.$$@.&(,#A@)'#D`````4````3`\`````````````)P`````` -M```4````9`\`````````````2@`````````4````?`\`````````````>``` -M```````4````E`\`````````````+``````````\````K`\````````````` -M%@$```````!"#A"/`D4.&(X#10X@C01%#BB,!40.,$$..$0.@`&#!X8&```` -M`````$=#0SH@*$=.52D@,RXS+C,``"YS>6UT86(`+G-T`````````'4````2``$`0`D```````!X`@```````(,````2 -M``$`B`P```````!0"0```````)`````2``$`I!@````````>`````````)\` -M```2``$`0!D```````!:`````````*T````2``$`G!D```````#-```````` -M`+H````2``$`M#@```````!-`0```````-P````2``$`"#8```````!.`0`` -M`````/L````2``$`C!H```````"<`P````````D!```2``$`4"(```````"S -M`0```````!@!```2``$`*!X````````H!````````"X!```2``$`!"0````` -M```7`@```````$4!```2``$`!#H```````!=`0```````&\!```2``$`6#<` -M``````!9`0```````)8!```2``$`R#4```````!``````````*T!```2``$` -MB#4````````7`````````,%4````````=`````````*<&```2``$`F%4````` -M```=`````````+<&```2``$`O&$```````!8`````````-`&```2``$`8%`` -M```````-`````````.<&```2``$`<%`````````-`````````/T&```2``$` -MU$P```````#B``````````<'```2``$`G%\````````/`0```````!4'```2 -M``$`>%L````````6`````````"H'```2``$`@%```````````P```````#<' -M```2``$`L$\```````"P`````````%L'```2``$`N%@```````"^`@`````` -M`&P'```2``$`Y$X```````#*`````````'X'```2``$`%&(````````T`@`` -M`````*D'```2``$`2&0```````#L`0```````+P'```2``$`>&<````````T -M`P```````-0'```2``$`K&H````````-`@```````.T'```2``$`G%X````` -M``#^``````````L(```2``$`?%T````````=`0```````!4(```2``$`K&`` -M``````"V`````````#$(```2``$`N%4```````#^`@```````%@(```2``$` -MD%L````````#`````````&\(```2``$`9&$```````!8`````````(`(```2 -M``$`O&P````````C`````````(H(```2``$`X&P````````X`````````)0( -M```2``$`1&T```````!)`````````)P(```2``$`!&X```````!X```````` -M`*0(```2``$`D&T````````G`````````*X(```2``$`N&T```````!*```` -M`````+@(```2``$`?&X````````L`````````,<(```2``$`J&X````````6 -M`0```````.8(```1``4```````````"0`0````````!N=F5N971L:6(N8P!# -M;W5N=&5R+C``0V]U;G1E$1EFEN9P!!1$%05$527U)EF4`041!4%1%4E]'971296-E:79E475E -M=653:7IE`$%$05!415)?1V5T4W1A=&ES=&EC0!5 -M<&1A=&5296-E:79E1&5S8U)I;F=$871A`%5P9&%T951R86YS;6ET1&5S8U)I -M;F=$871A`%5P9&%T94U)25-T871U'1E4EN:713=&%T90!02%E?0VQO`!0:'E4:6UE`!02%E? -M5V%I=$9O41O4')E4F5S9710 -M41O4&]S=%)E5]3>GI4;U-Z`$-O;G9E0``````[0$````````+````#P`````````` -M````]0$````````+````$```````````````_0$````````+````$0`````` -M````````!0(````````+````$@``````````````#0(````````+````$P`` -M````````````%0(````````+````%```````````````)P(````````+```` -M%0``````````````+@(````````+````%@``````````````-@(````````+ -M````%P``````````````/@(````````+````&```````````````4`(````` -M```+````&0``````````````6`(````````+````&@``````````````7P(` -M```````+````&P``````````````9@(````````+````'``````````````` -M=`(````````+````'0``````````````?`(````````+````'@`````````` -M````F`(````````+````'P``````````````HP(````````+````(``````` -M````````K@(````````+````(0``````````````N0(````````+````(@`` -M````````````Q`(````````+````(P``````````````SP(````````+```` -M)```````````````V@(````````+````)0``````````````Y0(````````+ -M````)@``````````````\`(````````+````)P``````````````^P(````` -M```+````*```````````````!@,````````+````*0``````````````$0,` -M```````+````*@``````````````'`,````````+````*P`````````````` -M)P,````````+````+```````````````,@,````````+````+0`````````` -M````/0,````````+````+@``````````````2`,````````+````+P`````` -M````````4P,````````+````,```````````````7@,````````+````,0`` -M````````````:0,````````+````,@``````````````=`,````````+```` -M,P``````````````?P,````````+````-```````````````B@,````````+ -M````-0``````````````E0,````````+````-@``````````````H`,````` -M```+````-P``````````````JP,````````+````.```````````````M@,` -M```````+````.0``````````````P0,````````+````.@`````````````` -MS`,````````+````.P``````````````UP,````````+````/``````````` -M````-@@````````"````/0```/S_________8`@````````+````-@`````` -M````````:P@````````+````-P``````````````$@D````````"````/@`` -M`/S_________8@D````````"````$@```/S_________L@D````````"```` -M/P```/S_________SPL````````"````0````/S_________V0L````````" -M````00```/S_________[PL````````"````0````/S__________@L````` -M```"````0````/S_________.`P````````"````0````/S_________0@P` -M```````"````00```/S_________4PP````````"````0````/S_________ -MT@P````````"````%````/S_________%1,````````"````)0```/S_____ -M____118````````"````%````/S_________@A@````````"````$P```/S_ -M________LA@````````"````%````/S_________NA@````````"````10`` -M`/S_________A1D````````"````'P```/S_________DAD````````"```` -M1@```/S_________YAD````````"````'@```/S_________+!H````````" -M````1P```/S_________.2@````````"````2````/S_________[2H````` -M```"````10```/S_________!3(````````"````1P```/S_________4#(` -M```````"````1@```/S_________4C0````````"````1P```/S_________ -M>30````````"````1@```/S_________[S0````````"````20```/S_____ -M____1S8````````"````2@```/S_________=C8````````"````2P```/S_ -M________Q#8````````"````3````/S_________(#<````````"````!``` -M`(P!````````+3<````````"````!````(P!````````-S<````````"```` -M30```/S_________/3<````````"````!````(@!````````ES<````````" -M````3@```/S_________R3<````````"````3P```/S_________&#@````` -M```"````3````/S_________=#@````````"````!````)`!````````@3@` -M```````"````!````)`!````````BS@````````"````30```/S_________ -MD3@````````"````!````(P!````````\S@````````"````2@```/S_____ -M____(CD````````"````2P```/S_________<#D````````"````3````/S_ -M________RSD````````"````!````)0!````````V#D````````"````!``` -M`)0!````````XCD````````"````30```/S_________Z#D````````"```` -M!````)`!````````13H````````"````3@```/S_________>SH````````" -M````3P```/S_________RSH````````"````3````/S_________)CL````` -M```"````!````)@!````````,SL````````"````!````)@!````````/3L` -M```````"````30```/S_________0SL````````"````!````)0!```````` -M!3X````````"````/0```/S_________'4$````````"````/0```/S_____ -M____#D0````````"````1P```/S_________%D0````````"````-0```/S_ -M________(T0````````"````1@```/S_________D$0````````"````-@`` -M`/S_________P40````````"````1P```/S_________R40````````"```` -M-0```/S_________UD0````````"````1@```/S_________14L````````" -M````4````/S_________44L````````+````40``````````````74L````` -M```+````4@``````````````94L````````+````4P``````````````;4L` -M```````+````5```````````````=4L````````+````50`````````````` -M?4L````````+````5@``````````````A4L````````+````5P`````````` -M````C4L````````+````6```````````````E4L````````+````60`````` -M````````G4L````````+````6@``````````````I4L````````+````6P`` -M````````````K4L````````+````7```````````````$DP````````+```` -M70``````````````DDX````````"````5````/S_________J4X````````" -M````7@```/S_________NDX````````"````5````/S_________T4X````` -M```"````7P```/S_________)%`````````"````80```/S_________/5`` -M```````"````8````/S_________15`````````"````8@```/S_________ -MYE`````````"````8P```/S_________UE$````````"````9````/S_____ -M____75(````````"````7P```/S_________[5(````````"````80```/S_ -M________]U(````````"````8@```/S_________2E0````````"````90`` -M`/S_________650````````"````70```/S_________L50````````"```` -M90```/S_________\U0````````"````8P```/S_________!E4````````" -M````9@```/S_________&%4````````"````9````/S_________*U4````` -M```"````90```/S_________3U4````````"````9P```/S_________AE4` -M```````"````8@```/S_________IE4````````"````8@```/S_________ -M9U@````````"````8````/S_________,5D````````"````:````/S_____ -M____-EL````````"````9P```/S_________2EL````````"````7@```/S_ -M________S5L````````"````90```/S_________^&,````````"````8``` -M`/S_________,F0````````"````:````/S_________/6<````````"```` -M9P```/S_________46<````````"````7@```/S_________6VT````````" -M````:P```/S_________@FT````````"````;@```/S_________WVX````` -M```"````:P```/S__________6X````````"````2````/S_________!6\` -M```````"````;@```/S_________*F\````````"````;P```/S_________ -M5&\````````"````:P```/S_________9&\````````"````<````/S_____ -M____<6\````````"````;P```/S_________CF\````````"````<````/S_ -M________EF\````````"````;@```/S_________$0P````````"````0``` -M`/S_________```````````!````!0``````````````(``````````!```` -M`@``````````````6``````````!`````@```$`)````````B``````````! -M`````@```+@+````````H``````````!`````@```+P+````````N``````` -M```!`````@```,`+````````V``````````!`````@```!P,````````^``` -M```````!`````@```(@,````````.`$````````!`````@```-@5```````` -M<`$````````!`````@```*08````````D`$````````!`````@```,08```` -M````N`$````````!`````@```$`9````````V`$````````!`````@```)P9 -M````````$`(````````!`````@```&P:````````*`(````````!`````@`` -M`(P:````````8`(````````!`````@```"@>````````F`(````````!```` -M`@```%`B````````L`(````````!`````@````0D````````V`(````````! -M`````@```!PF````````\`(````````!`````@```&PF````````"`,````` -M```!`````@```,0F````````0`,````````!`````@```)PG````````8`,` -M```````!`````@```!@H````````@`,````````!`````@```*PH```````` -MF`,````````!`````@`````I````````L`,````````!`````@```#0J```` -M````T`,````````!`````@```$PJ````````\`,````````!`````@```&0J -M````````$`0````````!`````@```'PJ````````,`0````````!`````@`` -M`*@J````````4`0````````!`````@```-`J````````:`0````````!```` -M`@```-@J````````@`0````````!`````@```.`J````````J`0````````! -M`````@```.@N````````P`0````````!`````@```#@O````````V`0````` -M```!`````@`````P````````\`0````````!`````@```-PP````````&`4` -M```````!`````@```*0Q````````,`4````````!`````@```*PQ```````` -M<`4````````!`````@```(@R````````L`4````````!`````@```-@S```` -M````R`4````````!`````@```!PT````````\`4````````!`````@```)PT -M````````"`8````````!`````@```+0T````````*`8````````!`````@`` -M`'`U````````0`8````````!`````@```(@U````````6`8````````!```` -M`@```*`U````````<`8````````!`````@```,@U````````B`8````````! -M`````@````@V````````R`8````````!`````@```%@W````````"`<````` -M```!`````@```+0X````````2`<````````!`````@````0Z````````B`<` -M```````!`````@```&0[````````R`<````````!`````@```$0^```````` -M"`@````````!`````@```%Q!````````,`@````````!`````@```)A"```` -M````6`@````````!`````@```,Q#````````@`@````````!`````@```&!$ -M````````J`@````````!`````@```"!%````````T`@````````!`````@`` -M`*1&````````$`D````````!`````@```/1'````````4`D````````!```` -M`@```"Q)````````<`D````````!`````@```"A*````````B`D````````! -M`````@```"Q*````````J`D````````!`````@```,A*````````Z`D````` -M```!`````@```-1,````````$`H````````!`````@```+A-````````0`H` -M```````!`````@```.1.````````@`H````````!`````@```+!/```````` -ML`H````````!`````@```&!0````````R`H````````!`````@```'!0```` -M````X`H````````!`````@```(!0````````"`L````````!`````@```(!3 -M````````0`L````````!`````@```'!4````````:`L````````!`````@`` -M`'A5````````B`L````````!`````@```)A5````````J`L````````!```` -M`@```+A5````````Z`L````````!`````@```+A8````````*`P````````! -M`````@```'A;````````0`P````````!`````@```)!;````````6`P````` -M```!`````@```)1;````````F`P````````!`````@```'Q=````````V`P` -M```````!`````@```)Q>````````&`T````````!`````@```)Q?```````` -M4`T````````!`````@```*Q@````````B`T````````!`````@```&1A```` -M````J`T````````!`````@```+QA````````R`T````````!`````@```!1B -M``````````X````````!`````@```$AD````````0`X````````!`````@`` -M`#1F````````@`X````````!`````@```'AG````````L`X````````!```` -M`@```*QJ````````X`X````````!`````@```+QL````````^`X````````! -M`````@```.!L````````$`\````````!`````@```!AM````````*`\````` -M```!`````@```$1M````````4`\````````!`````@```)!M````````:`\` -M```````!`````@```+AM````````@`\````````!`````@````1N```````` -MF`\````````!`````@```'QN````````L`\````````!`````@```*AN```` -#```` -` -end diff --git a/sys/contrib/dev/nv/basetype.h b/sys/contrib/dev/nv/basetype.h deleted file mode 100644 index fd38148402..0000000000 --- a/sys/contrib/dev/nv/basetype.h +++ /dev/null @@ -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. *| -|* *| -\***************************************************************************/ - - -/*++ - -File: - - basetype.h - - -Abstract: - - This file contains the base type definitions used by the networking driver. - - -Revision History: - - SNo. Date Author Description - 1. 2/7/2000 AJha Created - -*/ - -#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 >= 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 -// Sets 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 = 0xA0 -// NV_BIT_SET(x, 1) -// Result: x = 0xA2 -#define NV_BIT_SET(bits, bitpos) ((bits) |= (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 = 0xAA -// NV_BIT_CLEAR(x, 1) -// Result: x = 0xA8 -#define NV_BIT_CLEAR(bits, bitpos) ((bits) &= (~NV_BIT(bitpos))) - -// NV_BIT_GET -// 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 = 0xAA -// NV_BIT_GET(x, 1) -// Result: x = 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 = 0xFEDCBA98 -// ulVal = NV_BIT_GETVALUE(ul32, 3, 0) : Gets value from Bit position 3 to 0 -// Result : ulVal = 8 -#define NV_BIT_GETVALUE(ulOrigValue, bitposHi, bitposLow) (((ulOrigValue) >> (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 = 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) = ((((ulOrigValue) & (~ ((0xFFFFFFFF >> (31 - (bitposHi))) & (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_ diff --git a/sys/contrib/dev/nv/drvinfo.h b/sys/contrib/dev/nv/drvinfo.h deleted file mode 100644 index 41c659a762..0000000000 --- a/sys/contrib/dev/nv/drvinfo.h +++ /dev/null @@ -1,190 +0,0 @@ -/***************************************************************************\ -|* *| -|* Copyright 2001-2003 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. *| -|* *| -\***************************************************************************/ - -/* - * This file contains the header info common to the network drivers and applications. - * Currently, these applications include ASF, co-installers, and qstats. - * - * - */ - -#ifndef _DRVINFO_H_ -#define _DRVINFO_H_ - -// Switch to byte packing, regardless of global packing specified by the compiler switch -#pragma pack(1) - -////////////////////////////////////////////////////////////////// -// For the ADAPTER_GetStatistics call used by qstats. This -// 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_COLISION_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 -// 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_COLISION_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; - - // - // 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() - - -#endif // #define _DRVINFO_H_ - - diff --git a/sys/contrib/dev/nv/i386/nvenetlib.o.uu b/sys/contrib/dev/nv/i386/nvenetlib.o.uu deleted file mode 100644 index 0869d08022..0000000000 --- a/sys/contrib/dev/nv/i386/nvenetlib.o.uu +++ /dev/null @@ -1,868 +0,0 @@ -begin 644 nvenetlib.o -M?T5,1@$!`0````````````$``P`!``````````````#<@````````#0````` -M`"@`"P`(`````````````````%575E.#[""+="0TBVPD.(L^QT4``````,=$ -M)!B8%@``QT0D%`````"+!XD$)(U$)!")1"0$_U<$N@$```"%P`^$*00``(M< -M)!")6P2+1"04B4,(BT0D&(E##(M6#(M&3(M.1(72B8-X%@``N`4````/1<*) -M@S@6``"+1A")BW`6``"%P(F#/!8``'46ND````"#^0&X@`````]%T(F3/!8` -M`(M&%(7`B8-`%@``=1:Z``$``(/Y`;@`!```#T70B9-`%@``BT8`"B8,D`@``,<")DQ0"``")@R`"``"+!XD$)(V# -M'`(``(E$)`3_5P2Z`@```(7`=*Z+@^@!``"+DQP"``#!X`*)DR@"``")DRP" -M``"-5!#\@\!`B8.@%```N`$```")DS`"``")@YP4``"+!XD$)(V#F!0``(E$ -M)`3_5P2Z`@```(7`#X16____BX.8%```,?;'!+``````1H/^#W;SBY/H`0`` -M,?8YUG,8BX.8%```9L=$L$"!`$:+D^@!```YUG+H,?:-M@````"-O"<````` -MB?#!X@/!X`4!V+T!````B9#L````C9#@````B:CH````!>0```!FQT(0`@!F -MQT(20`"+%XE$)`2)%"3_5PR%P`^$C@(``$:#_@=W"(N3Z`$``.NLBX.T%``` -MN0$```")BTP#``")@U`#``"+!XD$)(V#2`,``(E$)`3_5P2Z`@```(7`#X2$ -M_O__@[MP%@```;J`````N$`````/1<*Z`0```(F#"`,``,'@`XF#%`,``+@" -M````9HF#&`,``+A`````B9,0`P``9HF#&@,``(L'B00DC8,,`P``B40D!/]7 -M#+H"````A<`/A!_^__^+@PP#```Q]HN3"`,``(F#+`,``#G6C430^(F#,`,` -M`',:BY,L`P``BX-,`P``B03R1HN3"`,``#G6)!"2+@S@#``") -M1"0$BX-``P``B40D"/]7%#NS"`,```^"``$``(F;N````+@`"```O3(```") -M@V0$``"^,@```+FX"P``B:O$````N`````"Z8`D``(F#O````+@`````B8/` -M````N/0!``")@]0```"+@WP6``")L\@```")B\P```"%P(F3T````'0&B8/$ -M````BX.`%@``A8%```B40D!/]5"#'2 -MB9>8%```Z7G___^+10`Q]C';B00DC8?P`0``B40D!/]5$(F?&`(``#'`B8?P -M`0``,<")AQ`"``")MQ0"``#I-____XM%`#';B00DC8<<`@``B40D!/]5"#'` -MB9\<`@``,!8``(7)=!V+AL`````E____[XG"@:!@``@_@W#X);!@``@_@X=AF#Z%:#^`$/ATH& -M``"-M@````"-O"<`````N`0````QV[K__P``B89$`0``N?____\QP(F&L``` -M`(F>M````(F.N````(F6O````,=&"`````"+A_0!``")A@`!``"+AQ`#``") -MA@0!``"+AP@#``"+E^@!``!(2L'@$"4``/\#@>+_`P``"<*X"@`!`(F6"`$` -M`(F&$`$``(._#R-M@````"-OP````"+10!#QT0D!`4```")!"3_51B+AC`!``"%P'@4@?L/ -M)P``=MR-M@````"-OP`````QP(F&A`$``+@?````B8:``0``N---8A#'!O\! -M``"+EHP!``"!XO\```"-%)*-%)+!X@SWXL'J!L'B`HF79`0``(N>P````('C -M````$`^$:P0``+WH`P``NP(```")KR@6``"+E]P```"+`HD$)(M$)"")1"0$ -M#[9$)!^)1"0(#[9$)!Z)1"0,_U(H@'PD'0`/A?H#``"+E]P```"+`HE<)`B) -M!"2+1"10B40D!/]2!(E$)!B%P'04@WPD&`RX!0```'0(@\0H6UY?7<.X/@\[ -M`+TH`'\`B8:`````BX:(````B8:(````B:Z,````BY^D%```BX@0,-!U`K`(@[]P%@```0^$(P,``+H(?P``B9:< -M````N`\'%@")AJ````"X%@```(F&I````(N'-!8``(7`#X7;`@``BX=`!``` -MB8=$!```N`(```")AS0$```QP(F'4`0``(N'3`0``(E&#,=&"`,```"+AVP$ -M``#!X!@E````'PT```0`B8:(`0``B3PDZ/S___^%P'41BX:(`0``#0``$`") -MAH@!``"]!0$``+L(````N7!W``")KHP!``")GH0!``")C@`"``"+AFP"```E -M`(#__V:%P'01BX9L`@``#0"```")AFP"``"Z'P```(F6@`$``+K_`0``BX>4 -M%@``A<"XOP$```]%T(D6BX9L`@``#0`!``")AFP"``"+1"10A'_`/S_@\H"@! -MX?\`_/^!R0!T``#KN8'A_P#\_X/*`8')`"T``.NHBX:`````@^#]B8:````` -MZ5#___^+AS@$``")AT0$```QP(F'-`0``.DC_?__#[;`#0!_``")AIP```#I -MU?S__XF6D````.F(_/__BY?<````BP*)7"0(B00DBT0D4(E$)`3_4@B)1"08 -MN`4```"+5"08A=+I!/S__[ED````NP$```")CR@6``#ID/O__XN&,`$``#'; -MA<`/B!W[__^-M@````"-O"<`````BT4`0\=$)`0%````B00D_U48BX8P`0`` -MA<`/B/#Z__^!^P\G``!VV.GC^O__N!``(`")ACP!``#I9_K__XM>-('C`/__ -M_XE>-(M%`,=$)`0$````B00D_U48BT0D%(F&J````(M$)!")AJP```#IC?G_ -M_SW?````#X2"^?__/=\```!W##V,````=;'I;_G__SWF````#X1D^?__/<,! -M``#KYXN&J````(E$)!2+AJP```")1"00BUXT@CX__\]WP`` -M``^$W?C__SW?````=PP]C````'7"Z+ -M1"08,=L[AP@#```/@Q?X__^-M@````"+CRP#```/MT39!B4`@/__9H7`=2*+ -MAT0#``#'!)@`````BY'+`0``$AFB439 -M!(N'+`,``&;'1-@&`(!#.Y\(`P``X%```@\@"B8-$`0``@[]P%@```71MBTPD&#';BX$P -M`0``AX%```@\@!B8-$`0`` -M@\0<,,N+3"040XL!QT0D!`4```")!"3_ -M41B+5"08BX(P`0``A#J- -M=@"-O"<`````BT4`B?*)!HM%!&:)?@:_`(```$AFB48$@^X(BTPD+#N1$`(` -M`'0J@^T(2WG3C78`BUPD+(MT)!2+@[@4``"#R`&)AD0!```QP(/$&%M>7UW# -MB[$4`@``Z\Z+@2P"``")@3@"``#I:O___[@$````Z]C'1"00`````(M$)"S' -M1"0,`````(N0I!0``(72#X6-`@``BX"H%```A+@S@"``").(N3 -M.`(``#N3,`(``(U"!(F#.`(```^$EP$``(M,)#"+5"0LBQD/MX(\`@``2XUL -MV10-`8#__X7;#[?X#XB2_O__#[9,)`O`X06(3"0#C;8`````BT0D#(7`=$6+ -M5"0LB?&+@IP4``")!HM$)#`/MU`$9HE^!K@[````*=!FB48$@^X(BU0D+#N* -M$`(```^$%`$``,=$)`P`````OP"```"+1"00AP!``"+$SG0 -M#X9\`0``*=")WHM;"(F![`$``(L&B0.+1"0PBRZ+N1@"``"+="0PBX@0`@`` -MBY;H`0``*<_!_P,![TJ-1_\AT(TTP8ES!(M4)#"+@N@!``!((<>+@A`"``"- -M!/B)@A@"``"!8`3___\?BX(X`@``B1B+3"0PBY$X`@``.Y$P`@``C4($B8$X -M`@``#X3A````BUPD-(M$)#"+.XN0/`(``$^!R@```*")5"0(A?^-;/L4>&*) -M]HM%`#';A?^)!G4=BTPD-(M!$(L0]\(!````=':+6`3!XPZ!RP```!"+502) -MV(M,)`@E`,#__TH/M]()T(GR"@#P>H$"<+!XQ:#X@&!XP````C! -MXAH)T^EL____BX$L`@``B8$X`@``Z0[___^X!````.NNQT0D%`````"+1"0P -MQT0D$`````"+D*04``"%T@^%"@,``(N`J!0``(7`=%"%P'03@'PD#P"X`@`` -M``]$1"04B40D%(M$)!2%P'0QBU0D-(-Z!#MW)XM,)#"+@:P4``"%P'09_T0D -M%,=$)!`!````C;8`````C;PG`````(M<)#2+1"04BW0D,(LK`>@IANP!``"+ -MAA@"``"+3"0TB40D!(N>$`(``(M4)!2+.2G8BX[H`0```?K!^`,!T$F-4/\A -MR"'*C03#C333BUPD,(F#&`(``(%@!/___Q^+1"0TBU0D-(M8"(L*BT0D%(ES -M!`'(B0.+3"0PBX$X`@``B1B+D3@"```[D3`"``"-0@2)@3@"```/A`("``"+ -M7"0TBT0D,(L[BY`\`@``3X'*````H(E4)`B%_XUL^Q0/B-0````/MDPD#\#A -M!8A,)`.+1"00A@#P>H$"<+!XQ:#X@&!XP````C! -MXAH)T^EZ____BT4`B?*#P`R)!HM%!(/H#0^WV(M$)`@)PXE>!(/N"(M,)#"+ -M@1`"```YPG1Z*40D!(M<)##!;"0$`XN#L!0``(N+F!0``(M4)`3!Z`@D#PA$ -M)`/!X@(!T0^V1"0#@\%`B$$"#[:#L!0``(A!`XGPB[N<%```QT8$`P``@`'Z -M@\)`B1:#[@@[@Q`"``!T$8M%`,=&!`L``(")!ND7____B[,4`@``Z^>+L10" -M``#I>____XNR%`(``.EU_O__BX$L`@``B8$X`@``Z>W]___'1"04`@```.D* -M_?__D(GV55=64X/L"(M\)!R+1"0@BQ>)5"0$BV@0BU@$BX?L`0``BU4`*=") -MA^P!``"+10")`XNW&`(``(N/$`(``(M%`(N7Z`$``"G.P?X#`<9*C4;_(="- -M#,&)2P2+AQ@"``")!"2+A^@!``!((<:+AQ`"``"-!/")AQ@"``!FQT`&``"+ -MAS@"``")&(N7.`(``#N7,`(``(U"!(F'.`(```^$!@$``(MU`$Z)\,'@!(U4 -M*`@/MX<\`@``#0&`__^%]@^WV'@\C;8`````C;PG`````(-Z"`UV2HL"B0$/ -MMT((9HE9!KL`@```2&:)002)R(/I"#N'$`(``'0?@^H03GG1BT0D!+H!```` -MB9!$`0``,<"#Q`A;7E]=PXN/%`(``.O9B6+%"2)EQ@" -M``"+ES@"``"+10`!A^P!``"-0OP[ERP"``")AS@"``!T![@&````ZX6+AS`" -M``")AS@"``#KZXN/$`(``.NRBX\0`@``ZX2+ARP"``")AS@"``#IZ?[__XGV -M55=64X/L$(ML)"2+5"0HBT4`B40D#(M$)"B+4A")%"2+"HM8!(N%[`$``"G( -MB87L`0``BP*)`XNU&`(``(N-$`(``(LZBY7H`0``*<[!_@,!_DJ-1O\AT(T, -MP8E+!(N5&`(``(E4)`B+A>@!``!((<:+A1`"``"-!/")A1@"``"!8`3___\? -MBX4X`@``B1B+E3@"``"-0@2)A3@"```[E3`"```/A'T!``"+'"2+,TZ)\,'@ -M!(U\&`B+A3P"```-````H(7VB40D!'AKD(VT)@````"#?P@-#X:R````BP>) -M`0^W1PA(A?8/M]!U)8M<)"B+0PR+&/?#`0```'1=BT`$@>+_/P#PP>`."<*! -MR@```!"+7"0$B<@)VHE1!(/I",=$)`0```"`.X40`@``=".#[Q!.>9V+7"0, -MBX-$`0``@\@!B8-$`0``,<"#Q!!;7E]=PXN-%`(``.O5]\,"````=*^)V,'@ -M%B4````(@>+____W"<*)V,'H`X'B____^\'K!`G#@^,!P>,:"=KK@XG(@\$( -M.X44`@``='\[C1@"``!T*^L-D)"0D)"0D)"0D)"0D(%A!/___Q^)R(/!"#N% -M%`(``'1,.XT8`@``=>2+1"0(B848`@``BQ0DBP(!A>P!``"+E3@"```[E2P" -M``"-0OR)A3@"``!T"K@&````Z4;___^+A3`"``")A3@"``#KZ(N-$`(``.NL -MBXT0`@``Z7;___^+A2P"``")A3@"``#IBX-0`@``BY-4`@``B48BB58F -MBX-@`@``BY-D`@``B48JB58NBX-8`@``BY-<`@``B48RB58VBX-P`@``BY-T -M`@``B48ZB58^BX-X`@``BY-\`@``B49"B59&C;8`````BX3+@`(``(N4RX0" -M``")1,Y*B53.3D&#^1!RY(N#9`,``(N3:`,``(F&T@```(F6U@```(N#5`,` -M`(N36`,``(F&V@```(F6W@```(N#7`,``(N38`,``(F&X@```(F6Y@```(N# -M?`,``(N3@`,``(F&Z@```(F6[@```(N#A`,``(N3B`,``(F&\@```(F6]@`` -M`(N#;`,``(N3<`,``(F&^@```(F6_@```(N#=`,``(N3>`,``(F&`@$``(F6 -M!@$``(.[9!8```(/A,@"``"X_____[W_____O_____^)ABH!``"Y_____[K_ -M____B:[*````N/____^]_____XF&+@$``+C_____B88R`0``N/____^)AC8! -M``"X_____XF&.@$``+C_____B88^`0``N/____^)AEH!``"X_____XF&7@$` -M`+C_____B;[.````O_____^)CB(!``"Y_____XF6)@$``+K_____B89B`0`` -MN/____^)KDH!``")ODX!``")CE(!``")EE8!``")AF8!``"+@W`$``"+DW0$ -M``")AFH!``")EFX!``"+@W@$``"+DWP$``")AG(!``")EG8!``"+@X`$``"+ -MDX0$``")AGH!``")EGX!``"+@X@$``"+DXP$``")AH(!``")EH8!``"+@Y`$ -M``"+DY0$``")AHH!``")EHX!``"#NW`6```"#X2X````N/____^]_____[__ -M____B8;*`0``N_____^Y_____XFNT@$``+C_____NO____^)ALX!``"]____ -M_[C_____B8;F`0``N/____^)ANH!``"X_____XF&[@$``+C_____B8;R`0`` -MN/____^)OM8!``"______XF>V@$``+O_____B8;V`0``N/____^)CMX!``") -MEN(!``")AOH!``")KOX!``")O@("``")G@8"``!9,`0`` -MBX,D!```BY,H!```B89B`0``B99F`0``Z0G]__^+@X`"``"+DX0"``"+NPP$ -M```#@X@"``"+JQ`$```3DXP"```#@Y`"```3DY0"``")@T`"``"+@U`"```# -M@V`"``")DT0"``"+DU0"```3DV0"```#@U@"```3DUP"```#@V@"```3DVP" -M```#@W@"```3DWP"```#NQ0$``")@T@"```3JQ@$```#NQP$``")DTP"```3 -MJR`$``")NU0#``"+DX`#``"+@WP#```#@VP#``")JU@#```3DW`#```#@W0# -M```3DW@#```#@Y0#```3DY@#```#@YP#```3DZ`#```#@X0#```3DX@#```# -M@_0#```3D_@#```#@_P#```3DP`$```#@P0$```3DP@$``"#NW`6```"B8-< -M`P``B9-@`P``#X6M^?__BX.T`P``BY.X`P```X.\`P``$Y/``P```X/$`P`` -M$Y/(`P```X/,`P``$Y/0`P```X/4`P``$Y/8`P```X/<`P``$Y/@`P```X/D -M`P``$Y/H`P```X/L`P``$Y/P`P``*?B)@R0$```9ZHF3*`0``.DX^?__BT0D -M!(M4)`B+`,<"`0```(N`:`(``*D```!`=`;'`@D```"I````!'0#@PH$J0`` -M``)T`X,*`L="!`\````QP,=""`\```#'0@P/````QT(0!0```,.)]HM$)`2+ -M5"0(BPB+@6P"``"#X`.%P(D"#X6Q````QP(!````BX$``@``QT($`````*D! -M````=`?'0@0!````J1````!T!(-*!`*I``$``'0$@TH$!*D`$```=`2#2@0( -MQT((`````*D"````=`?'0@@!````J2````!T!(-*"`*I``(``'0$@TH(!*D` -M(```=`2#2@@(QT(,`````*D$````=`?'0@P!````J4````!T!(-*#`*I``0` -M`'0$@TH,!*D`0```=`2#2@P(,<##@_@!=!>#^`(/E<`/ML"-!(4$````B0+I -M.?___\<"`@```.DN____D(GV5E.+1"0,BUPD$(LPBTL$BX8``@``)8B(__^) -MPH/*`??!`0````]%PHG"@\H0]\$"````#T7"B<*!R@`!``#WP00````/1<*) -MPH'*`!```(/A"(M+"`]%PHG"@\H"]\$!````#T7"B<*#RB#WP0(````/1<*) -MPH'*``(``/?!!`````]%PHG"@PXGV@^P4,<")7"0$ -MBUPD&(ET)`B)?"0,B6PD$(LSBXO<````BY;`````@>(````0=12+7"0$BW0D -M"(M\)`R+;"00@\04PXL!B00D_U$PA<")QW7>BY/<````BP*)!"3_4AB+D]P` -M``")Q8L"B00D_U(4BY;`````]\(````0B<%T.(/B_#T`X?4%=#4]@):8`'0. -MB="#R`*!^0#*FCL/1-")T('B__[__PT``0``@_T"#T3"B8;`````B?CIO;D+@/````PXGV55=64X/L$(M$)"2+?"0HBS"+%XN>C````(/CWX'+ -M@````(G8@\@@]\(!````#T78]\("````=%>-5PJ#RR"-;P2)5"0,BX:4```` -M@^`!B40D"`^%?````(M'!(/(`8F&L`````^W102)AK0```"+1PJ)AK@```"+ -M5"0,#[="!(F&O````(M$)`B%P'4NBQ?WP@0```!T"8/+(('C?____XG8@^#? -M@^((#T78,<")GHP```"#Q!!;7E]=P\=$)`0!````BT0D)(D$).C\____Z[R- -M=@#'1"0$`0```(M$)"2)!"3H_/___^EK____D(GV55=6OO____]3,=N#[!2+ -M1"0HBWPD,(N0V````(E4)!"+`(E$)`R-M"8`````C;PG`````(/[_XU#'XG9 -M#T_#N@$```"#X1_!^`73XH44AW0M#[9$'Q"Z!P```#'P#[;`C70F`*D!```` -M#X3E````T>@U((.X[4IYZ\'N"#'&0X/[?WZPBTPD#+@```$`]]:+B0`"``") -M3"0(#[9,)"S3X(5$)`AT$HM4)`CWT"'0BU0D#(F"``(```^V3"0LO0````$Q -MV]/EBU0D#(N"``(``(7%=!J+3"000XL!QT0D!#(```")!"3_41B#^V-^V(M4 -M)"R+3"0,C022C02!B;`$`@``BQ>)D`@"``"+5P2)D`P"``"+5PB)D!`"``"+ -M5PR)D!0"``"X```!``^V3"0LT^"%1"0(=`Z+5"0(BT0D#(F0``(``(/$%#'` -M6UY?7<.0C70F`-'HZ1O___^04XM$)`B+3"00BQB%R8N3``(``'08#[9,)`RX -M```!`-/@"<*)DP`"```QP%O##[9,)`RX```!`-/@]]`APNODD(/L&(E\)!"+ -M?"0X/X`7Y/@_@"=`F#Q`PQP%M>7\,QVXG1.Y[H`0``V)JU`$``"#Q!`QP%M>7UW# -MBX,X!```B8-$!```,<")@S0$``#KV(N%@`$``+K_____@X.0!````8.3E`0` -M``")E8`!``")'"2)1"0$Z/S____I;?___Z$(````0#WH`P``HP@```!UGHD< -M)#'_Z/S___^)/0@```#KC)"#@X`$```!@Y.$!````(D<).C\____`<;I^_[_ -M_XUV`(.#<`0```&#DW0$````B1PDZ/S___^)QNF]_O__D(GV55%]G0(.[LX%@``P````!="0(1X7V=`@[NS@6``!R -MM\=%`/____^+BY06``"%R0^%GP```/=$)`Q`````=66#NS0$```"="F+@T`$ -M``")@T0$``"X`@```(F#-`0``#'MB:M0!```@\00,,`,```^$=P,``(N&+`,``(G:*<*)T(N61`,``-'X -MBSP0A?\/A'`!```/MU,&B="#X`%FA<")T70KB=`E`$```&:%P`^$J`$``(G0 -M)8)_``!F/0!@#X27`0``9CT`1`^$C0$``(7_#X0M`0``QT0D+`````")R(/@ -M`6:%P`^$_P```(.^9!8```(/A/(```"#AEP#```!@Y9@`P````^W4P:)T(/@ -M`F:%P'02@X9D`P```8.6:`,````/MU,&B=`E`"```&:%P'02@X9L`P```8.6 -M<`,````/MU,&B=`E`!```&:%P'02@X9T`P```8.6>`,````/MU,&B=`E``@` -M`&:%P'02@X9\`P```8.6@`,````/MU,&B=`E``0``&:%P'02@X:$`P```8.6 -MB`,````/MU,&B=`E``(``&:%P'02@X:,`P```8.6D`,````/MU,&B=`E``$` -M`&:%P'0.@X:4`P```8.6F`,```"`>P8`>0Z#AIP#```!@Y:@`P```(E\)#P/ -MMX:T%```9L=#!@"`@^@Q9HE#!(M$)"R%P'5`QT0D+`$```"+AC0#``")PP^W -M0`8E`(#__V:%P'40BU0D,#N6/!8```^"(O[__XM$)#"!Q*0```!;7E]=PXUV -M`(DT)(E<)`3H_/___^NZB?:#OF06```"=!*#AE0#```!@Y98`P````^W4P8/ -MMTL$B=`E!"```&8]!"`/A%,!``")3"0XB7PD/(N.I!0``(7)=0Z+EJ@4``"% -MT@^$"`$``,=$)"0`````C7PD-,9$)"L`BT4`B7PD!(D$)/]57&:!>`R!`(G! -M=#4QR8M$)"2%P`^%(O___XM%`(E,)`R)?"0$QT0D"`$```")!"0/MD0D*XE$ -M)!#_52CI^_[__XN&I!0``(7`#X20````#[9!#HA$)!2#X`_!X`@/ME$/"=`Y -MAK`4``!T*0^WAK04``!FQT,&`("#Z#%FB4,$QT0D+`````#'1"0D`0```.EZ -M____BX:H%```ARD````B[0D -MN````(NNV````,=$)"P!````QT0D,`````"+GC0#``#K#9"0D)"0D)"0D)"0 -MD)#_1"0PC4,(B88T`P``.YXP`P``#X1G`P``BX8L`P``B=HIPHG0BY9$`P`` -MT?B+/!"%_P^$,0$``(M3!/?"````((G1=![WP@```$`/A&0!``")T"4``/0! -M/0````$/A%(!``"%_P^$_@```,=$)"P`````@>$````@#X3*````@[YD%@`` -M`@^$O0```(.&7`,```&#EF`#````BU,$]\(````!=!&#AFP#```!@Y9P`P`` -M`(M3!/?"``"``'01@X9T`P```8.6>`,```"+4P3WP@``0`!T$8.&?`,```&# -MEH`#````BU,$]\(``"``=!&#AH0#```!@Y:(`P```(M3!/?"```0`'01@X:, -M`P```8.6D`,```"+4P3WP@``"`!T$8.&E`,```&#EI@#````BU,$@>(```0` -M=`Z#AIP#```!@Y:@`P```(E\)#S'0P0`````#[>&M!0``(/H,0^WP`T```"` -MB4,$BT0D+(7`=3;'1"0L`0```(N&-`,``(MX!(G#A?]X$(M4)#`[ECP6```/ -M@FC^__^+1"0P@<2D````6UY?7<.)-"2)7"0$Z/S____KQ(.^9!8```)T$8.& -M5`,```&#EE@#````BU,$#[=#!"7_/P``]\(````!=`R!X@````)T!$@/M\") -M?"0\C7PD-(E$)#B+10#'1"0(`0```(D$)(U$)$2)1"0$_U44BT,$P>@:)`>( -M1"1$#[;`@X3&M`,```&#E,:X`P```(N&I!0``(7`=0Z+AJ@4``"%P`^$#`$` -M`,=$)"0`````QD0D*P"+10")?"0$B00D_U5<9H%X#($`B<%T-3')BT0D)(7` -M#X7O_O__BT4`B4PD#(E\)`3'1"0(`0```(D$)`^V1"0KB40D$/]5*.G(_O__ -MBX:D%```A<`/A)@````/MD$.B$0D%(/@#\'@"`^V40\)T#F&L!0``'0QQT,$ -M``````^WAK04``"#Z#$/M\`-````@(E#!,=$)"P`````QT0D)`$```#IA;7E]=PX.[9!8```(/A(0```"#@T@"```!@Y-,`@````^W -M40:)T"4`(```9H7`=!*#@U`"```!@Y-4`@````^W40:)T"4`$```9H7`=!*# -M@U@"```!@Y-<`@````^W40:)T"4`"```9H7`=!*#@V`"```!@Y-D`@````^W -M40:)T(/@"&:%P'0.@X-H`@```8.3;`(```"+!XET)`2)!"2+@TP6``#I&O__ -M_XN#+`(``(F#-`(``.EN_O__B?97,?]64X/L#(M<)!R+L]@```"+DS0"```[ -MDS`"``"-0@2+"HF#-`(```^$20$``(L!BU$$`8/L`0``]D('0`^%J````(.[ -M9!8```)T5X.#0`(```&#DT0"````BT($P>@3@^`/@X3#@`(```&#E,.$`@`` -M`(M"!*D````"=!&#@W`"```!@Y-T`@```(M"!*D````!=`Z#@W@"```!@Y-\ -M`@```(L&B4PD!(D$)(N#2!8``(E$)`A'_U8DBX,T`@``.X,X`@``B<)T&(L` -MBT`$BT@$A)!"2)\(/@!(E$)`3_5RR+DU0$``"%]G09@\H$B9-4!``` -MBUPD%(MT)!B+?"0<@\0@PX/B^^OEB1PDQT0D!`,```#H_/___XD<).C\____ -MB1PDQT0D!`,```#H_/___^N=D(/L'(ET)!"+="0@B5PD#(E\)!2);"08BQ[' -M1"0(`````(N#B`$``*D``!``=1&+@X@!```-```0`(F#B`$``(N&W````(L0 -MB10DC50D"(E4)`3_4!R+1"0(A)!8``.D7____N""`X`^!Y_\`_/^#R@*) -M@SP!``"+@SP!``"!SP!_``#KDX'G_P#\_X'/`'0``.N%@>?_`/S_@\H!@<\` -M+0``Z7'___^+@X````"#X/WI'O___SN&6`0```^$)/___^D3____D(GV55=6 -M4X/L$(ML)"2+1"0PBW0D*(M=`,=$)`P`````QP``````B[W8````BP?'1"0$ -M`````(D$)(N%:`0``(E$)`C_5U2X#P```(F#@`$``(N#B`$``*D``!``=!G' -M1"0,`0```(N#B`$``"7__^__B8.(`0``BX.0`0``)0"`__]FA<`/A=<```"+ -M5"0LP>8%@>;@`P``@^(?"?(Q]HF3D`$``('*`(```#NU9`0``',,B=`E`(#_ -M_V:%P'5H@>(`@/__,?9FA=)U'HN#@`$``#'V@^`!=1&+@Y0!``"^`0```(M4 -M)#")`HM$)`R%P'01BX.(`0``#0``$`")@X@!``"+!\=$)`0`````B00DBX5H -M!```B40D"/]76(/$$(GP6UY?7<.+!X/&"L=$)`0*````B00D_U<8.[5D!``` -MBY.0`0``#X-S____B=`E`(#__V:%P'7/Z6+___^0C70F`+@`@```B8.0`0`` -MBP?'1"0$,@```(D$)/]7&.D)____55=64X/L$(ML)"2+?"0HBUT`QT0D#``` -M``"+M=@```"+!L=$)`0`````B00DBX5H!```B40D"/]65+D/````B8N``0`` -MBX.(`0``J0``$`!T&<=$)`P!````BX.(`0``)?__[_^)@X@!``"+@Y`!```E -M`(#__V:%P`^%PP```(M$)##!YP6!Y^`#``")@Y0!``"+1"0L@^`?"?@Q_XG" -M@+DRP# -M``")\"G0BY-$`P``T?C'!!``````BX-,`P``B0:#NW`6```!=!K'1@0````` -MBX,L!```2`T```"`B48$,<#KF`^W@RP$``!FQT8&`(!(9HE&!.OHD#'`PY"# -M["B)="0@BW0D,(E<)!R+7"0LB7PD)(L.B[O8````.XM,`P``='F+DRP#``") -M\"G0BY-$`P``T?B+%!")3"00BX.T%```B40D%&;'1@8``&;'1@0``(L'B50D -M"(D$)(U$)`R)1"0$_U<@B?"+NRP#``"+DT0#```I^-'XQP00`````(N#3`,` -M`(D&N`$```"+7"0`2)-"2+0T2);"0,QT0D"`(```")1"0$_]>Z -M!@```(7`#X3'_O__BT0D$"7_`P``P>`&B40D$(M$)!!FB8,$`P``B30DBT-$ -MB6PD#,=$)`@#````B40D!/_7N@8```"%P`^$A_[__XM$)!!FB8,&`P``BT0D -M$"4`_```P>@*B40D$(M4)!`/MX,$`P``"=`QTF:)@P0#``#I4?[__Y"Z"``` -M`.E&_O__B?975E.#[""+7"0PBT,XA=N+>`B+,'1*BTM0A7\.)-"2+0T3'1"0(!````(E$)`0/M\*) -M1"0,_]?KLXDT)(M#1,=$)`@)````B40D!`^WPHE$)`S_U^N*D(L3BP*)3"0$ -MB00D_U)`BQ.+`HD$)(M#4(E$)`3_4C3'0U``````Z5+___^055=64X/L%(M< -M)"B+?"0LBT,XBU`$BV@(BS"+1"0PB8,``P``BP>%P`^50V3'!P````#&0V4! -MB30DBT-$QT0D"`````")1"0$C40D$(E$)`S_T@^WD_P"``!FA=(/A;(````/ -MMY/^`@``9H72=7C'0U0$````BTM0A%0##Y;`#[;` -MPY"+1"0$QT!4`````#'`PXGV@^PTB5PD)(M<)#B);"0P,>V)="0HB7PD+(M# -M.(M0"(MX!(E4)!2+,,=$)!``````BT-4@_@!#X3'`0``@_@!#X(Y`0``@_@" -M#X1_````@_@#=!2+7"0DBW0D*(M\)"R+;"0P@\0TPXDT)(M#1,=$)`@!```` -MB40D!(U$)!B)1"0,_]>%P'05]D0D&`1U#HM#.(M36#M0&'(,C78`QT-4!``` -M`.NNC8*6````BQ.)0UB+`HD$)(M#4,=$)`B6````B40D!/]2/(7`=-'KAHDT -M)(M#1,=$)`@!````B40D!(U$)!B)1"0,_]>%P'2O]D0D&"!U"XM#.(M36#M0 -M%');B30DBT-$QT0D"`````")1"0$C40D((E$)`S_UX7`#X1Y____]D0D(0)U -M!_9$)!@@=1S'0U0#````C40D'(D<)(E$)`3H_/___^D&____B1PDZ/S____I -M0O___XV")@(``(L3B4-8BP*)!"2+0U#'1"0()@(``(E$)`3I1O___XD<).C\ -M____A<`/A0[___^)-"2+0T3'1"0(`````(E$)`2-1"0@B40D#/_7A<`/A.K^ -M__^)-"2+1"0@#0"```")1"0@BU-$B40D#,=$)`@`````B50D!/]4)!2%P`^$ -MN_[__\=#5`$```"+$XL"B00DBT-0QT0D"!("``")1"0$Z<'^__^)-"2+0T3' -M1"0(`````(E$)`2-1"0@B40D#/_7A<`/A'7^__^+5"0@B=`E`(#__V:%P`^% -MP0```(G0)0"`__]FA<`/A5'^__^)'"3H_/___X7`#X5!_O__]T-@____`'4I -MQT-4`@```(L3QT-8(`,``(L"B00DBT-0QT0D""`#``")1"0$Z3?^__^)-"2+ -M0T3'1"0(`````(E$)`2-1"0@B40D#/_7A<`/A.O]__^)-"2+1"0@)?]O__^) -M1"0@BU-$B40D#,=$)`@`````B50D!/]4)!2%P`^$O/W__XD<)(U$)!R)1"0$ -MZ/S____I7OW__XVT)@````"+`XL0QT0D!#(```")%"3_4!B-5"0@B30DBT-$ -MB50D#,=$)`@`````B40D!/_7A<`/A&K]__]%@_T4="J+0SB+5"00.U`0=Q6+ -M5"0@B=`E`(#__V:%P'6HZ>+^__^+5"0@Z=G^____1"00,>WKSHGV55=64X/L -M&(M\)"R-7"04BT7_`(``,='5`````!FA=)U7P^WE_X"``!FA=)U*XD\)(M'1(E$ -M)`3H_/___X7`=`B#Q!A;7E]=PXD\).C\____,<#K[(UT)@")+"2+1T3'1"0( -M!````(E$)`0/M\*)1"0,_U0D$#'`9HF'_@(``.NMB2PDBT=$QT0D"`D```") -M1"0$#[?"B40D#/]4)!`QP&:)A_P"``#I=O___Y"#["")7"04BUPD)(ET)!B) -M?"0`2+,(D< -M)(M#1(E$)`3H_/___X7`==6)-"2+0T3'1"0(`0```(E$)`2-1"00B40D#/_7 -MB<*X!@```(72=*Z`>V0`=!^)'"3H_/___X7`=9R)'"2+0T2)1"0$Z/S___^% -MP'6)B1PDZ/S___^%P`^%>?___XD<)(M#1(E$)`3H_/___X7`#X5B____]T-@ -M____``^%4____XD<)(M#1(E$)`3H_/___X7`#X4^____Z3?___^)]H/L"(E< -M)`2+7"0,@'MC`'0/BT,\BUPD!(/$",.-="8`B1PDZ/S____KYXGV@^P(B5PD -M!(M<)`R`>V,`=`N+0T"+7"0$@\0(PXD<).C\____Z^N)]E575E.#["R+?"1` -MBTGK_O__BP=#BQ#'1"0$,@```(D4)/]0&(DL)(M' -M1(ET)`S'1"0(`````(E$)`3_5"0<@?OS`0``#X]\_O__]D0D(1!UP.EP_O__ -M#[>'"`,``"4``0``9H7`#X3T_?__QT<\`,J:.XM$)"B#R$")PH'B_]___X!\ -M)!__^)1"0HQT0D$`$```#' -M1T`!````Z7?]___'1SP`X?4%BT0D*`T`(```B<*#XK^`?"07`8E4)"AT$X!\ -M)!<"#X5,_?__@>8`0```ZX&!Y@"@__]FA?8/A#7]__\EO_[__^N?QT<\@):8 -M`(M$)"@EO]___X!\)!##`,``"7__/__9HF##`,``(DL)(M#1,=$)`@)````B40D!`^W@PP#``") -M1"0,_U0D'(7`#X6#_O__Z='^__^`?"0;`70Y@'PD&P)T"H%,)!#@`P``Z[HE -M`!```&:%P`^$;?[__P^W@PP#```-``(``"7__O__9HF##`,``.O.)0`@``!F -MA<`/A$7^__\/MX,,`P``#0`!```E__W__^O6@60D%/]7__^!3"00H`(``.GL -M_?__@60D%/^O__^!3"000`$``.G7_?__QT0D%`#@``#'1"008````.FL_?__ -MQT0D%``8``#'1"00@`,``.F7_?__#[=$)`B+5"0$9HE"8(M$)`R(0F*+1"00 -MB$)C,<##B?8QP,.053')5[\@````5E.[`0```(/L),=$)!P`````BVPD.(M% -M.(L0B50D&(M`!,=$)!``````B40D%(F-]`(``(UV`(DL)(E<)`3H_/___X7` -M#X21````0X/[_XU#'P]/PX/@X"G#3W7:BXWT`@``AJ+.(7_=3-&@\`4@\(4.) -M7"0$BT0D&,=$)`@"````B00DBX7T`@``C02`C42%>(E$)`S_5"04A`2+:`C'1"00`````,=#5``` -M``")-"2+0T3'1"0(`````(E$)`2-1"04B40D#/_7N@8```"%P'0Z]T-@____ -M``^%P````,=$)!0`"```B30DBT-$QT0D#``(``#'1"0(`````(E$)`3_U;H' -M````A%P'0D@T0D$#*+0SB+5"00.U`<=PGV1"05"'2VZ["Z -M"P```.EW____N@8```#I;?___XDT)(M#1,=$)`@$````B40D!(M#7(E$)`S_ -MU>D@____D%575C'V4X/L&(M<)"R+0SB+*(MX!,=$)!``````B2PDBT-$QT0D -M"`$```")1"0$C40D%(E$)`S_U[H&````A`2)5"08BQC'1"04`````(D<)(M& -M1(EL)`S'1"0(`````(E$)`3_U[H&````AZ!@```(7`#X3E_?__]T0D(``P```/A$;^___'1CP` -MRIH[QT9``@```(M$)"C'1"04`0```"7_W___#4`!``")1"0HZ1G^__^)-"2- -M1"0)'"2+1D3'1"0(!0```(E$)`2-1"0@B40D#/_7BVPD*(M$)"2+3"0@B>J) -M1"00B>@AR*E@````#X3;````QT8\@):8`('B?_S__XE4)"B)'"2+1"00)?_\ -M__^)1"0DBT9$B50D#,=$)`@$````B40D!/]4)!2)'"2+1D3'1"0("0```(E$ -M)`2+1"0DB40D#/]4)!2)'"2+1D3'1"0(`````(E$)`2-1"0Z!@```(7`#X1G`0``BT0D%&:)@PH#``")-"2+0T2);"0, -MQT0D"`0```")1"0$_]>Z!@```(7`#X0W`0``9H.[^@(```!U"XM$)!1FB8/Z -M`@``B30DBU0D%('*X`T``(E4)!2+0T2)5"0,QT0D"`0```")1"0$_U0D$+H' -M````A<`/A.T````/MX,(`P``)0`!``!FA3#`,``('B -M__O__V:)DPP#``"!XO_[``")-"2+0T2)5"0,QT0D"`D```")1"0$_U0D$+H' -M````A7UW#@60D%/_O___KOXDT -M)(M#1,=$)`P+````QT0D"!T```")1"0$_U0D$+H'````AZ!@```(7`#X1.____B30DBU0D%('B_S___X'*`$```(E4)!2+ -M0T2)5"0,QT0D"!X```")1"0$_U0D$+H'````A<`/A!/___^)-"2+0T3'1"0, -M"@```,=$)`@=````B40D!/]4)!"Z!P```(7`#X3H_O__B30DBT-$B6PD#,=$ -M)`@>````B40D!/_7N@8```"%P`^$P_[__XDT)(M4)!2#XM^)5"04BT-$B50D -M#,=$)`@>````B40D!/]4)!"Z!P```(7`#X21_O__Z2W^__\E__W__^G4_?__ -MB30DBT-$B6PD#,=$)`@)````B40D!/_7N@8```"%P`^$7?[__XM$)!1FB8/X -M`@``Z8']__^0@^PDB5PD%(M<)"B)="08B7PD'(EL)""+0SAF@;L$`P``\0.+ -M>`2+:`B+,,=#//____\/A(0!``!F@;L$`P``\0,/A+4````/MX,(`P``)0`! -M``!FAZ!@```(7`=1:+ -M7"04B="+="08BWPD'(ML)""#Q"3#B30DBU0D$('B__O__XE4)!"+0T2)5"0, -MQT0D"`D```")1"0$_]6Z!P```(7`=+N-=@"-O"<`````B30DBT-$QT0D"`$` -M``")1"0$C40D$(E$)`S_U[H&````A<"X``````]%T.N$C78`B30DBT-$QT0D -M"!8```")1"0$C40D$(E$)`S_U[H&````A<`/A%C___^)-"2+5"00@Z -M!@```(7`#X2+_O__B30DBU0D$('B_P'__X'*`!(``(E4)!"+0T2)5"0,QT0D -M"!<```")1"0$_]6Z!P```(7`#X12_O__B30DBT-$QT0D"!P```")1"0$C40D -M$(E$)`S_U[H&````A<`/A"G^__^)-"2+5"00@\H$B50D$(M#1(E4)`S'1"0( -M'````(E$)`3_U;H'````A<`/A/G]___IK_W__Y")]E.+5"0(,<`/MDPD#(M< -M)!"%TG06,<`YV'T.C;8`````B`P00#G8?/B)T%O#5E.+3"0,BW0D%(M4)!"% -MR70EA=)T(3';.?-]%I"-M"8`````#[8".`%U#$-!0CGS?/(QP%M>P[@!```` -MZ_:)]H/L"(M,)`R)'"2+7"04A````B=@I\(D\)(/X'P]#PHET)`2)1"0( -MZ/S___^)/"3H_/___P^WP&8]_P!W#HM4)&2-N+,<"#Q$Q;7E]= -MP[@!````Z_&#_0-_],=$)`0`````C70D+(DT),=$)`@>````Z/S___^+1"1@ -MB30DQT0D"!X```")1"0$Z/S___^)-"3'1"0$+@```.C\____AP```!(``0#O`@``K"T``"0` -M```2``$`!`,``-`M```J````$@`!`!@#``"(+0``(P```!(``0`M`P``<"T` -M`!<````2``$`2`,``%@M```7````$@`!`&(#``#\+0``"P```!(``0!_`P`` -M""X```L````2``$`FP,``!0N``#L!@``$@`!`+$#````-0``5@```!(``0#. -M`P``6#4``/4````2``$`Y`,``%`V```>`0``$@`!`/H#``!P-P``PP```!(` -M`0`3!```-#@```8````2``$`+P0``*15```&`@``$@`!`#@$```$5```]P`` -M`!(``0!0!```;!L``#$$```2``$`7@0``.`_``"-`0``$@`!`(`$``"P)``` -MN@$``!(``0"/!```T#P``(T!```2``$`K@0```!5``"D````$@`!`,<$``!L -M"P```0```!(``0#?!```<`L```,````2``$`]@0``'0+``"*````$@`!`!(% -M````#```8@```!(``0`N!0``,!8```H#```2``$`1P4``-@K``!_`0``$@`! -M`&$%```X*@``A@```!(``0!_!0``3"D``.H````2``$`G`4``.Q\``!!```` -M$@`!`*8%`````````````!````"M!0``!$X``)T````2``$`O04``*1.``#/ -M````$@`!`-4%``"T2@``P@$``!(``0#P!0``\$(``/$#```2``$`"@8``'A, -M``")`0``$@`!`"T&``#D1@``S0,``!(``0!/!@``D&@``-L!```2``$`8`8` -M`'Q8```]`0``$@`!`&D&````7P```P$``!(``0!V!@``!&```.H````2``$` -M@08``/!@```J````$@`!`)(&```<80``)@```!(``0"B!@``>&\``&,````2 -M``$`NP8``'1;```/````$@`!`-(&``"$6P``#@```!(``0#H!@``K%<``,\` -M```2``$`\@8``"!M```W`0``$@`!```'``!L:```'@```!(``0`5!P``W'0` -M`'T!```2``$`*@<``)1;``!J`P``$@`!`#<'``"<6@``V````!(``0!;!P`` -M(&4``$P#```2``$`;`<``+Q9``#?````$@`!`'X'``#<;P``O@(``!(``0"I -M!P``G'(``#T"```2``$`O`<``%QV``"7`P``$@`!`-0'``#T>0``B0(``!(` -M`0#M!P``U&L``$D!```2``$`"P@``&QJ``!E`0``$@`!`!4(``!8;@``NP`` -M`!(``0`Q"```1&$``-L#```2``$`6`@``(QH```#````$@`!`&\(```4;P`` -M8P```!(``0"`"```@'P``"P````2``$`B@@``*Q\```^````$@`!`)0(```P -M?0``4P```!(``0"<"```"'X``&L````2``$`I`@``(1]```P````$@`!`*X( -M``"T?0``40```!(``0"X"```='X``$H````2``$`QP@``,!^```P`0``$@`! -M`.8(````````D`$``!$`!0``;G9E;F5T;&EB+F,`0V]U;G1E4EN=&5R$1E -MFEN -M9P!!1$%05$527U)EF4`041!4%1%4E]'971296-E:79E475E=653:7IE`$%$05!4 -M15)?1V5T4W1A=&ES=&EC0!M96UC<'D`57!D871E34E)4W1A='5S -M`%)E8610:'E3=&%T=7-!;F100!02%E?26YI=`!02%E?26YI -M=$9AFEN9P!02%E?4F5S9710:'E);FET4W1A=&4`4$A97T-L;W-E`%!(65]0 -M;W=E`!0:'E$;U!R95)E5]& -M;W)C95-P965D1'5P;&5X`%!(65]'971,:6YK4W1A=&4`;G9?;65M@!#;VYV97)T25!!9&1R97-S7U-T``!(!P```1\``.T' -M```"-P``(P@```(X``";"````3D``*8(```!.@``K0@```$[``"T"````3P` -M`!D)```"#P``2PD```(]``"+"P```CX``)<+```"/P``P`L```(^``#,"P`` -M`C\``.@+```"/@``^`L```(^```;#````CX``"<,```"/P``.PP```(^``!' -M#````C\``+P,```"$0``FA$```(M``"V%@```A$``)\8```"$```6QD```(1 -M``!C&0```D,``$0:```")P``5!H```)$``"J&@```B8``/$:```"10``Z2H` -M``)&```G+@```D,`````!N6P```F```-A<```"7P``Y5P```)@```670```F$` -M`.-=```"8@``@%X```)=``"07P```F,``*1?```"6P``2F````)C``"#8``` -M`F$``)9@```"9```HF````)B``"Y8````F,``-U@```"90``%&$```)@```\ -M80```F```(QB```"7@``J64```)F``#@9@```F4``/AF```"7```V&@```)C -M```8<0```EX``)%R```"9@``$'8```)E```L=@```EP``%%]```":0``>7T` -M``)L``#L?@```FT``!-_```":0``,G\```)&```Z?P```FP``(-_```":0`` -HFW\```)N``"K?P```FT``,I_```";@``TG\```)L`````````04````` -` -end diff --git a/sys/contrib/dev/nv/nvenet_version.h b/sys/contrib/dev/nv/nvenet_version.h deleted file mode 100644 index 6e12d8887c..0000000000 --- a/sys/contrib/dev/nv/nvenet_version.h +++ /dev/null @@ -1,29 +0,0 @@ -/****************************************************************** \ -|* *| -|* *| -|* (c) NVIDIA Corporation. All rights reserved *| -|* *| -|* 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__ - -#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 - diff --git a/sys/contrib/dev/nv/os.h b/sys/contrib/dev/nv/os.h deleted file mode 100644 index 4749543040..0000000000 --- a/sys/contrib/dev/nv/os.h +++ /dev/null @@ -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. *| -|* *| -\***************************************************************************/ - -/* - 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, PMEMORY_BLOCK pMem); -typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREE) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem); -typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOCEX) (PNV_VOID pOSCX, PMEMORY_BLOCKEX pMem); -typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREEEX) (PNV_VOID pOSCX, PMEMORY_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, NV_UINT32 ulTimeInMicroseconds); -typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_RECEIVE_BUFFER) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem, PNV_VOID *ppvID); -typedef NV_API_CALL NV_SINT32 (* PFN_FREE_RECEIVE_BUFFER) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem, PNV_VOID pvID); -typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_SENT) (PNV_VOID pOSCX, PNV_VOID pvID, NV_UINT32 ulSuccess); -typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_RECEIVED) (PNV_VOID pOSCX, PNV_VOID pvADReadData, NV_UINT32 ulSuccess, NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority); -typedef NV_API_CALL NV_SINT32 (* PFN_LINK_STATE_HAS_CHANGED) (PNV_VOID pOSCX, NV_SINT32 nEnabled); -typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_TIMER) (PNV_VOID pvContext, PNV_VOID *ppvTimer); -typedef NV_API_CALL NV_SINT32 (* PFN_FREE_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer); -typedef NV_API_CALL NV_SINT32 (* PFN_INITIALIZE_TIMER) (PNV_VOID pvContext, 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 pvContext, PNV_VOID pvADReadData, PNV_VOID *ppvID, - NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority); -typedef NV_API_CALL PNV_VOID (* PFN_PREPROCESS_PACKET_NOPQ) (PNV_VOID pvContext, PNV_VOID pvADReadData); -typedef NV_API_CALL NV_SINT32 (* PFN_INDICATE_PACKETS) (PNV_VOID pvContext, PNV_VOID *ppvID, NV_UINT32 ulNumPacket); -typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ALLOC) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID *ppvLock); -typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ACQUIRE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock); -typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_RELEASE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock); -typedef NV_API_CALL PNV_VOID (* PFN_RETURN_BUFFER_VIRTUAL) (PNV_VOID pvContext, 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_ diff --git a/sys/contrib/dev/nv/phy.h b/sys/contrib/dev/nv/phy.h deleted file mode 100644 index 87596a59ad..0000000000 --- a/sys/contrib/dev/nv/phy.h +++ /dev/null @@ -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. *| -|* *| -\***************************************************************************/ - -/* - 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 registers -// 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 the -// phy registers. This structure with appropriate routines will be provided -// in the PHY_Open call. - -typedef NV_API_CALL NV_SINT32 (* PFN_READ_PHY) (PNV_VOID pvData, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 *pulValue); -typedef NV_API_CALL NV_SINT32 (* PFN_WRITE_PHY) (PNV_VOID pvData, NV_UINT32 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 *pulLinkState, 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_UINT16 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_ diff --git a/sys/dev/netif/nv/Makefile b/sys/dev/netif/nv/Makefile deleted file mode 100644 index 9859ec9360..0000000000 --- a/sys/dev/netif/nv/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# $DragonFly: src/sys/dev/netif/nv/Attic/Makefile,v 1.4 2006/01/29 22:10:11 corecode Exp $ - -CONTRIBDIR= ${.CURDIR}/../../../contrib/dev/nv - -KMOD= if_nv -SRCS= if_nv.c miibus_if.h device_if.h bus_if.h pci_if.h opt_polling.h -SRCS+= adapter.h.patch basetype.h.patch os.h.patch phy.h.patch drvinfo.h.patch -OBJS+= nvenetlib.o -CLEANFILES+= nvenetlib.o -KMODDEPS = miibus - -CFLAGS+= -I${.OBJDIR} -I${.CURDIR} -I${CONTRIBDIR} - -.ifndef BUILDING_WITH_KERNEL -opt_polling.h: - echo '#define DEVICE_POLLING 1' > ${.OBJDIR}/${.TARGET} -.endif - -nvenetlib.o: ${CONTRIBDIR}/${MACHINE_ARCH}/nvenetlib.o.uu - uudecode < ${.ALLSRC:M*.uu} - -.include diff --git a/sys/dev/netif/nv/adapter.h.patch b/sys/dev/netif/nv/adapter.h.patch deleted file mode 100644 index b881a4f806..0000000000 --- a/sys/dev/netif/nv/adapter.h.patch +++ /dev/null @@ -1,454 +0,0 @@ -$DragonFly: src/sys/dev/netif/nv/Attic/adapter.h.patch,v 1.2 2005/04/04 18:45:07 joerg Exp $ - ---- adapter.h.orig 2005-03-12 10:59:18.000000000 +0100 -+++ adapter.h 2005-04-02 20:23:52.000000000 +0200 -@@ -35,13 +35,13 @@ - #endif - #endif - --////////////////////////////////////////////////////////////////// --// For the set and get configuration calls. -+/****************************************************************/ -+/* For the set and get configuration calls. */ - typedef struct _ADAPTER_CONFIG - { - NV_UINT32 ulFlags; - } ADAPTER_CONFIG, *PADAPTER_CONFIG; --////////////////////////////////////////////////////////////////// -+/****************************************************************/ - - typedef struct _ADAPTER_WRITE_OFFLOAD - { -@@ -50,8 +50,8 @@ - - } ADAPTER_WRITE_OFFLOAD; - --////////////////////////////////////////////////////////////////// --// For the ADAPTER_Write1 call. -+/****************************************************************/ -+/* 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 differenet -@@ -70,10 +70,10 @@ - typedef struct _NVSCATTER_GATHER_LIST { - NV_UINT32 NumberOfElements; - NV_VOID *Reserved; -- NVSCATTER_GATHER_ELEMENT Elements[0]; // Made 0 sized element to remove MODS compilation error -- // Elements[0] and Elements[] have the same effect. -- // sizeof(NVSCATTER_GATHER_LIST) is the same (value of 8) in both cases -- // And both lead to Warning 4200 in MSVC -+ NVSCATTER_GATHER_ELEMENT Elements[0]; /* Made 0 sized element to remove MODS compilation error -+ ** Elements[0] and Elements[] have the same effect. -+ ** sizeof(NVSCATTER_GATHER_LIST) 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) -@@ -89,8 +89,8 @@ - } ADAPTER_WRITE_DATA1, *PADAPTER_WRITE_DATA1; - - --////////////////////////////////////////////////////////////////// --// For the ADAPTER_Write call. -+/****************************************************************/ -+/* For the ADAPTER_Write call. */ - typedef struct _ADAPTER_WRITE_ELEMENT - { - PNV_VOID pPhysical; -@@ -106,9 +106,9 @@ - #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. -+/* 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; -@@ -118,12 +118,12 @@ - ADAPTER_WRITE_OFFLOAD *psOffload; - ADAPTER_WRITE_ELEMENT sElement[100]; - } ADAPTER_WRITE_DATA, *PADAPTER_WRITE_DATA; --////////////////////////////////////////////////////////////////// -+/****************************************************************/ - - - --////////////////////////////////////////////////////////////////// --// For the ADAPTER_Read call. -+/****************************************************************/ -+/* For the ADAPTER_Read call. */ - typedef struct _ADAPTER_READ_ELEMENT - { - PNV_VOID pPhysical; -@@ -157,16 +157,16 @@ - #define RDFLAG_CHK_RESERVED 7 - - --// The ulFilterMatch flag can be a logical OR of the following -+/* 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. -+/****************************************************************/ -+/* For the ADAPTER_GetPowerCapabilities call. */ - typedef struct _ADAPTER_POWERCAPS - { - NV_UINT32 ulPowerFlags; -@@ -176,7 +176,7 @@ - NV_SINT32 iMaxWakeUpPatterns; - } ADAPTER_POWERCAPS, *PADAPTER_POWERCAPS; - --// For the ADAPTER_GetPowerState and ADAPTER_SetPowerState call. -+/* For the ADAPTER_GetPowerState and ADAPTER_SetPowerState call. */ - typedef struct _ADAPTER_POWERSTATE - { - NV_UINT32 ulPowerFlags; -@@ -185,15 +185,15 @@ - 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. -+/* 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 -@@ -203,13 +203,13 @@ - 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. -+/****************************************************************/ -+/* 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 -@@ -217,30 +217,30 @@ - - #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. -+/* 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. -+/****************************************************************/ -+/* 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 -@@ -251,10 +251,10 @@ - - - --// --// --// Adapter offload --// -+/* -+** -+** Adapter offload -+*/ - typedef struct _ADAPTER_OFFLOAD { - - NV_UINT32 Type; -@@ -266,13 +266,13 @@ - #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 --// function call from OS layer to Adapter layer --// -+/* CMNDATA_OS_ADAPTER -+** Structure common to OS and Adapter layers -+** Used for moving data from the OS layer to the adapter layer through SetCommonData -+** function call from OS layer to Adapter layer -+*/ - - typedef struct _CMNDATA_OS_ADAPTER - { -@@ -287,8 +287,8 @@ - NV_UINT32 ulMediaIF; - NV_UINT32 bOemCustomEventRead; - -- // Debug only right now -- //!!! Beware mods is relying on the fields blow. -+ /* Debug only right now */ -+ /*!!! Beware mods is relying on the fields blow. */ - NV_UINT32 ulWatermarkTFBW; - NV_UINT32 ulBackoffRseed; - NV_UINT32 ulBackoffSlotTime; -@@ -298,8 +298,8 @@ - } CMNDATA_OS_ADAPTER; - - --////////////////////////////////////////////////////////////////// --// The functional typedefs for the ADAPTER Api -+/****************************************************************/ -+/* 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_UINT8 ucAsyncMode, NV_UINT32 *puiLinkState); - typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_DEINIT) (PNV_VOID pvContext, NV_UINT8 ucIsPowerDown); -@@ -364,10 +364,10 @@ - - typedef struct _ADAPTER_API - { -- // The adapter context -+ /* The adapter context */ - PNV_VOID pADCX; - -- // The adapter interface -+ /* The adapter interface */ - PFN_ADAPTER_CLOSE pfnClose; - PFN_ADAPTER_INIT pfnInit; - PFN_ADAPTER_DEINIT pfnDeinit; -@@ -424,29 +424,29 @@ - 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 layer -- 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 function 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 accumulate in UpdateReceiveDescRingData before -- //indicating packets to OS. -- NV_UINT32 SentPacketStatusSuccess; //Status returned from adapter layer 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 descriptor based interrupt -- NV_UINT32 TxForcedInterrupt; //NOT USED: For experiment with descriptor based interrupt -- NV_UINT32 DeviceId; //Of MAC -+ PNV_VOID pOSApi; /*pointer to OSAPI structure passed from higher layer */ -+ 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 function 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 accumulate in UpdateReceiveDescRingData before */ -+ /*indicating packets to OS. */ -+ NV_UINT32 SentPacketStatusSuccess; /*Status returned from adapter layer 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 descriptor based interrupt */ -+ NV_UINT32 TxForcedInterrupt; /*NOT USED: For experiment with descriptor based interrupt */ -+ NV_UINT32 DeviceId; /*Of MAC */ - NV_UINT32 DeviceType; -- NV_UINT32 PollIntervalInusForThroughputMode; //Of MAC -+ NV_UINT32 PollIntervalInusForThroughputMode; /*Of MAC */ - NV_UINT32 bASFEnabled; - NV_UINT32 ulDescriptorVersion; - NV_UINT32 ulMaxPacketSize; -@@ -464,24 +464,24 @@ - NV_UINT32 PhyRdWrTimeoutInus; - NV_UINT32 PhyPowerdownOnClose; - -- // Added for Bug 100715 -+ /* 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. -+/****************************************************************/ -+/* 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. */ - NV_API_CALL NV_SINT32 ADAPTER_Open (PADAPTER_OPEN_PARAMS pAdapterOpenParams, PNV_VOID *pvpAdapterApi, NV_UINT32 *pulPhyAddr); - --////////////////////////////////////////////////////////////////// -+/****************************************************************/ - - - --////////////////////////////////////////////////////////////////// --// Here are the error codes the adapter function calls return. -+/****************************************************************/ -+/* 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 -@@ -489,12 +489,12 @@ - #define ADAPTERERR_TRANSMIT_QUEUE_FULL 0x0004 - #define ADAPTERERR_COULD_NOT_INIT_PHY 0x0005 - #define ADAPTERERR_PHYS_SIZE_SMALL 0x0006 --#define ADAPTERERR_ERROR 0x0007 // Generic error --////////////////////////////////////////////////////////////////// -+#define ADAPTERERR_ERROR 0x0007 /* Generic error */ -+/****************************************************************/ - --// This block moved from myadap.h --// nFlag for Stop/Start ReceiverAndOrTransmitter can be an OR of --// the following two flags -+/* 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 - -@@ -516,11 +516,11 @@ - NV_SINT32 ADAPTER_WorkaroundTXHang(PNV_VOID pvContext); - #endif - --//#define TRACK_INIT_TIME -+/*#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 -+/*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); -@@ -529,7 +529,7 @@ - #define PRINT_INIT_TIME(_a) - #endif - --// Segmentation offload info -+/* Segmentation offload info */ - #define DEVCAPS_SEGOL_BP_ENABLE 0 - #define DEVCAPS_SEGOL_BP_IPOPTIONS 1 - #define DEVCAPS_SEGOL_BP_TCPOPTIONS 2 -@@ -537,43 +537,43 @@ - #define DEVCAPS_SEGOL_BP_SEGSIZE_HI 31 - - --// Checksum offload info --// Byte 0 : V4 TX -+/* 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 -+/* 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 -+/* 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 -+/* 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 version --#define DESCR_VER_2 2 // The decsriptor structure for CK8G -+#define DESCR_VER_1 1 /* MCP1, MCP2 and CK8 descriptor version */ -+#define DESCR_VER_2 2 /* The decsriptor structure for CK8G */ - --// Get device and vendor IDs from 32 bit DeviceVendorID -+/* Get device and vendor IDs from 32 bit DeviceVendorID */ - #define GET_DEVICEID(x) (((x) >> 16) & 0xFFFF) - #define GET_VENDORID(x) ((x) & 0xFFFF) - - #ifdef __cplusplus --} // extern "C" -+} /* extern "C" */ - #endif - --#endif // _ADAPTER_H_ -+#endif /* _ADAPTER_H_ */ diff --git a/sys/dev/netif/nv/basetype.h.patch b/sys/dev/netif/nv/basetype.h.patch deleted file mode 100644 index 1a9e329f31..0000000000 --- a/sys/dev/netif/nv/basetype.h.patch +++ /dev/null @@ -1,150 +0,0 @@ -$DragonFly: src/sys/dev/netif/nv/Attic/basetype.h.patch,v 1.2 2005/04/04 18:45:07 joerg Exp $ - ---- basetype.h.orig 2005-03-12 10:59:20.000000000 +0100 -+++ basetype.h 2005-04-02 20:29:03.000000000 +0200 -@@ -44,8 +44,7 @@ - #define OUT - #endif - --// --// Useful "types" -+/* Useful "types" */ - - #ifndef NULL - #define NULL 0 -@@ -60,9 +59,9 @@ - #endif - - #if 1 --// --// Don't use as these are going to be deleted soon. Use NV_ instead --// -+/* -+** Don't use as these are going to be deleted soon. Use NV_ instead -+*/ - #define VOID void - typedef VOID *PVOID; - -@@ -112,7 +111,7 @@ - typedef signed long long NV_SINT64, *PNV_SINT64; - - #else -- #if _MSC_VER >= 1200 // MSVC 6.0 onwards -+ #if _MSC_VER >= 1200 /* MSVC 6.0 onwards */ - typedef unsigned __int64 NV_UINT64, *PNV_UINT64; - typedef signed __int64 NV_SINT64, *PNV_SINT64; - #else -@@ -141,59 +140,59 @@ - #endif - - --// --// Floating point definitions --// --typedef float NV_REAL32; // 4-byte floating point --typedef double NV_REAL64; // 8-byte floating point -+/* -+** Floating point definitions -+*/ -+typedef float NV_REAL32; /* 4-byte floating point */ -+typedef double NV_REAL64; /* 8-byte floating point */ - - - --// --// Bit defintions --// -+/* -+** Bit defintions -+*/ - #define NV_BIT(bitpos) (1 << (bitpos)) - --// NV_BIT_SET --// Sets 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 = 0xA0 --// NV_BIT_SET(x, 1) --// Result: x = 0xA2 -+/* NV_BIT_SET -+** Sets 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 = 0xA0 -+** NV_BIT_SET(x, 1) -+** Result: x = 0xA2 */ - #define NV_BIT_SET(bits, bitpos) ((bits) |= (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 = 0xAA --// NV_BIT_CLEAR(x, 1) --// Result: x = 0xA8 -+/* 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 = 0xAA -+** NV_BIT_CLEAR(x, 1) -+** Result: x = 0xA8 */ - #define NV_BIT_CLEAR(bits, bitpos) ((bits) &= (~NV_BIT(bitpos))) - --// NV_BIT_GET --// 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 = 0xAA --// NV_BIT_GET(x, 1) --// Result: x = 1 -+/* NV_BIT_GET -+** 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 = 0xAA -+** NV_BIT_GET(x, 1) -+** Result: x = 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 = 0xFEDCBA98 --// ulVal = NV_BIT_GETVALUE(ul32, 3, 0) : Gets value from Bit position 3 to 0 --// Result : ulVal = 8 -+/* 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 = 0xFEDCBA98 -+** ulVal = NV_BIT_GETVALUE(ul32, 3, 0) : Gets value from Bit position 3 to 0 -+** Result : ulVal = 8 */ - #define NV_BIT_GETVALUE(ulOrigValue, bitposHi, bitposLow) (((ulOrigValue) >> (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 = 0xFEDCBA98 --// NV_BIT_SETVALUE(ul32, 0xF, 3, 0) : Sets value at Bit position 3 to 0 --// Result : ul32 becomes 0xFEDCBA9F -+/* 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 = 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) = ((((ulOrigValue) & (~ ((0xFFFFFFFF >> (31 - (bitposHi))) & (0xFFFFFFFF << (bitposLow))))) | ((ulWindowValue) << (bitposLow))))) - -@@ -241,7 +240,7 @@ - typedef union _NVLARGE_INTEGER { - - #if 0 -- // NO UNNAMED UNIONS ALLOWED !@ -+ /* NO UNNAMED UNIONS ALLOWED !@ */ - struct { - NV_UINT32 LowPart; - NV_SINT32 HighPart; -@@ -278,4 +277,4 @@ - #define NV_API_CALL - #endif - --#endif // _BASETYPE_H_ -+#endif /* _BASETYPE_H_ */ diff --git a/sys/dev/netif/nv/drvinfo.h.patch b/sys/dev/netif/nv/drvinfo.h.patch deleted file mode 100644 index c0956d27e8..0000000000 --- a/sys/dev/netif/nv/drvinfo.h.patch +++ /dev/null @@ -1,161 +0,0 @@ -$DragonFly: src/sys/dev/netif/nv/Attic/drvinfo.h.patch,v 1.1 2005/04/04 18:45:07 joerg Exp $ - ---- drvinfo.h.orig 2005-03-12 10:59:20.000000000 +0100 -+++ drvinfo.h 2005-04-02 20:33:15.000000000 +0200 -@@ -23,12 +23,12 @@ - #ifndef _DRVINFO_H_ - #define _DRVINFO_H_ - --// Switch to byte packing, regardless of global packing specified by the compiler switch -+/* Switch to byte packing, regardless of global packing specified by the compiler switch */ - #pragma pack(1) - --////////////////////////////////////////////////////////////////// --// For the ADAPTER_GetStatistics call used by qstats. This --// is the template used by the legacy driver. -+/****************************************************************/ -+/* For the ADAPTER_GetStatistics call used by qstats. This -+** is the template used by the legacy driver. */ - #define MAX_TRANSMIT_COLISION_STATS 16 - - #define ADAPTER_STATS_LEGACY_VERSION 1 -@@ -54,10 +54,10 @@ - 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 -+ 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 -+ /*interrupt related statistics */ - NV_UINT32 ulRxInterrupt; - NV_UINT32 ulRxInterruptUnsuccessful; - NV_UINT32 ulTxInterrupt; -@@ -65,19 +65,19 @@ - NV_UINT32 ulPhyInterrupt; - - } ADAPTER_STATS_V1, *PADAPTER_STATS_V1; --////////////////////////////////////////////////////////////////// -+/****************************************************************/ - --////////////////////////////////////////////////////////////////// --// For the ADAPTER_GetStatistics call used by qstats. This --// is the template used by the FD. -+/****************************************************************/ -+/* For the ADAPTER_GetStatistics call used by qstats. This -+** is the template used by the FD. */ - typedef struct _ADAPTER_STATS - { - NV_UINT32 ulVersion; - NV_UINT8 ulMacAddress[6]; - -- // -- // Tx counters. -- // -+ /* -+ ** Tx counters. -+ */ - NV_UINT64 ulSuccessfulTransmissions; - NV_UINT64 ulFailedTransmissions; - NV_UINT64 ulRetryErrors; -@@ -88,14 +88,14 @@ - NV_UINT64 ulExcessDeferredTransmissions; - NV_UINT64 aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLISION_STATS]; - -- // -- // New Tx counters for GigE. -- // -+ /* -+ ** New Tx counters for GigE. -+ */ - NV_UINT64 ulTxByteCount; - -- // -- // Rx counters. -- // -+ /* -+ ** Rx counters. -+ */ - NV_UINT64 ulMissedFrames; - NV_UINT64 ulSuccessfulReceptions; - NV_UINT64 ulFailedReceptions; -@@ -104,12 +104,12 @@ - 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 -+ 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. -- // -+ /* -+ ** New Rx counters for GigE. -+ */ - NV_UINT64 ulRxExtraByteCount; - NV_UINT64 ulRxFrameTooLongCount; - NV_UINT64 ulRxFrameAlignmentErrorCount; -@@ -121,7 +121,7 @@ - NV_UINT64 ulRxBroadcastFrameCount; - NV_UINT64 ulRxPromiscuousModeFrameCount; - -- //Interrupt related statistics -+ /*Interrupt related statistics */ - NV_UINT64 ulRxInterrupt; - NV_UINT64 ulRxInterruptUnsuccessful; - NV_UINT64 ulTxInterrupt; -@@ -129,25 +129,25 @@ - NV_UINT64 ulPhyInterrupt; - - -- // -- // Handy things to know -- // -+ /* -+ ** Handy things to know -+ */ - NV_UINT64 ulDescriptorVersion; -- NV_UINT64 ulPollingCfg; // configured for cpu or throughput -- NV_UINT64 ulPollingState; // current optimizefor state. -+ NV_UINT64 ulPollingCfg; /* configured for cpu or throughput */ -+ NV_UINT64 ulPollingState; /* current optimizefor state. */ - - NV_UINT64 ulNumTxDesc; - NV_UINT64 ulNumRxDesc; - -- // -- // Useful to determine if TX is stuck. -- // -+ /* -+ ** Useful to determine if TX is stuck. -+ */ - NV_UINT64 ulNumTxPktsQueued; - NV_UINT64 ulNumTxPktsInProgress; - -- // -- // Rx Xsum Cntrs -- // -+ /* -+ ** Rx Xsum Cntrs -+ */ - NV_UINT64 ulNoRxPktsNoXsum; - NV_UINT64 ulNoRxPktsXsumIpPassTcpFail; - NV_UINT64 ulNoRxPktsXsumIpPassUdpFail; -@@ -180,11 +180,11 @@ - - #endif - } ADAPTER_STATS, *PADAPTER_STATS; --////////////////////////////////////////////////////////////////// -+/****************************************************************/ - - #pragma pack() - - --#endif // #define _DRVINFO_H_ -+#endif /* #define _DRVINFO_H_ */ - - diff --git a/sys/dev/netif/nv/if_nv.c b/sys/dev/netif/nv/if_nv.c deleted file mode 100644 index 3400d964af..0000000000 --- a/sys/dev/netif/nv/if_nv.c +++ /dev/null @@ -1,1766 +0,0 @@ -/*- - * Copyright (c) 2005 by David E. O'Brien . - * Copyright (c) 2003,2004 by 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 the - * documentation and/or other materials provided with the distribution. - * - * 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 PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 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 ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: if_nv.c,v 1.20 2005/03/12 01:11:00 q Exp $ - * $FreeBSD: src/sys/dev/nve/if_nve.c,v 1.20 2005/12/12 06:23:43 bz Exp $ - * $DragonFly: src/sys/dev/netif/nv/Attic/if_nv.c,v 1.29 2006/12/22 23:26:21 swildner Exp $ - */ - -/* - * NVIDIA nForce MCP Networking Adapter driver - * - * This is a port of the NVIDIA MCP Linux ethernet driver distributed by NVIDIA - * through their web site. - * - * All mainstream nForce and nForce2 motherboards are supported. This module - * 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 FreeBSD - * 5.x). - * - * 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 modified in - * any way and is simply linked against a FreeBSD equivalent of the nvnet.c - * linux kernel module "wrapper". - * - * 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 using - * this same API in a FreeBSD kernel module it is possible to support the - * hardware without breaching the Linux source distributions licensing - * requirements, or obtaining the hardware programming specifications. - * - * Although not conventional, it works, and given the relatively small - * amount of hardware centric code, it's hopefully no more buggy than its - * 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 is - * reported to work with little modification when compiled with the AMD64 - * 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 distribution to - * the NVIDIA Linux driver source. - * - * This driver should work on all versions of FreeBSD since 4.9/5.1 as well - * as recent versions of DragonFly. - * - * Written by Quinton Dolan - * Portions based on existing FreeBSD network drivers. - * NVIDIA API usage derived from distributed NVIDIA NVNET driver source files. - * - * $Id: if_nv.c,v 1.9 2003/12/13 15:27:40 q Exp $ - */ - -#include "opt_polling.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include /* for vtophys */ -#include /* for vtophys */ -#include /* for DELAY */ - -#include -#include - -#include -#include - -MODULE_DEPEND(nv, pci, 1, 1, 1); -MODULE_DEPEND(nv, miibus, 1, 1, 1); - -#include "if_nvreg.h" -#include "miibus_if.h" - -static int nv_probe(device_t); -static int nv_attach(device_t); -static int nv_detach(device_t); -static void nv_init(void *); -static void nv_stop(struct nv_softc *); -static void nv_shutdown(device_t); -static int nv_init_rings(struct nv_softc *); -static void nv_free_rings(struct nv_softc *); - -static void nv_ifstart(struct ifnet *); -static int nv_ioctl(struct ifnet *, u_long, caddr_t, struct ucred *); -static void nv_intr(void *); -static void nv_tick(void *); -static void nv_setmulti(struct nv_softc *); -static void nv_watchdog(struct ifnet *); -static void nv_update_stats(struct nv_softc *); -#ifdef DEVICE_POLLING -static void nv_poll(struct ifnet *, enum poll_cmd, int); -#endif - -static int nv_ifmedia_upd(struct ifnet *); -static void nv_ifmedia_sts(struct ifnet *, struct ifmediareq *); -static int nv_miibus_readreg(device_t, int, int); -static void nv_miibus_writereg(device_t, int, int, int); - -static void nv_dmamap_cb(void *, bus_dma_segment_t *, int, int); -static void nv_dmamap_tx_cb(void *, bus_dma_segment_t *, int, bus_size_t, int); - -static NV_SINT32 nv_osalloc(PNV_VOID, PMEMORY_BLOCK); -static NV_SINT32 nv_osfree(PNV_VOID, PMEMORY_BLOCK); -static NV_SINT32 nv_osallocex(PNV_VOID, PMEMORY_BLOCKEX); -static NV_SINT32 nv_osfreeex(PNV_VOID, PMEMORY_BLOCKEX); -static NV_SINT32 nv_osclear(PNV_VOID, PNV_VOID, NV_SINT32); -static NV_SINT32 nv_osdelay(PNV_VOID, NV_UINT32); -static NV_SINT32 nv_osallocrxbuf(PNV_VOID, PMEMORY_BLOCK, PNV_VOID *); -static NV_SINT32 nv_osfreerxbuf(PNV_VOID, PMEMORY_BLOCK, PNV_VOID); -static NV_SINT32 nv_ospackettx(PNV_VOID, PNV_VOID, NV_UINT32); -static NV_SINT32 nv_ospacketrx(PNV_VOID, PNV_VOID, NV_UINT32, NV_UINT8 *, NV_UINT8); -static NV_SINT32 nv_oslinkchg(PNV_VOID, NV_SINT32); -static NV_SINT32 nv_osalloctimer(PNV_VOID, PNV_VOID *); -static NV_SINT32 nv_osfreetimer(PNV_VOID, PNV_VOID); -static NV_SINT32 nv_osinittimer(PNV_VOID, PNV_VOID, PTIMER_FUNC, PNV_VOID); -static NV_SINT32 nv_ossettimer(PNV_VOID, PNV_VOID, NV_UINT32); -static NV_SINT32 nv_oscanceltimer(PNV_VOID, PNV_VOID); - -static NV_SINT32 nv_ospreprocpkt(PNV_VOID, PNV_VOID, PNV_VOID *, NV_UINT8 *, NV_UINT8); -static PNV_VOID nv_ospreprocpktnopq(PNV_VOID, PNV_VOID); -static NV_SINT32 nv_osindicatepkt(PNV_VOID, PNV_VOID *, NV_UINT32); -static NV_SINT32 nv_oslockalloc(PNV_VOID, NV_SINT32, PNV_VOID *); -static NV_SINT32 nv_oslockacquire(PNV_VOID, NV_SINT32, PNV_VOID); -static NV_SINT32 nv_oslockrelease(PNV_VOID, NV_SINT32, PNV_VOID); -static PNV_VOID nv_osreturnbufvirt(PNV_VOID, PNV_VOID); - -static device_method_t nv_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, nv_probe), - DEVMETHOD(device_attach, nv_attach), - DEVMETHOD(device_detach, nv_detach), - DEVMETHOD(device_shutdown, nv_shutdown), - - /* Bus interface */ - DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), - - /* MII interface */ - DEVMETHOD(miibus_readreg, nv_miibus_readreg), - DEVMETHOD(miibus_writereg, nv_miibus_writereg), - - {0, 0} -}; - -static driver_t nv_driver = { - "nv", - nv_methods, - sizeof(struct nv_softc) -}; - -static devclass_t nv_devclass; - -static int nv_pollinterval = 0; -SYSCTL_INT(_hw, OID_AUTO, nv_pollinterval, CTLFLAG_RW, - &nv_pollinterval, 0, "delay between interface polls"); - -DRIVER_MODULE(nv, pci, nv_driver, nv_devclass, 0, 0); -DRIVER_MODULE(miibus, nv, miibus_driver, miibus_devclass, 0, 0); - -static struct nv_type nv_devs[] = { - {NVIDIA_VENDORID, NFORCE_MCPNET1_DEVICEID, - "NVIDIA nForce MCP Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET2_DEVICEID, - "NVIDIA nForce MCP2 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET3_DEVICEID, - "NVIDIA nForce MCP3 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET4_DEVICEID, - "NVIDIA nForce MCP4 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET5_DEVICEID, - "NVIDIA nForce MCP5 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET6_DEVICEID, - "NVIDIA nForce MCP6 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET7_DEVICEID, - "NVIDIA nForce MCP7 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET8_DEVICEID, - "NVIDIA nForce MCP8 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET9_DEVICEID, - "NVIDIA nForce MCP9 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET10_DEVICEID, - "NVIDIA nForce MCP10 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET11_DEVICEID, - "NVIDIA nForce MCP11 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET12_DEVICEID, - "NVIDIA nForce MCP12 Networking Adapter"}, - {NVIDIA_VENDORID, NFORCE_MCPNET13_DEVICEID, - "NVIDIA nForce MCP13 Networking Adapter"}, - {0, 0, NULL} -}; - -/* DMA MEM map callback function to get data segment physical address */ -static void -nv_dmamap_cb(void *arg, bus_dma_segment_t * segs, int nsegs, int error) -{ - if (error) - return; - - KASSERT(nsegs == 1, - ("Too many DMA segments returned when mapping DMA memory")); - *(bus_addr_t *)arg = segs->ds_addr; -} - -/* DMA RX map callback function to get data segment physical address */ -static void -nv_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 = segs->ds_addr; -} - -/* - * DMA TX buffer callback function to allocate fragment data segment - * addresses - */ -static void -nv_dmamap_tx_cb(void *arg, bus_dma_segment_t * segs, int nsegs, bus_size_t mapsize, int error) -{ - struct nv_tx_desc *info = arg; - - if (error) - return; - KASSERT(nsegs < NV_MAX_FRAGS, - ("Too many DMA segments returned when mapping mbuf")); - info->numfrags = nsegs; - bcopy(segs, info->frags, nsegs * sizeof(bus_dma_segment_t)); -} - -/* Probe for supported hardware ID's */ -static int -nv_probe(device_t dev) -{ - struct nv_type *t = nv_devs; - - /* Check for matching PCI DEVICE ID's */ - while (t->name != NULL) { - if ((pci_get_vendor(dev) == t->vid_id) && - (pci_get_device(dev) == t->dev_id)) { - device_set_desc(dev, t->name); - return (0); - } - t++; - } - - return (ENXIO); -} - -/* Attach driver and initialise hardware for use */ -static int -nv_attach(device_t dev) -{ - u_char eaddr[ETHER_ADDR_LEN]; - struct nv_softc *sc; - struct ifnet *ifp; - OS_API *osapi; - ADAPTER_OPEN_PARAMS OpenParams; - int error = 0, i, rid; - u_int32_t unit; - - if (bootverbose) - device_printf(dev, "nvenetlib.o version %s\n", DRIVER_VERSION); - - DEBUGOUT(NV_DEBUG_INIT, "nv: nv_attach - entry\n"); - - sc = device_get_softc(dev); - unit = device_get_unit(dev); - - sc->dev = dev; - sc->unit = unit; - callout_init(&sc->nv_stat_timer); - - /* Preinitialize data structures */ - bzero(&OpenParams, sizeof(ADAPTER_OPEN_PARAMS)); - - /* Enable bus mastering */ - pci_enable_busmaster(dev); - - /* Allocate memory mapped address space */ - rid = NV_RID; - sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); - - if (sc->res == NULL) { - device_printf(dev, "couldn't map memory\n"); - error = ENXIO; - goto fail; - } - sc->sc_st = rman_get_bustag(sc->res); - sc->sc_sh = rman_get_bushandle(sc->res); - - /* Allocate interrupt */ - rid = 0; - sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, - RF_SHAREABLE | RF_ACTIVE); - - if (sc->irq == NULL) { - device_printf(dev, "couldn't map interrupt\n"); - error = ENXIO; - goto fail; - } - /* Allocate DMA tags */ - error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT, - BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES * NV_MAX_FRAGS, - NV_MAX_FRAGS, MCLBYTES, 0, - &sc->mtag); - if (error) { - device_printf(dev, "couldn't allocate dma tag\n"); - goto fail; - } - error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT, - BUS_SPACE_MAXADDR, NULL, NULL, - sizeof(struct nv_rx_desc) * RX_RING_SIZE, 1, - sizeof(struct nv_rx_desc) * RX_RING_SIZE, 0, - &sc->rtag); - if (error) { - device_printf(dev, "couldn't allocate dma tag\n"); - goto fail; - } - error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT, - BUS_SPACE_MAXADDR, NULL, NULL, - sizeof(struct nv_tx_desc) * TX_RING_SIZE, 1, - sizeof(struct nv_tx_desc) * TX_RING_SIZE, 0, - &sc->ttag); - if (error) { - device_printf(dev, "couldn't allocate dma tag\n"); - goto fail; - } - - error = bus_dmamap_create(sc->ttag, 0, &sc->tmap); - if (error) { - device_printf(dev, "couldn't create dma map\n"); - goto fail; - } - - /* Allocate DMA safe memory and get the DMA addresses. */ - error = bus_dmamem_alloc(sc->ttag, (void **)&sc->tx_desc, - BUS_DMA_WAITOK | BUS_DMA_ZERO, &sc->tmap); - if (error) { - device_printf(dev, "couldn't allocate dma memory\n"); - goto fail; - } - error = bus_dmamap_load(sc->ttag, sc->tmap, sc->tx_desc, - sizeof(struct nv_tx_desc) * TX_RING_SIZE, nv_dmamap_cb, - &sc->tx_addr, 0); - if (error) { - device_printf(dev, "couldn't map dma memory\n"); - goto fail; - } - - error = bus_dmamap_create(sc->rtag, 0, &sc->rmap); - if (error) { - device_printf(dev, "couldn't create dma map\n"); - goto fail; - } - - error = bus_dmamem_alloc(sc->rtag, (void **)&sc->rx_desc, - BUS_DMA_WAITOK | BUS_DMA_ZERO, &sc->rmap); - if (error) { - device_printf(dev, "couldn't allocate dma memory\n"); - goto fail; - } - error = bus_dmamap_load(sc->rtag, sc->rmap, sc->rx_desc, - sizeof(struct nv_rx_desc) * RX_RING_SIZE, nv_dmamap_cb, - &sc->rx_addr, 0); - if (error) { - device_printf(dev, "couldn't map dma memory\n"); - goto fail; - } - /* Initialize rings. */ - if (nv_init_rings(sc)) { - device_printf(dev, "failed to init rings\n"); - error = ENXIO; - goto fail; - } - /* Setup NVIDIA API callback routines */ - osapi = &sc->osapi; - osapi->pOSCX = sc; - osapi->pfnAllocMemory = nv_osalloc; - osapi->pfnFreeMemory = nv_osfree; - osapi->pfnAllocMemoryEx = nv_osallocex; - osapi->pfnFreeMemoryEx = nv_osfreeex; - osapi->pfnClearMemory = nv_osclear; - osapi->pfnStallExecution = nv_osdelay; - osapi->pfnAllocReceiveBuffer = nv_osallocrxbuf; - osapi->pfnFreeReceiveBuffer = nv_osfreerxbuf; - osapi->pfnPacketWasSent = nv_ospackettx; - osapi->pfnPacketWasReceived = nv_ospacketrx; - osapi->pfnLinkStateHasChanged = nv_oslinkchg; - osapi->pfnAllocTimer = nv_osalloctimer; - osapi->pfnFreeTimer = nv_osfreetimer; - osapi->pfnInitializeTimer = nv_osinittimer; - osapi->pfnSetTimer = nv_ossettimer; - osapi->pfnCancelTimer = nv_oscanceltimer; - osapi->pfnPreprocessPacket = nv_ospreprocpkt; - osapi->pfnPreprocessPacketNopq = nv_ospreprocpktnopq; - osapi->pfnIndicatePackets = nv_osindicatepkt; - osapi->pfnLockAlloc = nv_oslockalloc; - osapi->pfnLockAcquire = nv_oslockacquire; - osapi->pfnLockRelease = nv_oslockrelease; - osapi->pfnReturnBufferVirtual = nv_osreturnbufvirt; - - sc->linkup = FALSE; - sc->max_frame_size = ETHERMTU + ETHER_HDR_LEN + FCS_LEN; - - /* TODO - We don't support hardware offload yet */ - sc->hwmode = 1; - sc->media = 0; - - /* Set NVIDIA API startup parameters */ - OpenParams.MaxDpcLoop = 2; - OpenParams.MaxRxPkt = RX_RING_SIZE; - OpenParams.MaxTxPkt = TX_RING_SIZE; - OpenParams.SentPacketStatusSuccess = 1; - OpenParams.SentPacketStatusFailure = 0; - OpenParams.MaxRxPktToAccumulate = 6; - OpenParams.ulPollInterval = nv_pollinterval; - OpenParams.SetForcedModeEveryNthRxPacket = 0; - OpenParams.SetForcedModeEveryNthTxPacket = 0; - OpenParams.RxForcedInterrupt = 0; - OpenParams.TxForcedInterrupt = 0; - OpenParams.pOSApi = osapi; - OpenParams.pvHardwareBaseAddress = rman_get_virtual(sc->res); - OpenParams.bASFEnabled = 0; - OpenParams.ulDescriptorVersion = sc->hwmode; - OpenParams.ulMaxPacketSize = sc->max_frame_size; - OpenParams.DeviceId = pci_get_device(dev); - - /* Open NVIDIA Hardware API */ - error = 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; - } - - /* TODO - Add support for MODE2 hardware offload */ - - bzero(&sc->adapterdata, sizeof(sc->adapterdata)); - - sc->adapterdata.ulMediaIF = sc->media; - sc->adapterdata.ulModeRegTxReadCompleteEnable = 1; - sc->hwapi->pfnSetCommonData(sc->hwapi->pADCX, &sc->adapterdata); - - sc->hwapi->pfnInit(sc->hwapi->pADCX, - 0, /* force speed */ - 0, /* force full duplex */ - 0, /* force mode */ - 0, /* force async mode */ - &sc->linkup); - - /* MAC is loaded backwards into h/w reg */ - sc->hwapi->pfnGetNodeAddress(sc->hwapi->pADCX, sc->original_mac_addr); - for (i = 0; i < 6; i++) { - eaddr[i] = sc->original_mac_addr[5 - i]; - } - sc->hwapi->pfnSetNodeAddress(sc->hwapi->pADCX, eaddr); - bcopy(eaddr, (char *)&sc->sc_macaddr, ETHER_ADDR_LEN); - - DEBUGOUT(NV_DEBUG_INIT, "nv: do mii_phy_probe\n"); - - /* Probe device for MII interface to PHY */ - if (mii_phy_probe(dev, &sc->miibus, nv_ifmedia_upd, nv_ifmedia_sts)) { - device_printf(dev, "MII without any phy!\n"); - error = ENXIO; - goto fail; - } - /* Setup interface parameters */ - ifp = &sc->sc_if; - ifp->if_softc = sc; - if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; - ifp->if_ioctl = nv_ioctl; - ifp->if_start = nv_ifstart; -#ifdef DEVICE_POLLING - ifp->if_poll = nv_poll; -#endif - ifp->if_watchdog = nv_watchdog; - ifp->if_timer = 0; - ifp->if_init = nv_init; - ifp->if_mtu = ETHERMTU; - ifp->if_baudrate = IF_Mbps(100); - ifp->if_capabilities |= IFCAP_VLAN_MTU; - ifq_set_maxlen(&ifp->if_snd, TX_RING_SIZE - 1); - ifq_set_ready(&ifp->if_snd); - - /* Attach to OS's managers. */ - ether_ifattach(ifp, sc->sc_macaddr, NULL); - - /* Activate our interrupt handler. - attach last to avoid lock */ - error = bus_setup_intr(sc->dev, sc->irq, INTR_NETSAFE, - nv_intr, sc, &sc->sc_ih, ifp->if_serializer); - if (error) { - ether_ifdetach(ifp); - device_printf(sc->dev, "couldn't set up interrupt handler\n"); - goto fail; - } - DEBUGOUT(NV_DEBUG_INIT, "nv: nv_attach - exit\n"); - -fail: - if (error) - nv_detach(dev); - - return (error); -} - -/* Detach interface for module unload */ -static int -nv_detach(device_t dev) -{ - struct nv_softc *sc = device_get_softc(dev); - struct ifnet *ifp; - int is_attached; - - ifp = &sc->arpcom.ac_if; - - DEBUGOUT(NV_DEBUG_DEINIT, "nv: nv_detach - entry\n"); - - lwkt_serialize_enter(ifp->if_serializer); - - is_attached = device_is_attached(dev); - if (is_attached) - nv_stop(sc); - - 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(NV_DEBUG_DEINIT, "nv: 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); - - lwkt_serialize_exit(ifp->if_serializer); - - if (is_attached) - ether_ifdetach(ifp); - - 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); - - nv_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); - - DEBUGOUT(NV_DEBUG_DEINIT, "nv: nv_detach - exit\n"); - return (0); -} - -/* Initialise interface and start it "RUNNING" */ -static void -nv_init(void *xsc) -{ - struct nv_softc *sc = xsc; - struct ifnet *ifp; - int error; - - DEBUGOUT(NV_DEBUG_INIT, "nv: nv_init - entry (%d)\n", sc->linkup); - - ifp = &sc->sc_if; - - /* Do nothing if already running */ - if (ifp->if_flags & IFF_RUNNING) - return; - - nv_stop(sc); - - DEBUGOUT(NV_DEBUG_INIT, "nv: do pfnInit\n"); - - nv_ifmedia_upd(ifp); - - /* Setup Hardware interface and allocate memory structures */ - error = sc->hwapi->pfnInit(sc->hwapi->pADCX, - 0, /* force speed */ - 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, sc->sc_macaddr); - - /* Setup multicast filter */ - nv_setmulti(sc); - - sc->hwapi->pfnStart(sc->hwapi->pADCX); - - /* Update interface parameters */ - ifp->if_flags |= IFF_RUNNING; - ifp->if_flags &= ~IFF_OACTIVE; - - /* - * Enable the interrupt. Currently the nvidia API does not support - * polling, if we do not call pfnEnableInterrupts() we cannot - * issue the nvidia callback to process interrupts. Call the - * interrupt service routine in case the interrupt got stuck during - * a reset, renegotiation, or timeout. - */ -#if 1 - lwkt_serialize_handler_enable(ifp->if_serializer); - sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX); -#else - if ((ifp->if_flags & IFF_POLLING) == 0) { - lwkt_serialize_handler_enable(ifp->if_serializer); - sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX); - } -#endif - nv_intr(sc); - - /* - * Reset watchdog and ring queue indexes. XXX if the interface - * is reset with pending tx packets queued to the actual device, - * the mbufs are currently lost. - */ - ifp->if_timer = 0; - sc->pending_txs = 0; - - callout_reset(&sc->nv_stat_timer, hz, nv_tick, sc); - - DEBUGOUT(NV_DEBUG_INIT, "nv: nv_init - exit\n"); -} - -#ifdef DEVICE_POLLING - -static void -nv_poll(struct ifnet *ifp, enum poll_cmd cmd, int count) -{ - struct nv_softc *sc = ifp->if_softc; - - switch(cmd) { - case POLL_REGISTER: - /* - * We must disable the hardware interrupt on the device - * as well as ensure that any interrupt queued prior to - * this point does not execute the handler function. - * - * NOTE! The nvidia API does not support polling with - * interrupts disabled, so we have to leave them turned on - * unfortunately. - */ -#if 0 - sc->hwapi->pfnDisableInterrupts(sc->hwapi->pADCX); - lwkt_serialize_handler_disable(ifp->if_serializer); -#endif - break; - case POLL_DEREGISTER: -#if 0 - lwkt_serialize_handler_enable(ifp->if_serializer); - sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX); -#endif - break; - case POLL_AND_CHECK_STATUS: - /* fall through */ - case POLL_ONLY: - if (ifp->if_flags & IFF_RUNNING) { - nv_intr(sc); - } - if (ifp->if_flags & IFF_RUNNING) { - if (!ifq_is_empty(&ifp->if_snd)) - nv_ifstart(ifp); - } - break; - } -} - -#endif - -/* Stop interface activity ie. not "RUNNING" */ -static void -nv_stop(struct nv_softc *sc) -{ - struct ifnet *ifp; - - DEBUGOUT(NV_DEBUG_RUNNING, "nv: nv_stop - entry\n"); - - ifp = &sc->sc_if; - ifp->if_timer = 0; - - /* Cancel tick timer */ - callout_stop(&sc->nv_stat_timer); - - /* - * Stop hardware activity. The serializer handler disablement call - * prevents any interrupt scheduled prior to this call from calling - * the handler. - */ - sc->hwapi->pfnDisableInterrupts(sc->hwapi->pADCX); - lwkt_serialize_handler_disable(ifp->if_serializer); - - sc->hwapi->pfnStop(sc->hwapi->pADCX, - AFFECT_RECEIVER | AFFECT_TRANSMITTER); - sc->hwapi->pfnClearTxDesc(sc->hwapi->pADCX); - - DEBUGOUT(NV_DEBUG_DEINIT, "nv: do pfnDeinit\n"); - /* Shutdown interface and deallocate memory buffers */ - if (sc->hwapi->pfnDeinit) - sc->hwapi->pfnDeinit(sc->hwapi->pADCX, 0); - - sc->linkup = 0; - sc->cur_rx = 0; - sc->pending_rxs = 0; - sc->pending_txs = 0; - - ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE); - - DEBUGOUT(NV_DEBUG_RUNNING, "nv: nv_stop - exit\n"); -} - -/* Shutdown interface for unload/reboot */ -static void -nv_shutdown(device_t dev) -{ - struct nv_softc *sc; - - DEBUGOUT(NV_DEBUG_DEINIT, "nv: nv_shutdown\n"); - - sc = device_get_softc(dev); - - /* Stop hardware activity */ - lwkt_serialize_enter(sc->sc_if.if_serializer); - nv_stop(sc); - lwkt_serialize_exit(sc->sc_if.if_serializer); -} - -/* Allocate TX ring buffers */ -static int -nv_init_rings(struct nv_softc *sc) -{ - int error, i; - - DEBUGOUT(NV_DEBUG_INIT, "nv: nv_init_rings - entry\n"); - - sc->cur_rx = sc->cur_tx = sc->pending_rxs = sc->pending_txs = 0; - /* Initialise RX ring */ - for (i = 0; i < RX_RING_SIZE; i++) { - struct nv_rx_desc *desc = sc->rx_desc + i; - struct nv_map_buffer *buf = &desc->buf; - - buf->mbuf = m_getcl(MB_DONTWAIT, MT_DATA, M_PKTHDR); - if (buf->mbuf == NULL) { - device_printf(sc->dev, "couldn't allocate mbuf\n"); - nv_free_rings(sc); - error = ENOBUFS; - goto fail; - } - buf->mbuf->m_len = buf->mbuf->m_pkthdr.len = MCLBYTES; - m_adj(buf->mbuf, ETHER_ALIGN); - - error = bus_dmamap_create(sc->mtag, 0, &buf->map); - if (error) { - device_printf(sc->dev, "couldn't create dma map\n"); - nv_free_rings(sc); - goto fail; - } - error = bus_dmamap_load_mbuf(sc->mtag, buf->map, buf->mbuf, - nv_dmamap_rx_cb, &desc->paddr, 0); - if (error) { - device_printf(sc->dev, "couldn't dma map mbuf\n"); - nv_free_rings(sc); - goto fail; - } - bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_PREREAD); - - desc->buflength = buf->mbuf->m_len; - desc->vaddr = mtod(buf->mbuf, caddr_t); - } - bus_dmamap_sync(sc->rtag, sc->rmap, - BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); - - /* Initialize TX ring */ - for (i = 0; i < TX_RING_SIZE; i++) { - struct nv_tx_desc *desc = sc->tx_desc + i; - struct nv_map_buffer *buf = &desc->buf; - - buf->mbuf = NULL; - - error = bus_dmamap_create(sc->mtag, 0, &buf->map); - if (error) { - device_printf(sc->dev, "couldn't create dma map\n"); - nv_free_rings(sc); - goto fail; - } - } - bus_dmamap_sync(sc->ttag, sc->tmap, - BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); - - DEBUGOUT(NV_DEBUG_INIT, "nv: nv_init_rings - exit\n"); - -fail: - return (error); -} - -/* Free the TX ring buffers */ -static void -nv_free_rings(struct nv_softc *sc) -{ - int i; - - DEBUGOUT(NV_DEBUG_DEINIT, "nv: nv_free_rings - entry\n"); - - for (i = 0; i < RX_RING_SIZE; i++) { - struct nv_rx_desc *desc = sc->rx_desc + i; - struct nv_map_buffer *buf = &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 = NULL; - } - - for (i = 0; i < TX_RING_SIZE; i++) { - struct nv_tx_desc *desc = sc->tx_desc + i; - struct nv_map_buffer *buf = &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 = NULL; - } - - DEBUGOUT(NV_DEBUG_DEINIT, "nv: nv_free_rings - exit\n"); -} - -/* Main loop for sending packets from OS to interface */ - -static void -nv_ifstart(struct ifnet *ifp) -{ - struct nv_softc *sc = ifp->if_softc; - struct nv_map_buffer *buf; - struct mbuf *m0, *m; - struct nv_tx_desc *desc; - ADAPTER_WRITE_DATA txdata; - int error, i; - - DEBUGOUT(NV_DEBUG_RUNNING, "nv: nv_ifstart - entry\n"); - - /* If link is down/busy or queue is empty do nothing */ - if ((ifp->if_flags & IFF_OACTIVE) || ifq_is_empty(&ifp->if_snd)) - return; - - /* Transmit queued packets until sent or TX ring is full */ - while (sc->pending_txs < TX_RING_SIZE) { - desc = sc->tx_desc + sc->cur_tx; - buf = &desc->buf; - - /* Get next packet to send. */ - m0 = ifq_dequeue(&ifp->if_snd, NULL); - - /* If nothing to send, return. */ - if (m0 == NULL) - return; - - /* Map MBUF for DMA access */ - error = bus_dmamap_load_mbuf(sc->mtag, buf->map, m0, - nv_dmamap_tx_cb, desc, BUS_DMA_NOWAIT); - - if (error && error != EFBIG) { - m_freem(m0); - sc->tx_errors++; - continue; - } - /* - * Packet has too many fragments - defrag into new mbuf - * cluster - */ - if (error) { - m = m_defrag(m0, MB_DONTWAIT); - if (m == NULL) { - m_freem(m0); - sc->tx_errors++; - continue; - } - m0 = m; - - error = bus_dmamap_load_mbuf(sc->mtag, buf->map, m, - nv_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 = m0; - txdata.ulNumberOfElements = desc->numfrags; - txdata.pvID = (PVOID)desc; - - /* Put fragments into API element list */ - txdata.ulTotalLength = buf->mbuf->m_len; - for (i = 0; i < desc->numfrags; i++) { - txdata.sElement[i].ulLength = (ulong)desc->frags[i].ds_len; - txdata.sElement[i].pPhysical = (PVOID)desc->frags[i].ds_addr; - } - - /* Send packet to Nvidia API for transmission */ - error = 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 = (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, "nv_ifstart: transmit queue is full\n"); - ifp->if_flags |= IFF_OACTIVE; - bus_dmamap_unload(sc->mtag, buf->map); - buf->mbuf = NULL; - m_freem(m0); /* XXX requeue */ - return; - - default: - /* The API failed to queue/send the packet so dump it */ - device_printf(sc->dev, "nv_ifstart: transmit error\n"); - bus_dmamap_unload(sc->mtag, buf->map); - m_freem(buf->mbuf); - buf->mbuf = NULL; - sc->tx_errors++; - return; - } - /* Set watchdog timer. */ - ifp->if_timer = 8; - - /* Copy packet to BPF tap */ - BPF_MTAP(ifp, m0); - } - ifp->if_flags |= IFF_OACTIVE; - - DEBUGOUT(NV_DEBUG_RUNNING, "nv: nv_ifstart - exit\n"); -} - -/* Handle IOCTL events */ -static int -nv_ioctl(struct ifnet *ifp, u_long command, caddr_t data, struct ucred *cr) -{ - struct nv_softc *sc = ifp->if_softc; - struct ifreq *ifr = (struct ifreq *) data; - struct mii_data *mii; - int error = 0; - - DEBUGOUT(NV_DEBUG_IOCTL, "nv: nv_ioctl - entry\n"); - - switch (command) { - case SIOCSIFMTU: - /* Set MTU size */ - if (ifp->if_mtu == ifr->ifr_mtu) - break; - if (ifr->ifr_mtu + ifp->if_hdrlen <= MAX_PACKET_SIZE_1518) { - ifp->if_mtu = ifr->ifr_mtu; - nv_stop(sc); - nv_init(sc); - } else - error = EINVAL; - break; - - case SIOCSIFFLAGS: - /* Setup interface flags */ - if (ifp->if_flags & IFF_UP) { - if ((ifp->if_flags & IFF_RUNNING) == 0) { - nv_init(sc); - break; - } - } else { - if (ifp->if_flags & IFF_RUNNING) { - nv_stop(sc); - break; - } - } - - /* Handle IFF_PROMISC and IFF_ALLMULTI flags. */ - nv_setmulti(sc); - break; - - case SIOCADDMULTI: - case SIOCDELMULTI: - /* Setup multicast filter */ - if (ifp->if_flags & IFF_RUNNING) { - nv_setmulti(sc); - } - break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - /* Get/Set interface media parameters */ - mii = device_get_softc(sc->miibus); - error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command); - break; - - default: - /* Everything else we forward to generic ether ioctl */ - error = ether_ioctl(ifp, command, data); - break; - } - - DEBUGOUT(NV_DEBUG_IOCTL, "nv: nv_ioctl - exit\n"); - - return (error); -} - -/* - * Interrupt service routine. The serializer has already been entered - * since we installed it in our bus_setup_intr() call. - */ -static void -nv_intr(void *arg) -{ - struct nv_softc *sc = arg; - struct ifnet *ifp = &sc->sc_if; - - DEBUGOUT(NV_DEBUG_INTERRUPT, "nv: nv_intr - entry\n"); - - /* - * Handle an interrupt event. Unfortunately the nvidia API - * does not support interrupt disablement when polling, so we - * have to re-enable after the query masks them off. - */ - if (sc->hwapi->pfnQueryInterrupt(sc->hwapi->pADCX)) { - sc->hwapi->pfnHandleInterrupt(sc->hwapi->pADCX); -#if 1 - lwkt_serialize_handler_enable(ifp->if_serializer); - sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX); -#else - if ((ifp->if_flags & IFF_POLLING) == 0) { - lwkt_serialize_handler_enable(ifp->if_serializer); - sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX); - } -#endif - } - if (!ifq_is_empty(&ifp->if_snd)) - nv_ifstart(ifp); - - /* If no pending packets we don't need a timeout */ - if (sc->pending_txs == 0) - sc->sc_if.if_timer = 0; - - DEBUGOUT(NV_DEBUG_INTERRUPT, "nv: nv_intr - exit\n"); -} - -/* - * Setup multicast filters - * - * Serialized on call - */ -static void -nv_setmulti(struct nv_softc *sc) -{ - struct ifnet *ifp; - struct ifmultiaddr *ifma; - PACKET_FILTER hwfilter; - int i; - u_int8_t oraddr[6]; - u_int8_t andaddr[6]; - - DEBUGOUT(NV_DEBUG_RUNNING, "nv: nv_setmulti - entry\n"); - - ifp = &sc->sc_if; - - /* Initialize filter */ - hwfilter.ulFilterFlags = 0; - for (i = 0; i < 6; i++) { - hwfilter.acMulticastAddress[i] = 0; - hwfilter.acMulticastMask[i] = 0; - } - - if (ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) { - /* Accept all packets */ - hwfilter.ulFilterFlags |= ACCEPT_ALL_PACKETS; - sc->hwapi->pfnSetPacketFilter(sc->hwapi->pADCX, &hwfilter); - return; - } - /* Setup multicast filter */ - LIST_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { - u_char *addrp; - - if (ifma->ifma_addr->sa_family != AF_LINK) - continue; - - addrp = LLADDR((struct sockaddr_dl *) ifma->ifma_addr); - for (i = 0; i < 6; i++) { - u_int8_t mcaddr = addrp[i]; - andaddr[i] &= mcaddr; - oraddr[i] |= mcaddr; - } - } - for (i = 0; i < 6; i++) { - hwfilter.acMulticastAddress[i] = andaddr[i] & oraddr[i]; - hwfilter.acMulticastMask[i] = andaddr[i] | (~oraddr[i]); - } - - /* Send filter to NVIDIA API */ - sc->hwapi->pfnSetPacketFilter(sc->hwapi->pADCX, &hwfilter); - - DEBUGOUT(NV_DEBUG_RUNNING, "nv: nv_setmulti - exit\n"); -} - -/* - * Change the current media/mediaopts - * - * Serialized on call - */ -static int -nv_ifmedia_upd(struct ifnet *ifp) -{ - struct nv_softc *sc = ifp->if_softc; - struct mii_data *mii; - - DEBUGOUT(NV_DEBUG_MII, "nv: nv_ifmedia_upd\n"); - - mii = device_get_softc(sc->miibus); - - if (mii->mii_instance) { - struct mii_softc *miisc; - for (miisc = LIST_FIRST(&mii->mii_phys); miisc != NULL; - miisc = LIST_NEXT(miisc, mii_list)) { - mii_phy_reset(miisc); - } - } - mii_mediachg(mii); - - return (0); -} - -/* - * Update current miibus PHY status of media - * - * Serialized on call - */ -static void -nv_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) -{ - struct nv_softc *sc; - struct mii_data *mii; - - DEBUGOUT(NV_DEBUG_MII, "nv: nv_ifmedia_sts\n"); - - sc = ifp->if_softc; - mii = device_get_softc(sc->miibus); - mii_pollstat(mii); - - ifmr->ifm_active = mii->mii_media_active; - ifmr->ifm_status = mii->mii_media_status; -} - -/* miibus tick timer - maintain link status */ -static void -nv_tick(void *xsc) -{ - struct nv_softc *sc = xsc; - struct mii_data *mii; - struct ifnet *ifp; - - ifp = &sc->sc_if; - lwkt_serialize_enter(ifp->if_serializer); - nv_update_stats(sc); - - mii = device_get_softc(sc->miibus); - mii_tick(mii); - - if ((mii->mii_media_status & IFM_ACTIVE) && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { - if (!ifq_is_empty(&ifp->if_snd)) - nv_ifstart(ifp); - } - callout_reset(&sc->nv_stat_timer, hz, nv_tick, sc); - lwkt_serialize_exit(ifp->if_serializer); -} - -/* Update ifnet data structure with collected interface stats from API */ -static void -nv_update_stats(struct nv_softc *sc) -{ - struct ifnet *ifp = &sc->sc_if; - ADAPTER_STATS stats; - - if (sc->hwapi) { - sc->hwapi->pfnGetStatistics(sc->hwapi->pADCX, &stats); - - ifp->if_ipackets = stats.ulSuccessfulReceptions; - ifp->if_ierrors = stats.ulMissedFrames + - stats.ulFailedReceptions + - stats.ulCRCErrors + - stats.ulFramingErrors + - stats.ulOverFlowErrors; - - ifp->if_opackets = stats.ulSuccessfulTransmissions; - ifp->if_oerrors = sc->tx_errors + - stats.ulFailedTransmissions + - stats.ulRetryErrors + - stats.ulUnderflowErrors + - stats.ulLossOfCarrierErrors + - stats.ulLateCollisionErrors; - - ifp->if_collisions = stats.ulLateCollisionErrors; - } -} - -/* miibus Read PHY register wrapper - calls Nvidia API entry point */ -static int -nv_miibus_readreg(device_t dev, int phy, int reg) -{ - struct nv_softc *sc = device_get_softc(dev); - ULONG data; - - DEBUGOUT(NV_DEBUG_MII, "nv: nv_miibus_readreg - entry\n"); - - ADAPTER_ReadPhy(sc->hwapi->pADCX, phy, reg, &data); - - DEBUGOUT(NV_DEBUG_MII, "nv: nv_miibus_readreg - exit\n"); - - return (data); -} - -/* miibus Write PHY register wrapper - calls Nvidia API entry point */ -static void -nv_miibus_writereg(device_t dev, int phy, int reg, int data) -{ - struct nv_softc *sc = device_get_softc(dev); - - DEBUGOUT(NV_DEBUG_MII, "nv: nv_miibus_writereg - entry\n"); - - ADAPTER_WritePhy(sc->hwapi->pADCX, phy, reg, (ulong)data); - - DEBUGOUT(NV_DEBUG_MII, "nv: nv_miibus_writereg - exit\n"); -} - -/* Watchdog timer to prevent PHY lockups */ -static void -nv_watchdog(struct ifnet *ifp) -{ - struct nv_softc *sc = ifp->if_softc; - - device_printf(sc->dev, "device timeout (%d) flags %d\n", - sc->pending_txs, ifp->if_flags & IFF_OACTIVE); - - sc->tx_errors++; - - nv_stop(sc); - ifp->if_flags &= ~IFF_RUNNING; - nv_init(sc); - - if (!ifq_is_empty(&ifp->if_snd)) - nv_ifstart(ifp); -} - -/* --- Start of NVOSAPI interface --- */ - -/* Allocate DMA enabled general use memory for API */ -static NV_SINT32 -nv_osalloc(PNV_VOID ctx, PMEMORY_BLOCK mem) -{ - struct nv_softc *sc; - bus_addr_t mem_physical; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_osalloc - %d\n", mem->uiLength); - - sc = (struct nv_softc *)ctx; - - mem->pLogical = (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 = vtophys(mem->pLogical); - mem->pPhysical = (PVOID)mem_physical; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_osalloc %p/%p - %d\n", - mem->pLogical, mem->pPhysical, mem->uiLength); - - return (1); -} - -/* Free allocated memory */ -static NV_SINT32 -nv_osfree(PNV_VOID ctx, PMEMORY_BLOCK mem) -{ - DEBUGOUT(NV_DEBUG_API, "nv: nv_osfree - %p - %d\n", - mem->pLogical, mem->uiLength); - - contigfree(mem->pLogical, PAGE_SIZE, M_DEVBUF); - return (1); -} - -/* Copied directly from nvnet.c */ -static NV_SINT32 -nv_osallocex(PNV_VOID ctx, PMEMORY_BLOCKEX mem_block_ex) -{ - MEMORY_BLOCK mem_block; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_osallocex\n"); - - mem_block_ex->pLogical = NULL; - mem_block_ex->uiLengthOrig = mem_block_ex->uiLength; - - if ((mem_block_ex->AllocFlags & ALLOC_MEMORY_ALIGNED) && - (mem_block_ex->AlignmentSize > 1)) { - DEBUGOUT(NV_DEBUG_API, " aligning on %d\n", - mem_block_ex->AlignmentSize); - mem_block_ex->uiLengthOrig += mem_block_ex->AlignmentSize; - } - mem_block.uiLength = mem_block_ex->uiLengthOrig; - - if (nv_osalloc(ctx, &mem_block) == 0) { - return (0); - } - mem_block_ex->pLogicalOrig = mem_block.pLogical; - mem_block_ex->pPhysicalOrigLow = (uintptr_t)mem_block.pPhysical; - mem_block_ex->pPhysicalOrigHigh = 0; - - mem_block_ex->pPhysical = mem_block.pPhysical; - mem_block_ex->pLogical = mem_block.pLogical; - - if (mem_block_ex->uiLength != mem_block_ex->uiLengthOrig) { - unsigned int offset; - offset = mem_block_ex->pPhysicalOrigLow & (mem_block_ex->AlignmentSize - 1); - - if (offset) { - mem_block_ex->pPhysical = (PVOID)((uintptr_t)mem_block_ex->pPhysical + - mem_block_ex->AlignmentSize - offset); - mem_block_ex->pLogical = (PVOID)((uintptr_t)mem_block_ex->pLogical + - mem_block_ex->AlignmentSize - offset); - } /* if (offset) */ - } /* if (mem_block_ex->uiLength != - * mem_block_ex->uiLengthOrig) */ - return (1); -} - -/* Copied directly from nvnet.c */ -static NV_SINT32 -nv_osfreeex(PNV_VOID ctx, PMEMORY_BLOCKEX mem_block_ex) -{ - MEMORY_BLOCK mem_block; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_osfreeex\n"); - - mem_block.pLogical = mem_block_ex->pLogicalOrig; - mem_block.pPhysical = (PVOID)((uintptr_t)mem_block_ex->pPhysicalOrigLow); - mem_block.uiLength = mem_block_ex->uiLengthOrig; - - return (nv_osfree(ctx, &mem_block)); -} - -/* Clear memory region */ -static NV_SINT32 -nv_osclear(PNV_VOID ctx, PNV_VOID mem, NV_SINT32 length) -{ - DEBUGOUT(NV_DEBUG_API, "nv: nv_osclear\n"); - memset(mem, 0, length); - return (1); -} - -/* Sleep for a tick */ -static NV_SINT32 -nv_osdelay(PNV_VOID ctx, NV_UINT32 usec) -{ - if (usec >= 1000000 / hz) { - tsleep(nv_osdelay, 0, "nvdelay", (usec * hz / 1000000) + 1); - } else { - DELAY(usec); - } - return (1); -} - -/* Allocate memory for rx buffer */ -static NV_SINT32 -nv_osallocrxbuf(PNV_VOID ctx, PMEMORY_BLOCK mem, PNV_VOID *id) -{ - struct nv_softc *sc = ctx; - struct nv_rx_desc *desc; - struct nv_map_buffer *buf; - int error; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_osallocrxbuf\n"); - - if (sc->pending_rxs == RX_RING_SIZE) { - device_printf(sc->dev, "rx ring buffer is full\n"); - goto fail; - } - desc = sc->rx_desc + sc->cur_rx; - buf = &desc->buf; - - if (buf->mbuf == NULL) { - buf->mbuf = m_getcl(MB_DONTWAIT, MT_DATA, M_PKTHDR); - if (buf->mbuf == NULL) { - device_printf(sc->dev, "failed to allocate memory\n"); - goto fail; - } - buf->mbuf->m_len = buf->mbuf->m_pkthdr.len = MCLBYTES; - m_adj(buf->mbuf, ETHER_ALIGN); - - error = bus_dmamap_load_mbuf(sc->mtag, buf->map, buf->mbuf, - nv_dmamap_rx_cb, &desc->paddr, 0); - if (error) { - device_printf(sc->dev, "failed to dmamap mbuf\n"); - m_freem(buf->mbuf); - buf->mbuf = NULL; - goto fail; - } - bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_PREREAD); - desc->buflength = buf->mbuf->m_len; - desc->vaddr = mtod(buf->mbuf, PVOID); - } - sc->pending_rxs++; - sc->cur_rx = (sc->cur_rx + 1) % RX_RING_SIZE; - - mem->pLogical = (void *)desc->vaddr; - mem->pPhysical = (void *)desc->paddr; - mem->uiLength = desc->buflength; - *id = (void *)desc; - - return (1); -fail: - return (0); -} - - -/* Free the rx buffer */ -static NV_SINT32 -nv_osfreerxbuf(PNV_VOID ctx, PMEMORY_BLOCK mem, PNV_VOID id) -{ - struct nv_softc *sc = ctx; - struct nv_rx_desc *desc; - struct nv_map_buffer *buf; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_osfreerxbuf\n"); - - desc = (struct nv_rx_desc *) id; - buf = &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 = NULL; - - return (1); -} - -/* This gets called by the Nvidia API after our TX packet has been sent */ -static NV_SINT32 -nv_ospackettx(PNV_VOID ctx, PNV_VOID id, NV_UINT32 success) -{ - struct nv_softc *sc = ctx; - struct nv_map_buffer *buf; - struct nv_tx_desc *desc = (struct nv_tx_desc *) id; - struct ifnet *ifp; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_ospackettx\n"); - - ifp = &sc->sc_if; - buf = &desc->buf; - sc->pending_txs--; - - /* Unload and free mbuf cluster */ - if (buf->mbuf == 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 = NULL; - - /* - * Make sure we are clear to go if we previously stalled due - * to a full ring. - */ - if (sc->pending_txs < TX_RING_SIZE) { - ifp->if_flags &= ~IFF_OACTIVE; - if (!ifq_is_empty(&ifp->if_snd)) - nv_ifstart(ifp); - } -fail: - return (1); -} - -/* This gets called by the Nvidia API when a new packet has been received */ -/* XXX What is newbuf used for? XXX */ -static NV_SINT32 -nv_ospacketrx(PNV_VOID ctx, PNV_VOID data, NV_UINT32 success, - NV_UINT8 *newbuf, NV_UINT8 priority) -{ - struct nv_softc *sc = ctx; - struct ifnet *ifp; - struct nv_rx_desc *desc; - struct nv_map_buffer *buf; - ADAPTER_READ_DATA *readdata; - - DEBUGOUT(NV_DEBUG_API, "nv: nv_ospacketrx\n"); - - ifp = &sc->sc_if; - - readdata = (ADAPTER_READ_DATA *) data; - desc = readdata->pvID; - buf = &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 = ifp; - buf->mbuf->m_pkthdr.len = buf->mbuf->m_len = readdata->ulTotalLength; - - bus_dmamap_unload(sc->mtag, buf->map); - - /* Give mbuf to OS. */ - ifp->if_input(ifp, buf->mbuf); - if (readdata->ulFilterMatch & ADREADFL_MULTICAST_MATCH) - ifp->if_imcasts++; - - /* Blat the mbuf pointer, kernel will free the mbuf cluster */ - buf->mbuf = NULL; - } else { - bus_dmamap_sync(sc->mtag, buf->map, BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(sc->mtag, buf->map); - m_freem(buf->mbuf); - buf->mbuf = NULL; - } - - sc->cur_rx = desc - sc->rx_desc; - sc->pending_rxs--; - - return (1); -} - -/* This gets called by NVIDIA API when the PHY link state changes */ -static NV_SINT32 -nv_oslinkchg(PNV_VOID ctx, NV_SINT32 enabled) -{ - DEBUGOUT(NV_DEBUG_API, "nv: nv_oslinkchg\n"); - - return (1); -} - - -/* Setup a watchdog timer */ -static NV_SINT32 -nv_osalloctimer(PNV_VOID ctx, PNV_VOID *timer) -{ - struct nv_softc *sc = (struct nv_softc *)ctx; - - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_osalloctimer\n"); - - callout_init(&sc->ostimer); - *timer = &sc->ostimer; - - return (1); -} - -/* Free the timer */ -static NV_SINT32 -nv_osfreetimer(PNV_VOID ctx, PNV_VOID timer) -{ - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_osfreetimer\n"); - - return (1); -} - -/* Setup timer parameters */ -static NV_SINT32 -nv_osinittimer(PNV_VOID ctx, PNV_VOID timer, PTIMER_FUNC func, PNV_VOID parameters) -{ - struct nv_softc *sc = (struct nv_softc *)ctx; - - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_osinittimer\n"); - - sc->ostimer_func = func; - sc->ostimer_params = parameters; - - return (1); -} - -static void -nv_ostimer_callback(void *data) -{ - struct nv_softc *sc = data; - struct ifnet *ifp = &sc->sc_if; - - lwkt_serialize_enter(ifp->if_serializer); - sc->ostimer_func(sc->ostimer_params); - lwkt_serialize_exit(ifp->if_serializer); -} - -/* - * Set the timer to go off - * - * XXX what the hell are the units for 'delay' ? They sure aren't ticks! - */ -static NV_SINT32 -nv_ossettimer(PNV_VOID ctx, PNV_VOID timer, NV_UINT32 delay) -{ - struct nv_softc *sc = ctx; - - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_ossettimer\n"); - kprintf("nv_ossettimer %d\n", (int)delay); - - callout_reset(&sc->ostimer, delay, nv_ostimer_callback, sc); - - return (1); -} - -/* Cancel the timer */ -static NV_SINT32 -nv_oscanceltimer(PNV_VOID ctx, PNV_VOID timer) -{ - struct nv_softc *sc = ctx; - - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_oscanceltimer\n"); - - callout_stop(&sc->ostimer); - - return (1); -} - -static NV_SINT32 -nv_ospreprocpkt(PNV_VOID ctx, PNV_VOID readdata, PNV_VOID *id, NV_UINT8 *newbuffer, - NV_UINT8 priority) -{ - /* Not implemented */ - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_ospreprocpkt\n"); - - return (1); -} - -static PNV_VOID -nv_ospreprocpktnopq(PNV_VOID ctx, PNV_VOID readdata) -{ - /* Not implemented */ - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_ospreprocpkt\n"); - - return (NULL); -} - -static NV_SINT32 -nv_osindicatepkt(PNV_VOID ctx, PNV_VOID *id, NV_UINT32 pktno) -{ - /* Not implemented */ - DEBUGOUT(NV_DEBUG_BROKEN, "nv: nv_osindicatepkt\n"); - - return (1); -} - -/* Allocate mutex context (already done in nv_attach) */ -static NV_SINT32 -nv_oslockalloc(PNV_VOID ctx, NV_SINT32 type, PNV_VOID *pLock) -{ - struct nv_softc *sc = (struct nv_softc *)ctx; - - DEBUGOUT(NV_DEBUG_LOCK, "nv: nv_oslockalloc\n"); - - *pLock = (void **)sc; - - return (1); -} - -/* Obtain a spin lock */ -static NV_SINT32 -nv_oslockacquire(PNV_VOID ctx, NV_SINT32 type, PNV_VOID lock) -{ - DEBUGOUT(NV_DEBUG_LOCK, "nv: nv_oslockacquire\n"); - - return (1); -} - -/* Release lock */ -static NV_SINT32 -nv_oslockrelease(PNV_VOID ctx, NV_SINT32 type, PNV_VOID lock) -{ - DEBUGOUT(NV_DEBUG_LOCK, "nv: nv_oslockrelease\n"); - - return (1); -} - -/* I have no idea what this is for */ -static PNV_VOID -nv_osreturnbufvirt(PNV_VOID ctx, PNV_VOID readdata) -{ - /* Not implemented */ - DEBUGOUT(NV_DEBUG_LOCK, "nv: nv_osreturnbufvirt\n"); - panic("nv: nv_osreturnbufvirtual not implemented\n"); - - return (NULL); -} - - -/* --- End on NVOSAPI interface --- */ diff --git a/sys/dev/netif/nv/if_nvreg.h b/sys/dev/netif/nv/if_nvreg.h deleted file mode 100644 index 331d70a89f..0000000000 --- a/sys/dev/netif/nv/if_nvreg.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (c) 2003 by 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 the - * documentation and/or other materials provided with the distribution. - * - * 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 PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * 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 ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: if_nvreg.h,v 1.6 2004/08/12 14:00:05 q Exp $ - * $FreeBSD: src/sys/dev/nve/if_nvereg.h,v 1.7 2005/12/07 17:38:03 obrien Exp $ - * $DragonFly: src/sys/dev/netif/nv/Attic/if_nvreg.h,v 1.13 2006/12/22 23:26:21 swildner Exp $ - */ - -#ifndef _IF_NVREG_H_ -#define _IF_NVREG_H_ - -/* Include NVIDIA Linux driver header files */ - -#define linux - -#include "nvenet_version.h" -#include "basetype.h" -#include "os.h" -#include "drvinfo.h" -#include "adapter.h" - -#undef linux - -#ifndef NVIDIA_VENDORID -#define NVIDIA_VENDORID 0x10DE -#endif - -#define NFORCE_MCPNET1_DEVICEID 0x01C3 -#define NFORCE_MCPNET2_DEVICEID 0x0066 -#define NFORCE_MCPNET3_DEVICEID 0x00D6 -#define NFORCE_MCPNET4_DEVICEID 0x0086 -#define NFORCE_MCPNET5_DEVICEID 0x008C -#define NFORCE_MCPNET6_DEVICEID 0x00E6 -#define NFORCE_MCPNET7_DEVICEID 0x00DF -#define NFORCE_MCPNET8_DEVICEID 0x0056 -#define NFORCE_MCPNET9_DEVICEID 0x0057 -#define NFORCE_MCPNET10_DEVICEID 0x0037 -#define NFORCE_MCPNET11_DEVICEID 0x0038 -#define NFORCE_MCPNET12_DEVICEID 0x0268 -#define NFORCE_MCPNET13_DEVICEID 0x0269 - -#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 NV_DEBUG 0x0000 -#define NV_DEBUG_INIT 0x0001 -#define NV_DEBUG_RUNNING 0x0002 -#define NV_DEBUG_DEINIT 0x0004 -#define NV_DEBUG_IOCTL 0x0008 -#define NV_DEBUG_INTERRUPT 0x0010 -#define NV_DEBUG_API 0x0020 -#define NV_DEBUG_LOCK 0x0040 -#define NV_DEBUG_BROKEN 0x0080 -#define NV_DEBUG_MII 0x0100 -#define NV_DEBUG_ALL 0xFFFF - -#if NV_DEBUG -#define DEBUGOUT(level, fmt, args...) if (NV_DEBUG & level) \ - kprintf(fmt, ## args) -#else -#define DEBUGOUT(level, fmt, args...) -#endif - -typedef unsigned long ulong; - -struct nv_map_buffer { - struct mbuf *mbuf; /* mbuf receiving packet */ - bus_dmamap_t map; /* DMA map */ -}; - -struct nv_dma_info { - bus_dma_tag_t tag; - struct nv_map_buffer buf; - u_int16_t buflength; - caddr_t vaddr; /* Virtual memory address */ - bus_addr_t paddr; /* DMA physical address */ -}; - -struct nv_rx_desc { - struct nv_rx_desc *next; - struct nv_map_buffer buf; - u_int16_t buflength; - caddr_t vaddr; - bus_addr_t paddr; -}; - -struct nv_tx_desc { - /* Don't add anything above this structure */ - TX_INFO_ADAP TxInfoAdap; - struct nv_tx_desc *next; - struct nv_map_buffer buf; - u_int16_t buflength; - u_int32_t numfrags; - bus_dma_segment_t frags[NV_MAX_FRAGS + 1]; -}; - -struct nv_softc { - struct arpcom arpcom; /* interface info */ - struct resource *res; - struct resource *irq; - - ADAPTER_API *hwapi; - OS_API osapi; - - device_t miibus; - device_t dev; - u_int32_t unit; - struct callout nv_stat_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 nv_rx_desc *rx_desc; - struct nv_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; - - u_int32_t flags; - u_int32_t miicfg; - int spl; - - /* 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 nv_type { - u_int16_t vid_id; - u_int16_t dev_id; - char *name; -}; - -#define sc_if arpcom.ac_if -#define sc_macaddr arpcom.ac_enaddr - -#define IF_Kbps(x) ((x) * 1000) /* kilobits/sec. */ -#define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ -#define ETHER_ALIGN 2 - -extern int ADAPTER_ReadPhy (PVOID pContext, ULONG ulPhyAddr, ULONG ulReg, ULONG *pulVal); -extern int ADAPTER_WritePhy (PVOID pContext, ULONG ulPhyAddr, ULONG ulReg, ULONG ulVal); -extern int ADAPTER_Init (PVOID pContext, USHORT usForcedSpeed, UCHAR ucForceDpx, UCHAR ucForceMode, UINT *puiLinkState); -#endif diff --git a/sys/dev/netif/nv/os.h.patch b/sys/dev/netif/nv/os.h.patch deleted file mode 100644 index b1768fa2e4..0000000000 --- a/sys/dev/netif/nv/os.h.patch +++ /dev/null @@ -1,60 +0,0 @@ -$DragonFly: src/sys/dev/netif/nv/Attic/os.h.patch,v 1.2 2005/04/04 18:45:07 joerg Exp $ - ---- os.h.orig 2005-03-12 10:59:28.000000000 +0100 -+++ os.h 2005-04-02 20:33:43.000000000 +0200 -@@ -28,9 +28,9 @@ - - #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 -+/* 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 -@@ -56,7 +56,7 @@ - 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 -+ NV_UINT16 AlignmentSize; /*always power of 2 */ - /* Following three fields used for aligned memory allocation */ - PNV_VOID pLogicalOrig; - NV_UINT32 pPhysicalOrigLow; -@@ -65,7 +65,7 @@ - } MEMORY_BLOCKEX, *PMEMORY_BLOCKEX; - - --// The typedefs for the OS functions -+/* The typedefs for the OS functions */ - typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOC) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem); - typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREE) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem); - typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOCEX) (PNV_VOID pOSCX, PMEMORY_BLOCKEX pMem); -@@ -92,14 +92,14 @@ - typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_RELEASE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock); - typedef NV_API_CALL PNV_VOID (* PFN_RETURN_BUFFER_VIRTUAL) (PNV_VOID pvContext, PNV_VOID pvADReadData); - --// Here are the OS functions that those objects below the OS interface --// can call up to. -+/* 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 -+ /* OS Context -- this is a parameter to every OS API call */ - PNV_VOID pOSCX; - -- // Basic OS functions -+ /* Basic OS functions */ - PFN_MEMORY_ALLOC pfnAllocMemory; - PFN_MEMORY_FREE pfnFreeMemory; - PFN_MEMORY_ALLOCEX pfnAllocMemoryEx; -@@ -125,4 +125,4 @@ - PFN_RETURN_BUFFER_VIRTUAL pfnReturnBufferVirtual; - } OS_API, *POS_API; - --#endif // _OS_H_ -+#endif /* _OS_H_ */ diff --git a/sys/dev/netif/nv/phy.h.patch b/sys/dev/netif/nv/phy.h.patch deleted file mode 100644 index e3a4d669fa..0000000000 --- a/sys/dev/netif/nv/phy.h.patch +++ /dev/null @@ -1,158 +0,0 @@ -$DragonFly: src/sys/dev/netif/nv/Attic/phy.h.patch,v 1.2 2005/04/04 18:45:07 joerg Exp $ - ---- phy.h.orig 2005-03-12 10:59:28.000000000 +0100 -+++ phy.h 2005-04-02 20:35:16.000000000 +0200 -@@ -22,8 +22,8 @@ - #ifndef _PHY_H_ - #define _PHY_H_ - --//#include "basetype.h" --//#include "nvevent.h" -+/*#include "basetype.h" */ -+/*#include "nvevent.h" */ - - #ifdef __cplusplus - extern "C" { -@@ -34,9 +34,9 @@ - - #define HDP_VERSION_STRING "HDR P: $Revision: #23 $" - --// --// Defaults for PHY timeout values. --// -+/* -+** 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 -@@ -45,13 +45,13 @@ - #define PHY_POWER_DOWN_US_TIMEOUT_DEFAULT 500 - - --///////////////////////////////////////////////////////////////////////// --// The phy module knows the values that need to go into the phy registers --// 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 the --// phy registers. This structure with appropriate routines will be provided --// in the PHY_Open call. -+/***********************************************************************/ -+/* The phy module knows the values that need to go into the phy registers -+** 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 the -+** phy registers. This structure with appropriate routines will be provided -+** in the PHY_Open call. */ - - typedef NV_API_CALL NV_SINT32 (* PFN_READ_PHY) (PNV_VOID pvData, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 *pulValue); - typedef NV_API_CALL NV_SINT32 (* PFN_WRITE_PHY) (PNV_VOID pvData, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 ulValue); -@@ -61,13 +61,13 @@ - PNV_VOID pADCX; - PFN_READ_PHY pfnRead; - PFN_WRITE_PHY pfnWrite; -- // PFN_EVENT_OCCURED pfnEventOccurred; -+ /* 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. -- // -+ /* -+ ** 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; -@@ -75,11 +75,11 @@ - NV_UINT32 PhyPowerdownOnCloseInus; - - } PHY_SUPPORT_API, *PPHY_SUPPORT_API; --///////////////////////////////////////////////////////////////////////// -+/***********************************************************************/ - - --///////////////////////////////////////////////////////////////////////// --// The functional typedefs for the PHY Api -+/***********************************************************************/ -+/* The functional typedefs for the PHY Api */ - typedef NV_SINT32 (* PFN_PHY_INIT) (PNV_VOID pvContext, NV_UINT32 *pulLinkState, NV_UINT32 PhyMode); - typedef NV_SINT32 (* PFN_PHY_DEINIT) (PNV_VOID pvContext); - typedef NV_SINT32 (* PFN_PHY_CLOSE) (PNV_VOID pvContext); -@@ -95,8 +95,8 @@ - - typedef struct _PHY_API - { -- // This is the context to pass back in as the first arg on all -- // the calls in the API below. -+ /* 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; -@@ -112,22 +112,22 @@ - 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. -+/***********************************************************************/ -+/* 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. -+/***********************************************************************/ -+/* 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 -@@ -144,21 +144,21 @@ - - #define PHY_INVALID_PHY_ADDR 0xFFFF; - --///////////////////////////////////////////////////////////////////////// -+/***********************************************************************/ - --// This value can be used in the ulPhyLinkSpeed field. -+/* This value can be used in the ulPhyLinkSpeed field. */ - #define PHY_LINK_SPEED_UNKNOWN 0x0FFFFFFFF - --// --// Values used to configure PHY mode. --// -+/* -+** 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" -+} /* extern "C" */ - #endif - --#endif //_PHY_H_ -+#endif /*_PHY_H_ */ -- 2.41.0