1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
|
/***************************************************************************\
|* *|
|* 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;
ADAPTER_WRITE_ELEMENT sElement[100];
} 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_
|