summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/nve/adapter.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/nve/adapter.h')
-rw-r--r--sys/contrib/dev/nve/adapter.h583
1 files changed, 583 insertions, 0 deletions
diff --git a/sys/contrib/dev/nve/adapter.h b/sys/contrib/dev/nve/adapter.h
new file mode 100644
index 0000000..40520e9
--- /dev/null
+++ b/sys/contrib/dev/nve/adapter.h
@@ -0,0 +1,583 @@
+/***************************************************************************\
+|* *|
+|* 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_
OpenPOWER on IntegriCloud