summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev
diff options
context:
space:
mode:
authorbrueffer <brueffer@FreeBSD.org>2014-02-16 12:22:43 +0000
committerbrueffer <brueffer@FreeBSD.org>2014-02-16 12:22:43 +0000
commit4c9c4234e2f0d9d5f8b301910bbd9aa472cca97a (patch)
treee65fa3abe41e609b177c58b38973f56b1d8d319d /sys/contrib/dev
parentb2601918d47021b4cba77ee0e36fd65adf6676a4 (diff)
downloadFreeBSD-src-4c9c4234e2f0d9d5f8b301910bbd9aa472cca97a.zip
FreeBSD-src-4c9c4234e2f0d9d5f8b301910bbd9aa472cca97a.tar.gz
Retire the nve(4) driver; nfe(4) has been the default driver for NVIDIA
nForce MCP adapters for a long time. Yays: jhb, remko, yongari Nays: none on the current and stable lists
Diffstat (limited to 'sys/contrib/dev')
-rw-r--r--sys/contrib/dev/nve/adapter.h583
-rw-r--r--sys/contrib/dev/nve/amd64/nvenetlib.README52
-rw-r--r--sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu321
-rw-r--r--sys/contrib/dev/nve/basetype.h281
-rw-r--r--sys/contrib/dev/nve/drvinfo.h190
-rw-r--r--sys/contrib/dev/nve/i386/nvenetlib.README52
-rw-r--r--sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu320
-rw-r--r--sys/contrib/dev/nve/nvenet_version.h29
-rw-r--r--sys/contrib/dev/nve/os.h128
-rw-r--r--sys/contrib/dev/nve/phy.h164
10 files changed, 0 insertions, 2120 deletions
diff --git a/sys/contrib/dev/nve/adapter.h b/sys/contrib/dev/nve/adapter.h
deleted file mode 100644
index 40520e9..0000000
--- a/sys/contrib/dev/nve/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/nve/amd64/nvenetlib.README b/sys/contrib/dev/nve/amd64/nvenetlib.README
deleted file mode 100644
index 3b93feb..0000000
--- a/sys/contrib/dev/nve/amd64/nvenetlib.README
+++ /dev/null
@@ -1,52 +0,0 @@
-$FreeBSD$
-
-The installation and use of this software is subject to the following license terms and conditions:
-
-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") enclosed herewith, 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, install or use the SOFTWARE.
-
-RECITALS
-Use of NVIDIA's products requires three elements: the SOFTWARE, the hardware on a computer motherboard, and a personal computer. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not 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 agreement does not cover that sale, since it may not necessarily be sold as a package with the SOFTWARE. This agreement sets forth the terms and conditions of the SOFTWARE LICENSE only.
-
-1. DEFINITIONS
-
-1.1 Customer. Customer means the entity or individual that installs or uses 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 operating system may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for uncompressing/compressing files). SOFTWARE designed exclusively for use on the Linux Operating system but which has been authorized by NVIDIA for use on the FreeBSD Operating System may also 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.
-
-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 agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of California.
-
-6. DISCLAIMER OF WARRANTIES AND LIMITATION ON LIABILITY
-
-6.1 No Warranties. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, 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
-
-The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. 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 agreement 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. 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. This LICENSE may only be modified in writing signed by an authorized officer of NVIDIA.
diff --git a/sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu b/sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu
deleted file mode 100644
index b4a4428..0000000
--- a/sys/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu
+++ /dev/null
@@ -1,321 +0,0 @@
-$FreeBSD$
-begin-base64 644 nvenetlib.o.bz2
-QlpoOTFBWSZTWQrVCikAPRD////////////////////////////+////////////////4ETdfd7c
-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
-6e5tIR140NovoAX/8XckU4UJAK1QopA=
-====
diff --git a/sys/contrib/dev/nve/basetype.h b/sys/contrib/dev/nve/basetype.h
deleted file mode 100644
index fd38148..0000000
--- a/sys/contrib/dev/nve/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/nve/drvinfo.h b/sys/contrib/dev/nve/drvinfo.h
deleted file mode 100644
index 41c659a..0000000
--- a/sys/contrib/dev/nve/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/nve/i386/nvenetlib.README b/sys/contrib/dev/nve/i386/nvenetlib.README
deleted file mode 100644
index 3b93feb..0000000
--- a/sys/contrib/dev/nve/i386/nvenetlib.README
+++ /dev/null
@@ -1,52 +0,0 @@
-$FreeBSD$
-
-The installation and use of this software is subject to the following license terms and conditions:
-
-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") enclosed herewith, 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, install or use the SOFTWARE.
-
-RECITALS
-Use of NVIDIA's products requires three elements: the SOFTWARE, the hardware on a computer motherboard, and a personal computer. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not 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 agreement does not cover that sale, since it may not necessarily be sold as a package with the SOFTWARE. This agreement sets forth the terms and conditions of the SOFTWARE LICENSE only.
-
-1. DEFINITIONS
-
-1.1 Customer. Customer means the entity or individual that installs or uses 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 operating system may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for uncompressing/compressing files). SOFTWARE designed exclusively for use on the Linux Operating system but which has been authorized by NVIDIA for use on the FreeBSD Operating System may also 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.
-
-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 agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of California.
-
-6. DISCLAIMER OF WARRANTIES AND LIMITATION ON LIABILITY
-
-6.1 No Warranties. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, 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
-
-The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. 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 agreement 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. 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. This LICENSE may only be modified in writing signed by an authorized officer of NVIDIA.
diff --git a/sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu b/sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu
deleted file mode 100644
index a10177b..0000000
--- a/sys/contrib/dev/nve/i386/nvenetlib.o.bz2.uu
+++ /dev/null
@@ -1,320 +0,0 @@
-$FreeBSD$
-begin-base64 644 nvenetlib.o.bz2
-QlpoOTFBWSZTWSDHheUAMsL/////////////////////////////////////////////4EQzTUNc
-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
-WmiaD/8XckU4UJAgx4Xl
-====
diff --git a/sys/contrib/dev/nve/nvenet_version.h b/sys/contrib/dev/nve/nvenet_version.h
deleted file mode 100644
index 6e12d88..0000000
--- a/sys/contrib/dev/nve/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/nve/os.h b/sys/contrib/dev/nve/os.h
deleted file mode 100644
index 4749543..0000000
--- a/sys/contrib/dev/nve/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/nve/phy.h b/sys/contrib/dev/nve/phy.h
deleted file mode 100644
index 87596a5..0000000
--- a/sys/contrib/dev/nve/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_
OpenPOWER on IntegriCloud