1143439Sobrien/***************************************************************************\
2143439Sobrien|*                                                                           *|
3143439Sobrien|*         Copyright 2001-2003 NVIDIA, Corporation.  All rights reserved.    *|
4143439Sobrien|*                                                                           *|
5143439Sobrien|*     THE INFORMATION CONTAINED HEREIN  IS PROPRIETARY AND CONFIDENTIAL     *|
6143439Sobrien|*     TO NVIDIA, CORPORATION.   USE,  REPRODUCTION OR DISCLOSURE TO ANY     *|
7143439Sobrien|*     THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP.       *|
8143439Sobrien|*                                                                           *|
9143439Sobrien|*     THE INFORMATION CONTAINED HEREIN IS PROVIDED  "AS IS" WITHOUT         *|
10143439Sobrien|*     EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED        *|
11143439Sobrien|*     WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A     *|
12143439Sobrien|*     PARTICULAR PURPOSE.                                                   *|
13143439Sobrien|*                                                                           *|
14143439Sobrien\***************************************************************************/
15143439Sobrien
16143439Sobrien/*
17143439Sobrien *   This file contains the header info common to the network drivers and applications.
18143439Sobrien *   Currently, these applications include ASF, co-installers, and qstats.
19143439Sobrien *
20143439Sobrien *
21143439Sobrien */
22143439Sobrien
23143439Sobrien#ifndef _DRVINFO_H_
24143439Sobrien#define _DRVINFO_H_
25143439Sobrien
26143439Sobrien// Switch to byte packing, regardless of global packing specified by the compiler switch
27143439Sobrien#pragma pack(1)
28143439Sobrien
29143439Sobrien//////////////////////////////////////////////////////////////////
30143439Sobrien// For the ADAPTER_GetStatistics call used by qstats.  This
31143439Sobrien// is the template used by the legacy driver.
32143439Sobrien#define MAX_TRANSMIT_COLISION_STATS     16
33143439Sobrien
34143439Sobrien#define ADAPTER_STATS_LEGACY_VERSION    1
35143439Sobrien#define ADAPTER_STATS_RM_VERSION        2
36143439Sobrien
37143439Sobrientypedef struct  _ADAPTER_STATS_V1
38143439Sobrien{
39143439Sobrien    NV_UINT32   ulVersion;
40143439Sobrien
41143439Sobrien    NV_UINT32   ulSuccessfulTransmissions;
42143439Sobrien    NV_UINT32   ulFailedTransmissions;
43143439Sobrien    NV_UINT32   ulRetryErrors;
44143439Sobrien    NV_UINT32   ulUnderflowErrors;
45143439Sobrien    NV_UINT32   ulLossOfCarrierErrors;
46143439Sobrien    NV_UINT32   ulLateCollisionErrors;
47143439Sobrien    NV_UINT32   ulDeferredTransmissions;
48143439Sobrien    NV_UINT32    ulExcessDeferredTransmissions;
49143439Sobrien    NV_UINT32   aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLISION_STATS];
50143439Sobrien
51143439Sobrien    NV_UINT32   ulMissedFrames;
52143439Sobrien    NV_UINT32   ulSuccessfulReceptions;
53143439Sobrien    NV_UINT32   ulFailedReceptions;
54143439Sobrien    NV_UINT32   ulCRCErrors;
55143439Sobrien    NV_UINT32   ulFramingErrors;
56143439Sobrien    NV_UINT32   ulOverFlowErrors;
57143439Sobrien    NV_UINT32    ulFrameErrorsPrivate; //Not for public.
58143439Sobrien    NV_UINT32    ulNullBufferReceivePrivate; //Not for public, These are the packets which we didn't indicate to OS
59143439Sobrien
60143439Sobrien    //interrupt related statistics
61143439Sobrien    NV_UINT32   ulRxInterrupt;
62143439Sobrien    NV_UINT32   ulRxInterruptUnsuccessful;
63143439Sobrien    NV_UINT32   ulTxInterrupt;
64143439Sobrien    NV_UINT32   ulTxInterruptUnsuccessful;
65143439Sobrien    NV_UINT32   ulPhyInterrupt;
66143439Sobrien
67143439Sobrien}   ADAPTER_STATS_V1, *PADAPTER_STATS_V1;
68143439Sobrien//////////////////////////////////////////////////////////////////
69143439Sobrien
70143439Sobrien//////////////////////////////////////////////////////////////////
71143439Sobrien// For the ADAPTER_GetStatistics call used by qstats.  This
72143439Sobrien// is the template used by the FD.
73143439Sobrientypedef struct  _ADAPTER_STATS
74143439Sobrien{
75143439Sobrien    NV_UINT32   ulVersion;
76143439Sobrien    NV_UINT8    ulMacAddress[6];
77143439Sobrien
78143439Sobrien    //
79143439Sobrien    // Tx counters.
80143439Sobrien    //
81143439Sobrien    NV_UINT64   ulSuccessfulTransmissions;
82143439Sobrien    NV_UINT64   ulFailedTransmissions;
83143439Sobrien    NV_UINT64   ulRetryErrors;
84143439Sobrien    NV_UINT64   ulUnderflowErrors;
85143439Sobrien    NV_UINT64   ulLossOfCarrierErrors;
86143439Sobrien    NV_UINT64   ulLateCollisionErrors;
87143439Sobrien    NV_UINT64   ulDeferredTransmissions;
88143439Sobrien    NV_UINT64    ulExcessDeferredTransmissions;
89143439Sobrien    NV_UINT64   aulSuccessfulTransmitsAfterCollisions[MAX_TRANSMIT_COLISION_STATS];
90143439Sobrien
91143439Sobrien    //
92143439Sobrien    // New Tx counters for GigE.
93143439Sobrien    //
94143439Sobrien    NV_UINT64   ulTxByteCount;
95143439Sobrien
96143439Sobrien    //
97143439Sobrien    // Rx counters.
98143439Sobrien    //
99143439Sobrien    NV_UINT64   ulMissedFrames;
100143439Sobrien    NV_UINT64   ulSuccessfulReceptions;
101143439Sobrien    NV_UINT64   ulFailedReceptions;
102143439Sobrien    NV_UINT64   ulCRCErrors;
103143439Sobrien    NV_UINT64   ulLengthErrors;
104143439Sobrien    NV_UINT64   ulFramingErrors;
105143439Sobrien    NV_UINT64   ulOverFlowErrors;
106143439Sobrien    NV_UINT64   ulRxNoBuffer;
107143439Sobrien    NV_UINT64   ulFrameErrorsPrivate; //Not for public.
108143439Sobrien    NV_UINT64   ulNullBufferReceivePrivate; //Not for public, These are the packets which we didn't indicate to OS
109143439Sobrien
110143439Sobrien    //
111143439Sobrien    // New Rx counters for GigE.
112143439Sobrien    //
113143439Sobrien    NV_UINT64   ulRxExtraByteCount;
114143439Sobrien    NV_UINT64   ulRxFrameTooLongCount;
115143439Sobrien    NV_UINT64   ulRxFrameAlignmentErrorCount;
116143439Sobrien    NV_UINT64   ulRxLateCollisionErrors;
117143439Sobrien    NV_UINT64   ulRxRuntPacketErrors;
118143439Sobrien
119143439Sobrien    NV_UINT64   ulRxUnicastFrameCount;
120143439Sobrien    NV_UINT64   ulRxMulticastFrameCount;
121143439Sobrien    NV_UINT64   ulRxBroadcastFrameCount;
122143439Sobrien    NV_UINT64   ulRxPromiscuousModeFrameCount;
123143439Sobrien
124143439Sobrien    //Interrupt related statistics
125143439Sobrien    NV_UINT64   ulRxInterrupt;
126143439Sobrien    NV_UINT64   ulRxInterruptUnsuccessful;
127143439Sobrien    NV_UINT64   ulTxInterrupt;
128143439Sobrien    NV_UINT64   ulTxInterruptUnsuccessful;
129143439Sobrien    NV_UINT64   ulPhyInterrupt;
130143439Sobrien
131143439Sobrien
132143439Sobrien    //
133143439Sobrien    // Handy things to know
134143439Sobrien    //
135143439Sobrien    NV_UINT64   ulDescriptorVersion;
136143439Sobrien    NV_UINT64   ulPollingCfg;       // configured for cpu or throughput
137143439Sobrien    NV_UINT64   ulPollingState;     // current optimizefor state.
138143439Sobrien
139143439Sobrien    NV_UINT64   ulNumTxDesc;
140143439Sobrien    NV_UINT64   ulNumRxDesc;
141143439Sobrien
142143439Sobrien    //
143143439Sobrien    // Useful to determine if TX is stuck.
144143439Sobrien    //
145143439Sobrien    NV_UINT64   ulNumTxPktsQueued;
146143439Sobrien    NV_UINT64   ulNumTxPktsInProgress;
147143439Sobrien
148143439Sobrien    //
149143439Sobrien    // Rx Xsum Cntrs
150143439Sobrien    //
151143439Sobrien    NV_UINT64   ulNoRxPktsNoXsum;
152143439Sobrien    NV_UINT64   ulNoRxPktsXsumIpPassTcpFail;
153143439Sobrien    NV_UINT64   ulNoRxPktsXsumIpPassUdpFail;
154143439Sobrien    NV_UINT64   ulNoRxPktsXsumIpFail;
155143439Sobrien    NV_UINT64   ulNoRxPktsXsumIpPassNoTcpUdp;
156143439Sobrien    NV_UINT64   ulNoRxPktsXsumIpPassTcpPass;
157143439Sobrien    NV_UINT64   ulNoRxPktsXsumIpPassUdpPass;
158143439Sobrien    NV_UINT64   ulNoRxPktsXsumReserved;
159143439Sobrien
160143439Sobrien#ifdef _PERF_LOOP_CNTRS
161143439Sobrien    NV_UINT64  ulNumTxCmplsToProcess;
162143439Sobrien    NV_UINT64  ulNumRxCmplsToProcess;
163143439Sobrien    NV_UINT64  ulNumIntsToProcess;
164143439Sobrien
165143439Sobrien    NV_UINT64  IntLoop0Cnt;
166143439Sobrien    NV_UINT64  IntLoop1Cnt;
167143439Sobrien    NV_UINT64  IntLoop2Cnt;
168143439Sobrien    NV_UINT64  IntLoop3Cnt;
169143439Sobrien    NV_UINT64  IntLoop4Cnt;
170143439Sobrien    NV_UINT64  IntLoop5Cnt;
171143439Sobrien    NV_UINT64  IntLoop6To10Cnt;
172143439Sobrien    NV_UINT64  IntLoop11Cnt;
173143439Sobrien    NV_UINT64  IntMaxLoopCnt;
174143439Sobrien
175143439Sobrien    NV_UINT64   IntRxCnt0;
176143439Sobrien    NV_UINT64   IntTxCnt0;
177143439Sobrien
178143439Sobrien    NV_UINT64   MaxRxLoopCnt;
179143439Sobrien    NV_UINT64   MaxTxLoopCnt;
180143439Sobrien
181143439Sobrien#endif
182143439Sobrien}   ADAPTER_STATS, *PADAPTER_STATS;
183143439Sobrien//////////////////////////////////////////////////////////////////
184143439Sobrien
185143439Sobrien#pragma pack()
186143439Sobrien
187143439Sobrien
188143439Sobrien#endif   // #define _DRVINFO_H_
189143439Sobrien
190143439Sobrien
191