adapter.h revision 143439
1/***************************************************************************\ 2|* *| 3|* Copyright 2001-2004 NVIDIA Corporation. All Rights Reserved. *| 4|* *| 5|* THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL *| 6|* TO NVIDIA, CORPORATION. USE, REPRODUCTION OR DISCLOSURE TO ANY *| 7|* THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP. *| 8|* *| 9|* THE INFORMATION CONTAINED HEREIN IS PROVIDED "AS IS" WITHOUT *| 10|* EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED *| 11|* WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A *| 12|* PARTICULAR PURPOSE. *| 13|* *| 14\***************************************************************************/ 15 16/* 17 FILE: adapter.h 18 DATE: 2/7/00 19 20 This file contains the hardware interface to the ethernet adapter. 21*/ 22 23#ifndef _ADAPTER_H_ 24#define _ADAPTER_H_ 25 26#ifdef __cplusplus 27extern "C" { 28#endif 29 30#define HDA_VERSION_STRING "HDR A: $Revision: #46 $" 31 32#ifdef MODS_NETWORK_BUILD 33#ifndef _DRVAPP_H_ 34#include "drvapp.h" 35#endif 36#endif 37 38////////////////////////////////////////////////////////////////// 39// For the set and get configuration calls. 40typedef struct _ADAPTER_CONFIG 41{ 42 NV_UINT32 ulFlags; 43} ADAPTER_CONFIG, *PADAPTER_CONFIG; 44////////////////////////////////////////////////////////////////// 45 46typedef struct _ADAPTER_WRITE_OFFLOAD 47{ 48 NV_UINT32 usBitmask; 49 NV_UINT32 ulMss; 50 51} ADAPTER_WRITE_OFFLOAD; 52 53////////////////////////////////////////////////////////////////// 54// For the ADAPTER_Write1 call. 55/* This scatter gather list should be same as defined in ndis.h by MS. 56 For ULONG_PTR MS header file says that it will be of same size as 57 pointer. It has been defined to take care of casting between differenet 58 sizes. 59*/ 60typedef struct _NVSCATTER_GATHER_ELEMENT { 61 NV_UINT32 PhysLow; 62 NV_UINT32 PhysHigh; 63 NV_UINT32 Length; 64 NV_VOID *Reserved; 65} NVSCATTER_GATHER_ELEMENT, *PNVSCATTER_GATHER_ELEMENT; 66 67#ifndef linux 68#pragma warning(disable:4200) 69#endif 70typedef struct _NVSCATTER_GATHER_LIST { 71 NV_UINT32 NumberOfElements; 72 NV_VOID *Reserved; 73 NVSCATTER_GATHER_ELEMENT Elements[0]; // Made 0 sized element to remove MODS compilation error 74 // Elements[0] and Elements[] have the same effect. 75 // sizeof(NVSCATTER_GATHER_LIST) is the same (value of 8) in both cases 76 // And both lead to Warning 4200 in MSVC 77} NVSCATTER_GATHER_LIST, *PNVSCATTER_GATHER_LIST; 78#ifndef linux 79#pragma warning(default:4200) 80#endif 81 82typedef struct _ADAPTER_WRITE_DATA1 83{ 84 NV_UINT32 ulTotalLength; 85 PNV_VOID pvID; 86 NV_UINT8 uc8021pPriority; 87 ADAPTER_WRITE_OFFLOAD *psOffload; 88 PNVSCATTER_GATHER_LIST pNVSGL; 89} ADAPTER_WRITE_DATA1, *PADAPTER_WRITE_DATA1; 90 91 92////////////////////////////////////////////////////////////////// 93// For the ADAPTER_Write call. 94typedef struct _ADAPTER_WRITE_ELEMENT 95{ 96 PNV_VOID pPhysical; 97 NV_UINT32 ulLength; 98} ADAPTER_WRITE_ELEMENT, *PADAPTER_WRITE_ELEMENT; 99 100 101#define ADAPTER_WRITE_OFFLOAD_BP_SEGOFFLOAD 0 102#define ADAPTER_WRITE_OFFLOAD_BP_IPV4CHECKSUM 1 103#define ADAPTER_WRITE_OFFLOAD_BP_IPV6CHECKSUM 2 104#define ADAPTER_WRITE_OFFLOAD_BP_TCPCHECKSUM 3 105#define ADAPTER_WRITE_OFFLOAD_BP_UDPCHECKSUM 4 106#define ADAPTER_WRITE_OFFLOAD_BP_IPCHECKSUM 5 107 108 109// pvID is a value that will be passed back into OSAPI.pfnPacketWasSent 110// when the transmission completes. if pvID is NULL, the ADAPTER code 111// assumes the caller does not want the pfnPacketWasSent callback. 112typedef struct _ADAPTER_WRITE_DATA 113{ 114 NV_UINT32 ulNumberOfElements; 115 NV_UINT32 ulTotalLength; 116 PNV_VOID pvID; 117 NV_UINT8 uc8021pPriority; 118 ADAPTER_WRITE_OFFLOAD *psOffload; 119 ADAPTER_WRITE_ELEMENT sElement[100]; 120} ADAPTER_WRITE_DATA, *PADAPTER_WRITE_DATA; 121////////////////////////////////////////////////////////////////// 122 123 124 125////////////////////////////////////////////////////////////////// 126// For the ADAPTER_Read call. 127typedef struct _ADAPTER_READ_ELEMENT 128{ 129 PNV_VOID pPhysical; 130 NV_UINT32 ulLength; 131} ADAPTER_READ_ELEMENT, *PADAPTER_READ_ELEMENT; 132 133typedef struct _ADAPTER_READ_OFFLOAD 134{ 135 NV_UINT8 ucChecksumStatus; 136 137} ADAPTER_READ_OFFLOAD; 138 139typedef struct _ADAPTER_READ_DATA 140{ 141 NV_UINT32 ulNumberOfElements; 142 NV_UINT32 ulTotalLength; 143 PNV_VOID pvID; 144 NV_UINT32 ulFilterMatch; 145 ADAPTER_READ_OFFLOAD sOffload; 146 ADAPTER_READ_ELEMENT sElement[10]; 147} ADAPTER_READ_DATA, *PADAPTER_READ_DATA; 148 149 150#define RDFLAG_CHK_NOCHECKSUM 0 151#define RDFLAG_CHK_IPPASSTCPFAIL 1 152#define RDFLAG_CHK_IPPASSUDPFAIL 2 153#define RDFLAG_CHK_IPFAIL 3 154#define RDFLAG_CHK_IPPASSNOTCPUDP 4 155#define RDFLAG_CHK_IPPASSTCPPASS 5 156#define RDFLAG_CHK_IPPASSUDPPASS 6 157#define RDFLAG_CHK_RESERVED 7 158 159 160// The ulFilterMatch flag can be a logical OR of the following 161#define ADREADFL_UNICAST_MATCH 0x00000001 162#define ADREADFL_MULTICAST_MATCH 0x00000002 163#define ADREADFL_BROADCAST_MATCH 0x00000004 164////////////////////////////////////////////////////////////////// 165 166 167 168////////////////////////////////////////////////////////////////// 169// For the ADAPTER_GetPowerCapabilities call. 170typedef struct _ADAPTER_POWERCAPS 171{ 172 NV_UINT32 ulPowerFlags; 173 NV_UINT32 ulMagicPacketWakeUpFlags; 174 NV_UINT32 ulPatternWakeUpFlags; 175 NV_UINT32 ulLinkChangeWakeUpFlags; 176 NV_SINT32 iMaxWakeUpPatterns; 177} ADAPTER_POWERCAPS, *PADAPTER_POWERCAPS; 178 179// For the ADAPTER_GetPowerState and ADAPTER_SetPowerState call. 180typedef struct _ADAPTER_POWERSTATE 181{ 182 NV_UINT32 ulPowerFlags; 183 NV_UINT32 ulMagicPacketWakeUpFlags; 184 NV_UINT32 ulPatternWakeUpFlags; 185 NV_UINT32 ulLinkChangeWakeUpFlags; 186} ADAPTER_POWERSTATE, *PADAPTER_POWERSTATE; 187 188// Each of the flag fields in the POWERCAPS structure above can have 189// any of the following bitflags set giving the capabilites of the 190// adapter. In the case of the wake up fields, these flags mean that 191// wake up can happen from the specified power state. 192 193// For the POWERSTATE structure, the ulPowerFlags field should just 194// have one of these bits set to go to that particular power state. 195// The WakeUp fields can have one or more of these bits set to indicate 196// what states should be woken up from. 197#define POWER_STATE_D0 0x00000001 198#define POWER_STATE_D1 0x00000002 199#define POWER_STATE_D2 0x00000004 200#define POWER_STATE_D3 0x00000008 201 202#define POWER_STATE_ALL (POWER_STATE_D0 | \ 203 POWER_STATE_D1 | \ 204 POWER_STATE_D2 | \ 205 POWER_STATE_D3) 206////////////////////////////////////////////////////////////////// 207 208 209 210////////////////////////////////////////////////////////////////// 211// The ADAPTER_GetPacketFilterCaps call returns a NV_UINT32 that can 212// have the following capability bits set. 213#define ACCEPT_UNICAST_PACKETS 0x00000001 214#define ACCEPT_MULTICAST_PACKETS 0x00000002 215#define ACCEPT_BROADCAST_PACKETS 0x00000004 216#define ACCEPT_ALL_PACKETS 0x00000008 217 218#define ETH_LENGTH_OF_ADDRESS 6 219 220// The ADAPTER_SetPacketFilter call uses this structure to know what 221// packet filter to set. The ulPacketFilter field can contain some 222// union of the bit flags above. The acMulticastMask array holds a 223// 48 bit MAC address mask with a 0 in every bit position that should 224// be ignored on compare and a 1 in every bit position that should 225// be taken into account when comparing to see if the destination 226// address of a packet should be accepted for multicast. 227typedef struct _PACKET_FILTER 228{ 229 NV_UINT32 ulFilterFlags; 230 NV_UINT8 acMulticastAddress[ETH_LENGTH_OF_ADDRESS]; 231 NV_UINT8 acMulticastMask[ETH_LENGTH_OF_ADDRESS]; 232} PACKET_FILTER, *PPACKET_FILTER; 233////////////////////////////////////////////////////////////////// 234 235 236////////////////////////////////////////////////////////////////// 237// A WAKE_UP_PATTERN is a 128-byte pattern that the adapter can 238// look for in incoming packets to decide when to wake up. Higher- 239// level protocols can use this to, for example, wake up the 240// adapter whenever it sees an IP packet that is addressed to it. 241// A pattern consists of 128 bits of byte masks that indicate 242// which bytes in the packet are relevant to the pattern, plus 243// values for each byte. 244#define WAKE_UP_PATTERN_SIZE 128 245 246typedef struct _WAKE_UP_PATTERN 247{ 248 NV_UINT32 aulByteMask[WAKE_UP_PATTERN_SIZE/32]; 249 NV_UINT8 acData[WAKE_UP_PATTERN_SIZE]; 250} WAKE_UP_PATTERN, *PWAKE_UP_PATTERN; 251 252 253 254// 255// 256// Adapter offload 257// 258typedef struct _ADAPTER_OFFLOAD { 259 260 NV_UINT32 Type; 261 NV_UINT32 Value0; 262 263} ADAPTER_OFFLOAD, *PADAPTER_OFFLOAD; 264 265#define ADAPTER_OFFLOAD_VLAN 0x00000001 266#define ADAPTER_OFFLOAD_IEEE802_1P 0x00000002 267#define ADAPTER_OFFLOAD_IEEE802_1PQ_PAD 0x00000004 268 269////////////////////////////////////////////////////////////////// 270 271// CMNDATA_OS_ADAPTER 272// Structure common to OS and Adapter layers 273// Used for moving data from the OS layer to the adapter layer through SetCommonData 274// function call from OS layer to Adapter layer 275// 276 277typedef struct _CMNDATA_OS_ADAPTER 278{ 279#ifndef linux 280 ASF_SEC0_BASE sRegSec0Base; 281#endif 282 NV_UINT32 bFPGA; 283 NV_UINT32 ulFPGAEepromSize; 284 NV_UINT32 bChecksumOffloadEnable; 285 NV_UINT32 ulChecksumOffloadBM; 286 NV_UINT32 ulChecksumOffloadOS; 287 NV_UINT32 ulMediaIF; 288 NV_UINT32 bOemCustomEventRead; 289 290 // Debug only right now 291 //!!! Beware mods is relying on the fields blow. 292 NV_UINT32 ulWatermarkTFBW; 293 NV_UINT32 ulBackoffRseed; 294 NV_UINT32 ulBackoffSlotTime; 295 NV_UINT32 ulModeRegTxReadCompleteEnable; 296 NV_UINT32 ulFatalErrorRegister; 297 298} CMNDATA_OS_ADAPTER; 299 300 301////////////////////////////////////////////////////////////////// 302// The functional typedefs for the ADAPTER Api 303typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_CLOSE) (PNV_VOID pvContext, NV_UINT8 ucIsPowerDown); 304typedef 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); 305typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_DEINIT) (PNV_VOID pvContext, NV_UINT8 ucIsPowerDown); 306typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_START) (PNV_VOID pvContext); 307typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_STOP) (PNV_VOID pvContext, NV_UINT8 ucIsPowerDown); 308typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_QUERY_WRITE_SLOTS) (PNV_VOID pvContext); 309typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE) (PNV_VOID pvContext, ADAPTER_WRITE_DATA *pADWriteData); 310typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE1) (PNV_VOID pvContext, ADAPTER_WRITE_DATA1 *pADWriteData1); 311typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_QUERY_INTERRUPT) (PNV_VOID pvContext); 312typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_HANDLE_INTERRUPT) (PNV_VOID pvContext); 313typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_DISABLE_INTERRUPTS) (PNV_VOID pvContext); 314typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_ENABLE_INTERRUPTS) (PNV_VOID pvContext); 315typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_CLEAR_INTERRUPTS) (PNV_VOID pvContext); 316typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_CLEAR_TX_DESC) (PNV_VOID pvContext); 317typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_SPEED) (PNV_VOID pvContext); 318typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_MODE) (PNV_VOID pvContext); 319typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_LINK_STATE) (PNV_VOID pvContext, NV_UINT32 *pulLinkState); 320typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_IS_LINK_INITIALIZING) (PNV_VOID pvContext); 321typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_RESET_PHY_INIT_STATE) (PNV_VOID pvContext); 322typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_TRANSMIT_QUEUE_SIZE) (PNV_VOID pvContext); 323typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_RECEIVE_QUEUE_SIZE) (PNV_VOID pvContext); 324typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_STATISTICS) (PNV_VOID pvContext, PADAPTER_STATS pADStats); 325typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_POWER_CAPS) (PNV_VOID pvContext, PADAPTER_POWERCAPS pADPowerCaps); 326typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_POWER_STATE) (PNV_VOID pvContext, PADAPTER_POWERSTATE pADPowerState); 327typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_POWER_STATE) (PNV_VOID pvContext, PADAPTER_POWERSTATE pADPowerState); 328typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_LOW_SPEED_FOR_PM) (PNV_VOID pvContext); 329typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_GET_PACKET_FILTER_CAPS) (PNV_VOID pvContext); 330typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_PACKET_FILTER) (PNV_VOID pvContext, PPACKET_FILTER pPacketFilter); 331typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_SET_WAKE_UP_PATTERN) (PNV_VOID pvContext, NV_SINT32 iPattern, PWAKE_UP_PATTERN pPattern); 332typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_ENABLE_WAKE_UP_PATTERN) (PNV_VOID pvContext, NV_SINT32 iPattern, NV_SINT32 iEnable); 333typedef NV_API_CALL NV_SINT32 (* PFN_SET_NODE_ADDRESS) (PNV_VOID pvContext, NV_UINT8 *pNodeAddress); 334typedef NV_API_CALL NV_SINT32 (* PFN_GET_NODE_ADDRESS) (PNV_VOID pvContext, NV_UINT8 *pNodeAddress); 335typedef NV_API_CALL NV_SINT32 (* PFN_GET_ADAPTER_INFO) (PNV_VOID pvContext, PNV_VOID pVoidPtr, NV_SINT32 iType, NV_SINT32 *piLength); 336typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_READ_PHY) (PNV_VOID pvContext, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 *pulValue); 337typedef NV_API_CALL NV_SINT32 (* PFN_ADAPTER_WRITE_PHY) (PNV_VOID pvContext, NV_UINT32 ulPhyAddr, NV_UINT32 ulPhyReg, NV_UINT32 ulValue); 338typedef NV_API_CALL NV_VOID(* PFN_ADAPTER_SET_SPPED_DUPLEX) (PNV_VOID pvContext); 339typedef NV_API_CALL NV_SINT32 (*PFN_REGISTER_OFFLOAD) (PNV_VOID pvContext, PADAPTER_OFFLOAD pOffload); 340typedef NV_API_CALL NV_SINT32 (*PFN_DEREGISTER_OFFLOAD) (PNV_VOID pvContext, PADAPTER_OFFLOAD pOffload); 341typedef NV_API_CALL NV_SINT32 (*PFN_RX_BUFF_READY) (PNV_VOID pvContext, PMEMORY_BLOCK pMemBlock, PNV_VOID pvID); 342 343#ifndef linux 344typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETUPREGISTERS) (PNV_VOID pvContext, NV_SINT32 bInitTime); 345typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETSEC0BASEADDRESS) (PNV_VOID pvContext, ASF_SEC0_BASE **ppsSec0Base); 346typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETSOURCEIPADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucSrcIPAddress); 347typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETDESTIPADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucDestIPAddress); 348typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETDESTIPADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucDestIPAddress); 349typedef NV_SINT32 (*PFN_ADAPTER_ASF_WRITEEEPROMANDSETUPREGISTERS) (PNV_VOID pvContext, NV_BOOLEAN bCompare, PNV_VOID pucValue, PNV_VOID pszSec0BaseMember, 350 NV_UINT16 usCount, NV_UINT32 ulAddressOffset); 351 352typedef NV_SINT32 (*PFN_ADAPTER_ASF_ISASFREADY) (PNV_VOID pvContext, ASF_ASFREADY *psASFReady); 353 354typedef NV_SINT32 (*PFN_ADAPTER_ASF_SETDESTMACADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucDestMACAddress); 355typedef NV_SINT32 (*PFN_ADAPTER_ASF_GETSOURCEMACADDRESS) (PNV_VOID pvContext, NV_UINT8 *pucSrcMACAddress); 356 357typedef NV_SINT32 (*PFN_ADAPTER_ASF_CHECK_FOR_EEPROM_PRESENCE) (PNV_VOID pvContext); 358#endif 359 360typedef NV_API_CALL NV_VOID (*PFN_ADAPTER_SET_COMMONDATA) (PNV_VOID pvContext, CMNDATA_OS_ADAPTER *psOSAdpater); 361typedef NV_API_CALL NV_VOID (*PFN_ADAPTER_SET_CHECKSUMOFFLOAD) (PNV_VOID pvContext, NV_UINT32 bSet); 362 363 364 365typedef struct _ADAPTER_API 366{ 367 // The adapter context 368 PNV_VOID pADCX; 369 370 // The adapter interface 371 PFN_ADAPTER_CLOSE pfnClose; 372 PFN_ADAPTER_INIT pfnInit; 373 PFN_ADAPTER_DEINIT pfnDeinit; 374 PFN_ADAPTER_START pfnStart; 375 PFN_ADAPTER_STOP pfnStop; 376 PFN_ADAPTER_QUERY_WRITE_SLOTS pfnQueryWriteSlots; 377 PFN_ADAPTER_WRITE pfnWrite; 378 PFN_ADAPTER_WRITE1 pfnWrite1; 379 PFN_ADAPTER_QUERY_INTERRUPT pfnQueryInterrupt; 380 PFN_ADAPTER_HANDLE_INTERRUPT pfnHandleInterrupt; 381 PFN_ADAPTER_DISABLE_INTERRUPTS pfnDisableInterrupts; 382 PFN_ADAPTER_ENABLE_INTERRUPTS pfnEnableInterrupts; 383 PFN_ADAPTER_CLEAR_INTERRUPTS pfnClearInterrupts; 384 PFN_ADAPTER_CLEAR_TX_DESC pfnClearTxDesc; 385 PFN_ADAPTER_GET_LINK_SPEED pfnGetLinkSpeed; 386 PFN_ADAPTER_GET_LINK_MODE pfnGetLinkMode; 387 PFN_ADAPTER_GET_LINK_STATE pfnGetLinkState; 388 PFN_ADAPTER_IS_LINK_INITIALIZING pfnIsLinkInitializing; 389 PFN_ADAPTER_RESET_PHY_INIT_STATE pfnResetPhyInitState; 390 PFN_ADAPTER_GET_TRANSMIT_QUEUE_SIZE pfnGetTransmitQueueSize; 391 PFN_ADAPTER_GET_RECEIVE_QUEUE_SIZE pfnGetReceiveQueueSize; 392 PFN_ADAPTER_GET_STATISTICS pfnGetStatistics; 393 PFN_ADAPTER_GET_POWER_CAPS pfnGetPowerCaps; 394 PFN_ADAPTER_GET_POWER_STATE pfnGetPowerState; 395 PFN_ADAPTER_SET_POWER_STATE pfnSetPowerState; 396 PFN_ADAPTER_SET_LOW_SPEED_FOR_PM pfnSetLowSpeedForPM; 397 PFN_ADAPTER_GET_PACKET_FILTER_CAPS pfnGetPacketFilterCaps; 398 PFN_ADAPTER_SET_PACKET_FILTER pfnSetPacketFilter; 399 PFN_ADAPTER_SET_WAKE_UP_PATTERN pfnSetWakeUpPattern; 400 PFN_ADAPTER_ENABLE_WAKE_UP_PATTERN pfnEnableWakeUpPattern; 401 PFN_SET_NODE_ADDRESS pfnSetNodeAddress; 402 PFN_GET_NODE_ADDRESS pfnGetNodeAddress; 403 PFN_GET_ADAPTER_INFO pfnGetAdapterInfo; 404 PFN_ADAPTER_SET_SPPED_DUPLEX pfnSetSpeedDuplex; 405 PFN_ADAPTER_READ_PHY pfnReadPhy; 406 PFN_ADAPTER_WRITE_PHY pfnWritePhy; 407 PFN_REGISTER_OFFLOAD pfnRegisterOffload; 408 PFN_DEREGISTER_OFFLOAD pfnDeRegisterOffload; 409 PFN_RX_BUFF_READY pfnRxBuffReady; 410#ifndef linux 411 PFN_ADAPTER_ASF_SETUPREGISTERS pfnASFSetupRegisters; 412 PFN_ADAPTER_ASF_GETSEC0BASEADDRESS pfnASFGetSec0BaseAddress; 413 PFN_ADAPTER_ASF_SETSOURCEIPADDRESS pfnASFSetSourceIPAddress; 414 PFN_ADAPTER_ASF_GETDESTIPADDRESS pfnASFGetDestIPAddress; 415 PFN_ADAPTER_ASF_SETDESTIPADDRESS pfnASFSetDestIPAddress; 416 PFN_ADAPTER_ASF_WRITEEEPROMANDSETUPREGISTERS pfnASFWriteEEPROMAndSetupRegisters; 417 PFN_ADAPTER_ASF_SETDESTMACADDRESS pfnASFSetDestMACAddress; 418 PFN_ADAPTER_ASF_GETSOURCEMACADDRESS pfnASFGetSourceMACAddress; 419 PFN_ADAPTER_ASF_ISASFREADY pfnASFIsASFReady; 420 PFN_ADAPTER_ASF_CHECK_FOR_EEPROM_PRESENCE pfnASFCheckForEepromPresence; 421#endif 422 PFN_ADAPTER_SET_COMMONDATA pfnSetCommonData; 423 424 PFN_ADAPTER_SET_CHECKSUMOFFLOAD pfnSetChecksumOffload; 425 426} ADAPTER_API, *PADAPTER_API; 427////////////////////////////////////////////////////////////////// 428 429#define MAX_PACKET_TO_ACCUMULATE 16 430 431typedef struct _ADAPTER_OPEN_PARAMS 432{ 433 PNV_VOID pOSApi; //pointer to OSAPI structure passed from higher layer 434 PNV_VOID pvHardwareBaseAddress; //memory mapped address passed from higher layer 435 NV_UINT32 ulPollInterval; //poll interval in micro seconds. Used in polling mode 436 NV_UINT32 MaxDpcLoop; //Maximum number of times we loop to in function ADAPTER_HandleInterrupt 437 NV_UINT32 MaxRxPkt; //Maximum number of packet we process each time in function UpdateReceiveDescRingData 438 NV_UINT32 MaxTxPkt; //Maximum number of packet we process each time in function UpdateTransmitDescRingData 439 NV_UINT32 MaxRxPktToAccumulate; //maximum number of rx packet we accumulate in UpdateReceiveDescRingData before 440 //indicating packets to OS. 441 NV_UINT32 SentPacketStatusSuccess; //Status returned from adapter layer to higher layer when packet was sent successfully 442 NV_UINT32 SentPacketStatusFailure; ////Status returned from adapter layer to higher layer when packet send was unsuccessful 443 NV_UINT32 SetForcedModeEveryNthRxPacket; //NOT USED: For experiment with descriptor based interrupt 444 NV_UINT32 SetForcedModeEveryNthTxPacket; //NOT USED: For experiment with descriptor based interrupt 445 NV_UINT32 RxForcedInterrupt; //NOT USED: For experiment with descriptor based interrupt 446 NV_UINT32 TxForcedInterrupt; //NOT USED: For experiment with descriptor based interrupt 447 NV_UINT32 DeviceId; //Of MAC 448 NV_UINT32 DeviceType; 449 NV_UINT32 PollIntervalInusForThroughputMode; //Of MAC 450 NV_UINT32 bASFEnabled; 451 NV_UINT32 ulDescriptorVersion; 452 NV_UINT32 ulMaxPacketSize; 453 454 455#define MEDIA_IF_AUTO 0 456#define MEDIA_IF_RGMII 1 457#define MEDIA_IF_MII 2 458 NV_UINT32 ulMediaIF; 459 460 NV_UINT32 PhyPowerIsolationTimeoutInms; 461 NV_UINT32 PhyResetTimeoutInms; 462 NV_UINT32 PhyAutonegotiateTimeoutInms; 463 NV_UINT32 PhyLinkupTimeoutInms; 464 NV_UINT32 PhyRdWrTimeoutInus; 465 NV_UINT32 PhyPowerdownOnClose; 466 467 // Added for Bug 100715 468 NV_UINT32 bDisableMIIInterruptAndReadPhyStatus; 469 470}ADAPTER_OPEN_PARAMS, *PADAPTER_OPEN_PARAMS; 471 472////////////////////////////////////////////////////////////////// 473// This is the one function in the adapter interface that is publicly 474// available. The rest of the interface is returned in the pAdapterApi. 475// The first argument needs to be cast to a OSAPI structure pointer. 476// The second argument should be cast to a ADPATER_API structure pointer. 477NV_API_CALL NV_SINT32 ADAPTER_Open (PADAPTER_OPEN_PARAMS pAdapterOpenParams, PNV_VOID *pvpAdapterApi, NV_UINT32 *pulPhyAddr); 478 479////////////////////////////////////////////////////////////////// 480 481 482 483////////////////////////////////////////////////////////////////// 484// Here are the error codes the adapter function calls return. 485#define ADAPTERERR_NONE 0x0000 486#define ADAPTERERR_COULD_NOT_ALLOC_CONTEXT 0x0001 487#define ADAPTERERR_COULD_NOT_CREATE_CONTEXT 0x0002 488#define ADAPTERERR_COULD_NOT_OPEN_PHY 0x0003 489#define ADAPTERERR_TRANSMIT_QUEUE_FULL 0x0004 490#define ADAPTERERR_COULD_NOT_INIT_PHY 0x0005 491#define ADAPTERERR_PHYS_SIZE_SMALL 0x0006 492#define ADAPTERERR_ERROR 0x0007 // Generic error 493////////////////////////////////////////////////////////////////// 494 495// This block moved from myadap.h 496// nFlag for Stop/Start ReceiverAndOrTransmitter can be an OR of 497// the following two flags 498#define AFFECT_RECEIVER 0x01 499#define AFFECT_TRANSMITTER 0x02 500 501#define REDUCE_LENGTH_BY 48 502 503#define EXTRA_WRITE_SLOT_TO_REDUCE_PER_SEND 4 504#define MAX_TX_DESCS 256 505#define MAX_TX_DESCS_VER2 (256 * 4) 506 507typedef struct _TX_INFO_ADAP 508{ 509 NV_UINT32 NoOfDesc; 510 PNV_VOID pvVar2; 511}TX_INFO_ADAP, *PTX_INFO_ADAP; 512 513#define WORKAROUND_FOR_MCP3_TX_STALL 514 515#ifdef WORKAROUND_FOR_MCP3_TX_STALL 516NV_SINT32 ADAPTER_WorkaroundTXHang(PNV_VOID pvContext); 517#endif 518 519//#define TRACK_INIT_TIME 520 521#ifdef TRACK_INIT_TIME 522//This routine is defined in entry.c adapter doesn't link int64.lib 523//We defined here so that its easy to use it in phy as well as mswin 524 525#define MAX_PRINT_INDEX 32 526extern NV_VOID PrintTime(NV_UINT32 ulIndex); 527#define PRINT_INIT_TIME(_a) PrintTime((_a)) 528#else 529#define PRINT_INIT_TIME(_a) 530#endif 531 532// Segmentation offload info 533#define DEVCAPS_SEGOL_BP_ENABLE 0 534#define DEVCAPS_SEGOL_BP_IPOPTIONS 1 535#define DEVCAPS_SEGOL_BP_TCPOPTIONS 2 536#define DEVCAPS_SEGOL_BP_SEGSIZE_LO 8 537#define DEVCAPS_SEGOL_BP_SEGSIZE_HI 31 538 539 540// Checksum offload info 541// Byte 0 : V4 TX 542#define DEVCAPS_V4_TX_BP_IPOPTIONS 0 543#define DEVCAPS_V4_TX_BP_TCPOPTIONS 1 544#define DEVCAPS_V4_TX_BP_TCPCHECKSUM 2 545#define DEVCAPS_V4_TX_BP_UDPCHECKSUM 3 546#define DEVCAPS_V4_TX_BP_IPCHECKSUM 4 547 548// Byte 0 : V4 RX 549#define DEVCAPS_V4_RX_BP_IPOPTIONS 8 550#define DEVCAPS_V4_RX_BP_TCPOPTIONS 9 551#define DEVCAPS_V4_RX_BP_TCPCHECKSUM 10 552#define DEVCAPS_V4_RX_BP_UDPCHECKSUM 11 553#define DEVCAPS_V4_RX_BP_IPCHECKSUM 12 554 555// Byte 1 : V6 TX 556#define DEVCAPS_V6_TX_BP_IPOPTIONS 16 557#define DEVCAPS_V6_TX_BP_TCPOPTIONS 17 558#define DEVCAPS_V6_TX_BP_TCPCHECKSUM 18 559#define DEVCAPS_V6_TX_BP_UDPCHECKSUM 19 560 561// Byte 2 : V6 RX 562#define DEVCAPS_V6_RX_BP_IPOPTIONS 24 563#define DEVCAPS_V6_RX_BP_TCPOPTIONS 25 564#define DEVCAPS_V6_RX_BP_TCPCHECKSUM 26 565#define DEVCAPS_V6_RX_BP_UDPCHECKSUM 27 566 567 568#define DESCR_VER_1 1 // MCP1, MCP2 and CK8 descriptor version 569#define DESCR_VER_2 2 // The decsriptor structure for CK8G 570 571// Get device and vendor IDs from 32 bit DeviceVendorID 572#define GET_DEVICEID(x) (((x) >> 16) & 0xFFFF) 573#define GET_VENDORID(x) ((x) & 0xFFFF) 574 575#ifdef __cplusplus 576} // extern "C" 577#endif 578 579#endif // _ADAPTER_H_ 580