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