41c659a7625b6aa012c5716824cc03cee9b36b92
[dragonfly.git] / sys / contrib / dev / nv / drvinfo.h
1 /***************************************************************************\
2 |*                                                                           *|
3 |*         Copyright 2001-2003 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  *   This file contains the header info common to the network drivers and applications.
18  *   Currently, these applications include ASF, co-installers, and qstats.
19  *
20  *
21  */
22
23 #ifndef _DRVINFO_H_
24 #define _DRVINFO_H_
25
26 // Switch to byte packing, regardless of global packing specified by the compiler switch
27 #pragma pack(1)  
28
29 //////////////////////////////////////////////////////////////////
30 // For the ADAPTER_GetStatistics call used by qstats.  This 
31 // is the template used by the legacy driver.
32 #define MAX_TRANSMIT_COLISION_STATS     16
33
34 #define ADAPTER_STATS_LEGACY_VERSION    1
35 #define ADAPTER_STATS_RM_VERSION        2
36
37 typedef struct  _ADAPTER_STATS_V1
38 {
39     NV_UINT32   ulVersion;
40
41     NV_UINT32   ulSuccessfulTransmissions;
42     NV_UINT32   ulFailedTransmissions;
43     NV_UINT32   ulRetryErrors;
44     NV_UINT32   ulUnderflowErrors;
45     NV_UINT32   ulLossOfCarrierErrors;
46     NV_UINT32   ulLateCollisionErrors;
47     NV_UINT32   ulDeferredTransmissions;
48     NV_UINT32    ulExcessDeferredTransmissions;
49     NV_UINT32   aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLISION_STATS];
50
51     NV_UINT32   ulMissedFrames;
52     NV_UINT32   ulSuccessfulReceptions;
53     NV_UINT32   ulFailedReceptions;
54     NV_UINT32   ulCRCErrors;
55     NV_UINT32   ulFramingErrors;
56     NV_UINT32   ulOverFlowErrors;
57     NV_UINT32    ulFrameErrorsPrivate; //Not for public.
58     NV_UINT32    ulNullBufferReceivePrivate; //Not for public, These are the packets which we didn't indicate to OS
59
60     //interrupt related statistics
61     NV_UINT32   ulRxInterrupt;
62     NV_UINT32   ulRxInterruptUnsuccessful;
63     NV_UINT32   ulTxInterrupt;
64     NV_UINT32   ulTxInterruptUnsuccessful;
65     NV_UINT32   ulPhyInterrupt;
66
67 }   ADAPTER_STATS_V1, *PADAPTER_STATS_V1;
68 //////////////////////////////////////////////////////////////////
69
70 //////////////////////////////////////////////////////////////////
71 // For the ADAPTER_GetStatistics call used by qstats.  This 
72 // is the template used by the FD.
73 typedef struct  _ADAPTER_STATS
74 {
75     NV_UINT32   ulVersion;
76     NV_UINT8    ulMacAddress[6];
77
78     //
79     // Tx counters.
80     //
81     NV_UINT64   ulSuccessfulTransmissions;
82     NV_UINT64   ulFailedTransmissions;
83     NV_UINT64   ulRetryErrors;
84     NV_UINT64   ulUnderflowErrors;
85     NV_UINT64   ulLossOfCarrierErrors;
86     NV_UINT64   ulLateCollisionErrors;
87     NV_UINT64   ulDeferredTransmissions;
88     NV_UINT64    ulExcessDeferredTransmissions;
89     NV_UINT64   aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLISION_STATS];
90
91     //
92     // New Tx counters for GigE.
93     //
94     NV_UINT64   ulTxByteCount;
95
96     //
97     // Rx counters.
98     //
99     NV_UINT64   ulMissedFrames;
100     NV_UINT64   ulSuccessfulReceptions;
101     NV_UINT64   ulFailedReceptions;
102     NV_UINT64   ulCRCErrors;
103     NV_UINT64   ulLengthErrors;
104     NV_UINT64   ulFramingErrors;
105     NV_UINT64   ulOverFlowErrors;
106     NV_UINT64   ulRxNoBuffer;
107     NV_UINT64   ulFrameErrorsPrivate; //Not for public.
108     NV_UINT64   ulNullBufferReceivePrivate; //Not for public, These are the packets which we didn't indicate to OS
109
110     //
111     // New Rx counters for GigE.
112     //
113     NV_UINT64   ulRxExtraByteCount;
114     NV_UINT64   ulRxFrameTooLongCount;
115     NV_UINT64   ulRxFrameAlignmentErrorCount;
116     NV_UINT64   ulRxLateCollisionErrors;
117     NV_UINT64   ulRxRuntPacketErrors;
118
119     NV_UINT64   ulRxUnicastFrameCount;
120     NV_UINT64   ulRxMulticastFrameCount;
121     NV_UINT64   ulRxBroadcastFrameCount;
122     NV_UINT64   ulRxPromiscuousModeFrameCount;
123
124     //Interrupt related statistics
125     NV_UINT64   ulRxInterrupt;
126     NV_UINT64   ulRxInterruptUnsuccessful;
127     NV_UINT64   ulTxInterrupt;
128     NV_UINT64   ulTxInterruptUnsuccessful;
129     NV_UINT64   ulPhyInterrupt;
130
131
132     //
133     // Handy things to know
134     //
135     NV_UINT64   ulDescriptorVersion;
136     NV_UINT64   ulPollingCfg;       // configured for cpu or throughput
137     NV_UINT64   ulPollingState;     // current optimizefor state.
138
139     NV_UINT64   ulNumTxDesc;
140     NV_UINT64   ulNumRxDesc;
141
142     // 
143     // Useful to determine if TX is stuck.
144     //
145     NV_UINT64   ulNumTxPktsQueued;
146     NV_UINT64   ulNumTxPktsInProgress;
147
148     //
149     // Rx Xsum Cntrs
150     //
151     NV_UINT64   ulNoRxPktsNoXsum;
152     NV_UINT64   ulNoRxPktsXsumIpPassTcpFail;
153     NV_UINT64   ulNoRxPktsXsumIpPassUdpFail;
154     NV_UINT64   ulNoRxPktsXsumIpFail;
155     NV_UINT64   ulNoRxPktsXsumIpPassNoTcpUdp;
156     NV_UINT64   ulNoRxPktsXsumIpPassTcpPass;
157     NV_UINT64   ulNoRxPktsXsumIpPassUdpPass;
158     NV_UINT64   ulNoRxPktsXsumReserved;
159
160 #ifdef _PERF_LOOP_CNTRS
161     NV_UINT64  ulNumTxCmplsToProcess;
162     NV_UINT64  ulNumRxCmplsToProcess;
163     NV_UINT64  ulNumIntsToProcess;
164
165     NV_UINT64  IntLoop0Cnt;
166     NV_UINT64  IntLoop1Cnt;
167     NV_UINT64  IntLoop2Cnt;
168     NV_UINT64  IntLoop3Cnt;
169     NV_UINT64  IntLoop4Cnt;
170     NV_UINT64  IntLoop5Cnt;
171     NV_UINT64  IntLoop6To10Cnt;
172     NV_UINT64  IntLoop11Cnt;
173     NV_UINT64  IntMaxLoopCnt;
174
175     NV_UINT64   IntRxCnt0;
176     NV_UINT64   IntTxCnt0;
177
178     NV_UINT64   MaxRxLoopCnt;
179     NV_UINT64   MaxTxLoopCnt;
180
181 #endif
182 }   ADAPTER_STATS, *PADAPTER_STATS;
183 //////////////////////////////////////////////////////////////////
184
185 #pragma pack()  
186
187
188 #endif   // #define _DRVINFO_H_
189
190