http://downloads.netgear.com/files/GPL/DM111PSP_v3.61d_GPL.tar.gz
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / VdslInfoDef.h
1 /*
2 <:copyright-broadcom 
3  
4  Copyright (c) 2002 Broadcom Corporation 
5  All Rights Reserved 
6  No portions of this material may be reproduced in any form without the 
7  written permission of: 
8           Broadcom Corporation 
9           16215 Alton Parkway 
10           Irvine, California 92619 
11  All information contained in this document is Broadcom Corporation 
12  company private, proprietary, and trade secret. 
13  
14 :>
15 */
16 /****************************************************************************
17  *
18  * Description:
19  *      Vdsl info defs
20  *
21  * Authors: Ben Bradshaw
22  *
23  *****************************************************************************/
24
25 #ifndef VdslInfoDefHeader
26 #define VdslInfoDefHeader
27
28 #include "AdslMibDef.h"
29
30 #if defined(__cplusplus)
31 extern "C" {
32 #endif
33
34 /* 
35 **
36 **              VDSL configuration parameters 
37 **
38 */
39
40
41 /* Bandplan parameters */
42
43 #define kVdslCfgBandplanMask                        0x00000003
44 #define kVdslCfg3Band                                       0x00000000
45 #define kVdslCfg4Band                                   0x00000001
46 #define kVdslCfg5Band                                   0x00000002
47 #define kVdslCfgUS0                                         0x00000003
48
49 /* Single/dual latency parameters */
50
51 #define kVdslCfgLatencyMask                         0x00000030
52 #define kVdslCfgSingleLatency                   0x00000010
53 #define kVdslCfgDualLatency                                 0x00000020
54
55 typedef struct _vdslCfgProfile {
56         long            vdslParam;
57 } vdslCfgProfile;
58
59 /* 
60 **
61 **              VDSL PHY configuration
62 **
63 */
64
65 typedef struct _vdslPhyCfg {
66         long            demodCapMask;
67         long            demodCap;
68 } vdslPhyCfg;
69
70 /* 
71 **
72 **              VDSL version info parameters 
73 **
74 */
75
76 #define kVdslVersionStringSize                          64
77
78 #define kVdslTypeUnknown                                        0
79 #define kAdslTypeVDSL                                           1
80
81 typedef struct _vdslVersionInfo {
82         unsigned short  phyType;
83         unsigned short  phyMjVerNum;
84         unsigned short  phyMnVerNum;
85         char                    phyVerStr[kVdslVersionStringSize];
86         unsigned short  drvMjVerNum;
87         unsigned short  drvMnVerNum;
88         char                    drvVerStr[kVdslVersionStringSize];
89 } vdslVersionInfo;
90
91
92 /* For PTM mode vp/vc configuration */
93 typedef struct 
94 {
95   int vpi;
96   int vci;
97 } vdslVpiVciInfo;
98
99
100 /* 
101 **
102 **              VDSL self-test parameters 
103 **
104 */
105
106 #define kVdslSelfTestInProgress                         0x40000000
107 #define kVdslSelfTestCompleted                          0x80000000
108
109 /* MIB OID's for VDSL objects */
110
111 #define kOidMaxObjLen                                           80
112
113 #define kOidVdsl                                                        94
114 #define kOidVdslInterleave                                      124
115 #define kOidVdslFast                                            125
116 #define kOidAtm                                                         37
117 #define kOidVdslPrivate                                         255
118 #define kOidVdslPrivatePartial                          254
119
120 #define kOidVdslPrivSNR                                         1
121 #define kOidVdslPrivBitAlloc                            2
122 #define kOidVdslPrivGain                                        3
123 #define kOidVdslPrivShowtimeMargin                      4
124 #define kOidVdslPrivChanCharLin                         5
125 #define kOidVdslPrivChanCharLog                         6
126 #define kOidVdslPrivQuietLineNoise                      7
127 #define kOidVdslPrivExtraInfo                           255
128
129 #define kOidVdslLine                                            1
130 #define kOidVdslMibObjects                                      1
131
132 #define kOidVdslLineTable                                       1
133 #define kOidVdslLineEntry                                       1
134 #define kOidVdslLineCoding                                      1
135 #define kOidVdslLineType                                        2
136 #define kOidVdslLineSpecific                        3
137 #define kOidVdslLineConfProfile                         4
138 #define kOidVdslLineAlarmConfProfile            5
139
140 #define kOidVdslAtucPhysTable                           2
141 #define kOidVdslAturPhysTable                           3
142 #define kOidVdslPhysEntry                                       1
143 #define kOidVdslPhysInvSerialNumber             1
144 #define kOidVdslPhysInvVendorID             2
145 #define kOidVdslPhysInvVersionNumber            3
146 #define kOidVdslPhysCurrSnrMgn                  4
147 #define kOidVdslPhysCurrAtn                     5
148 #define kOidVdslPhysCurrStatus                  6
149 #define kOidVdslPhysCurrOutputPwr               7
150 #define kOidVdslPhysCurrAttainableRate          8
151
152 #define kOidVdslAtucChanTable                           4
153 #define kOidVdslAturChanTable                           5
154 #define kOidVdslChanEntry                                       1
155 #define kOidVdslChanInterleaveDelay                     1
156 #define kOidVdslChanCurrTxRate                          2
157 #define kOidVdslChanPrevTxRate                  3
158 #define kOidVdslChanCrcBlockLength              4
159
160 #define kOidVdslAtucPerfDataTable                       6
161 #define kOidVdslAturPerfDataTable                       7
162 #define kOidVdslPerfDataEntry                           1
163 #define kOidVdslPerfLofs                        1
164 #define kOidVdslPerfLoss                        2
165 #define kOidVdslPerfLprs                        3
166 #define kOidVdslPerfESs                         4
167 #define kOidVdslPerfValidIntervals          5
168 #define kOidVdslPerfInvalidIntervals            6
169 #define kOidVdslPerfCurr15MinTimeElapsed        7
170 #define kOidVdslPerfCurr15MinLofs               8
171 #define kOidVdslPerfCurr15MinLoss               9
172 #define kOidVdslPerfCurr15MinLprs               10
173 #define kOidVdslPerfCurr15MinESs                11
174 #define kOidVdslPerfCurr1DayTimeElapsed     12
175 #define kOidVdslPerfCurr1DayLofs                13
176 #define kOidVdslPerfCurr1DayLoss                14
177 #define kOidVdslPerfCurr1DayLprs                15
178 #define kOidVdslPerfCurr1DayESs                 16
179 #define kOidVdslPerfPrev1DayMoniSecs            17
180 #define kOidVdslPerfPrev1DayLofs                18
181 #define kOidVdslPerfPrev1DayLoss            19
182 #define kOidVdslPerfPrev1DayLprs                20
183 #define kOidVdslPerfPrev1DayESs                 21
184
185 #define kOidVdslAtucPerfIntervalTable           8
186 #define kOidVdslAturPerfIntervalTable           9
187 #define kOidVdslPerfIntervalEntry                       1
188 #define kOidVdslIntervalNumber                          1
189 #define kOidVdslIntervalLofs                            2
190 #define kOidVdslIntervalLoss                            3
191 #define kOidVdslIntervalLprs                            4
192 #define kOidVdslIntervalESs                                     5
193 #define kOidVdslIntervalValidData                       6
194
195 #define kOidVdslAtucChanPerfTable                                       10
196 #define kOidVdslAturChanPerfTable                                       11
197 #define kOidVdslChanPerfEntry                                           1
198 #define kOidVdslChanReceivedBlks                        1
199 #define kOidVdslChanTransmittedBlks                     2
200 #define kOidVdslChanCorrectedBlks                       3
201 #define kOidVdslChanUncorrectBlks                       4
202 #define kOidVdslChanPerfValidIntervals                  5
203 #define kOidVdslChanPerfInvalidIntervals                6
204 #define kOidVdslChanPerfCurr15MinTimeElapsed            7
205 #define kOidVdslChanPerfCurr15MinReceivedBlks           8
206 #define kOidVdslChanPerfCurr15MinTransmittedBlks        9
207 #define kOidVdslChanPerfCurr15MinCorrectedBlks          10
208 #define kOidVdslChanPerfCurr15MinUncorrectBlks          11
209 #define kOidVdslChanPerfCurr1DayTimeElapsed             12
210 #define kOidVdslChanPerfCurr1DayReceivedBlks            13
211 #define kOidVdslChanPerfCurr1DayTransmittedBlks         14
212 #define kOidVdslChanPerfCurr1DayCorrectedBlks           15
213 #define kOidVdslChanPerfCurr1DayUncorrectBlks           16
214 #define kOidVdslChanPerfPrev1DayMoniSecs                17
215 #define kOidVdslChanPerfPrev1DayReceivedBlks            18
216 #define kOidVdslChanPerfPrev1DayTransmittedBlks         19
217 #define kOidVdslChanPerfPrev1DayCorrectedBlks           20
218 #define kOidVdslChanPerfPrev1DayUncorrectBlks           21
219
220 #define kOidVdslAtucChanIntervalTable                           12
221 #define kOidVdslAturChanIntervalTable                           13
222 #define kOidVdslChanIntervalEntry                                       1
223 #define kOidVdslChanIntervalNumber                                      1
224 #define kOidVdslChanIntervalReceivedBlks                2
225 #define kOidVdslChanIntervalTransmittedBlks             3
226 #define kOidVdslChanIntervalCorrectedBlks               4
227 #define kOidVdslChanIntervalUncorrectBlks               5
228 #define kOidVdslChanIntervalValidData                   6
229
230 #define kOidAtmMibObjects               1
231 #define kOidAtmTcTable                  4
232 #define kOidAtmTcEntry                  1
233 #define kOidAtmOcdEvents                1
234 #define kOidAtmAlarmState               2
235
236 /* Vdsl Channel coding */
237
238 #define kVdslRcvDir                     0
239 #define kVdslXmtDir                     1
240
241 #define kVdslRcvActive          (1 << kVdslRcvDir)
242 #define kVdslXmtActive          (1 << kVdslXmtDir)
243
244 #define kVdslIntlChannel        0
245 #define kVdslFastChannel        1
246
247 #define kVdslTrellisOff         0
248 #define kVdslTrellisOn          1
249
250 /* AnnexC modulation and bitmap types for the field (vdslConnection.modType) */
251
252 #define kVdslModMask            0x7
253
254 #define kVdslModGdmt            0
255
256 /* VdslLineCodingType definitions */
257
258 #define kVdslLineCodingOther            1
259 #define kVdslLineCodingDMT                      2
260 #define kVdslLineCodingCAP                      3
261 #define kVdslLineCodingQAM                      4
262
263 /* VdslLineType definitions */
264
265 #define kVdslLineTypeNoChannel          1
266 #define kVdslLineTypeFastOnly           2
267 #define kVdslLineTypeIntlOnly           3
268 #define kVdslLineTypeFastOrIntl         4
269 #define kVdslLineTypeFastAndIntl        5
270
271 typedef struct _vdslLineEntry {
272         unsigned char   vdslLineCoding;
273         unsigned char   vdslLineType;
274 } vdslLineEntry;
275
276
277 /* VdslPhys status definitions */
278
279 #define kVdslPhysStatusNoDefect         (1 << 0)
280 #define kVdslPhysStatusLOF                      (1 << 1)        /* lossOfFraming (not receiving valid frame) */
281 #define kVdslPhysStatusLOS                      (1 << 2)        /* lossOfSignal (not receiving signal) */
282 #define kVdslPhysStatusLPR                      (1 << 3)        /* lossOfPower */
283 #define kVdslPhysStatusLOSQ                     (1 << 4)        /* lossOfSignalQuality */
284 #define kVdslPhysStatusLOM                      (1 << 5)        /* lossOfMargin */
285
286 typedef struct _vdslPhysEntry {
287         long            vdslCurrSnrMgn;
288         long            vdslCurrAtn;
289         long            vdslCurrStatus;
290         long            vdslCurrOutputPwr;
291         long            vdslCurrAttainableRate;
292 } vdslPhysEntry;
293
294 #define kVdslPhysVendorIdLen            8
295 #define kVdslPhysSerialNumLen           32
296 #define kVdslPhysVersionNumLen          32
297
298 typedef struct _vdslFullPhysEntry {
299         char            vdslSerialNumber[kVdslPhysSerialNumLen];
300         char            vdslVendorID[kVdslPhysVendorIdLen];
301         char            vdslVersionNumber[kVdslPhysVersionNumLen];
302         long            vdslCurrSnrMgn;
303         long            vdslCurrAtn;
304         long            vdslCurrStatus;
305         long            vdslCurrOutputPwr;
306         long            vdslCurrAttainableRate;
307 } vdslFullPhysEntry;
308
309 /* Vdsl channel entry definitions */
310
311 typedef struct _vdslChanEntry {
312     unsigned long               vdslChanIntlDelay;
313         unsigned long           vdslChanCurrTxRate;
314         unsigned long           vdslChanPrevTxRate;
315         unsigned long           vdslChanCrcBlockLength;
316 } vdslChanEntry;
317
318 /* Vdsl performance data definitions */
319 typedef struct _vdslAnomCounters {
320         unsigned long           vdsl_NE_CV;                    /* Near end superframe CRC-8 anomaly count */
321         unsigned long           vdsl_NE_FEC;                   /* Near end Codeword correction count */ 
322         unsigned long           vdsl_NE_uncorrectableCodeword; /* Uncorrectable codeword count */ 
323         unsigned long           vdsl_FE_CV;                    /* FEBE count. Far end superframe CRC-8 anomaly count */
324         unsigned long           vdsl_FE_FEC;                   /* Number of super-frames during which at least one codeword correction 
325                                                           occurred */ 
326 } vdslAnomalyCounters;
327
328 typedef struct _vdslDerivedCounters {
329         unsigned long           vdslLofs;
330         unsigned long           vdslLoss;
331         unsigned long           vdslLols;       /* Loss of Link failures (ATUC only) */
332         unsigned long           vdslLprs;
333         unsigned long           vdslESs;        /* Count of Errored Seconds */
334         unsigned long           vdslInits;      /* Count of Line initialization attempts (ATUC only) */
335         unsigned long           vdslUAS;        /* Count of Unavailable Seconds */
336         unsigned long           vdslSES;        /* Count of Severely Errored Seconds */
337         unsigned long           vdslLOSS;       /* Count of LOS seconds */
338         unsigned long           vdslFECs;       /* Count of FEC seconds  */
339 } vdslDerivedCounters;
340
341 # define NE 0                   /* Near end */
342 # define FE 1                   /* Far end */
343
344 # define B0 0                   /* Bearer 0 */
345 # define B1 1                   /* Bearer 1 */
346
347 typedef struct _ptmConnectionStat {
348         unsigned long                   cntCVprio0;
349         unsigned long                   cntCVprio1;
350         unsigned long                   cntRxCellDrop;
351         unsigned long                   cntTxCellDrop;
352 } ptmConnectionStat;
353
354 typedef struct _vdslPerfCounters {
355     vdslDerivedCounters   vdslDerivCounters[2]; /* NE and FE counts */
356     vdslAnomalyCounters   vdslAnomCounters[2]; /* B0 and B1 counts */
357         atmConnectionStat         atmStat[2];          /* B0 and B1 */ /* Used */
358         ptmConnectionStat         ptmStat[2];          /* B0 and B1 */ /* Used */
359 } vdslPerfCounters;
360
361 typedef struct _vdslPerfDataEntry {
362         vdslPerfCounters        perfTotal;
363         unsigned long                           vdslPerfValidIntervals;
364         unsigned long                           vdslPerfInvalidIntervals;
365         vdslPerfCounters        perfCurr15Min;
366         unsigned long                           vdslPerfCurr15MinTimeElapsed;
367         vdslPerfCounters        perfCurr1Day;
368         unsigned long                           vdslPerfCurr1DayTimeElapsed;
369         vdslPerfCounters        perfPrev15Min;
370         unsigned long                           vdslPerfPrev15MinTimeElapsed;
371         vdslPerfCounters        perfPrev1Day;
372         unsigned long                           vdslAturPerfPrev1DayMoniSecs;
373 } vdslPerfDataEntry;
374
375 #define kVdslMibPerfIntervals           4
376
377 /* Vdsl channel performance data definitions */
378
379 typedef struct _vdslChanCounters {
380         unsigned long           vdslChanReceivedBlks;
381         unsigned long           vdslChanTransmittedBlks;
382         unsigned long           vdslChanCorrectedBlks;
383         unsigned long           vdslChanUncorrectBlks;
384 } vdslChanCounters;
385
386 typedef struct _vdslChanPerfDataEntry {
387         vdslChanCounters        perfTotal;
388         unsigned long                           vdslChanPerfValidIntervals;
389         unsigned long                           vdslChanPerfInvalidIntervals;
390         vdslChanCounters        perfCurr15Min;
391         unsigned long                           vdslPerfCurr15MinTimeElapsed;
392         vdslChanCounters        perfCurr1Day;
393         unsigned long                           vdslPerfCurr1DayTimeElapsed;
394         vdslChanCounters        perfPrev1Day;
395         unsigned long                           vdslAturPerfPrev1DayMoniSecs;
396 } vdslChanPerfDataEntry;
397
398 #define kVdslMibChanPerfIntervals       4
399
400 /* Vdsl trap threshold definitions */
401
402 #define kVdslEventLinkChange            0x001
403 #define kVdslEventRateChange            0x002
404 #define kVdslEventLofThresh                     0x004
405 #define kVdslEventLosThresh                     0x008
406 #define kVdslEventLprThresh                     0x010
407 #define kVdslEventESThresh                      0x020
408 #define kVdslEventFastUpThresh          0x040
409 #define kVdslEventIntlUpThresh          0x080
410 #define kVdslEventFastDownThresh        0x100
411 #define kVdslEventIntlDwonThresh        0x200
412
413 typedef struct _vdslThreshCounters {
414         unsigned long           vdslThreshLofs;
415         unsigned long           vdslThreshLoss;
416         unsigned long           vdslThreshLols; /* Loss of Link failures (ATUC only) */
417         unsigned long           vdslThreshLprs;
418         unsigned long           vdslThreshESs;
419         unsigned long           vdslThreshFastRateUp;
420         unsigned long           vdslThreshIntlRateUp;
421         unsigned long           vdslThreshFastRateDown;
422         unsigned long           vdslThreshIntlRateDown;
423 } vdslThreshCounters;
424
425
426 /* Atm PHY performance data definitions */
427 #if 0
428 #define kAtmPhyStateNoAlarm                     1
429 #define kAtmPhyStateLcdFailure          2
430
431 typedef struct _atmPhyDataEntrty {
432         unsigned long           atmInterfaceOCDEvents;
433         unsigned long           atmInterfaceTCAlarmState;
434 } atmPhyDataEntrty;
435 #endif
436
437 typedef struct _vdslBertResults {
438         unsigned long           bertTotalBits;
439         unsigned long           bertErrBits;
440 } vdslBertResults;
441
442 #if 0
443 typedef struct {
444         unsigned long           cntHi;
445         unsigned long           cntLo;
446 } cnt64;
447 #endif
448
449 typedef struct _vdslBertStatusEx {
450         unsigned long           bertSecTotal;
451         unsigned long           bertSecElapsed;
452         unsigned long           bertSecCur;
453         cnt64                           bertTotalBits;
454         cnt64                           bertErrBits;
455 } vdslBertStatusEx;
456
457 typedef struct _vdslDataConnectionInfo {
458         unsigned short          K;
459         unsigned char           S, R, D;
460 } vdslDataConnectionInfo;
461
462 typedef struct _vdslConnectionInfo {
463         unsigned char                   chType;                         /* fast or interleaved */
464         unsigned char                   modType;                        /* modulation type: G.DMT or T1.413 */
465         unsigned char                   trellisCoding;          /* off(0) or on(1) */
466         vdslDataConnectionInfo  rcvInfo;
467         vdslDataConnectionInfo  xmtInfo;
468 } vdslConnectionInfo;
469
470 typedef struct _vdslConnectionDataStat {
471         unsigned long                   cntRS;  
472         unsigned long                   cntRSCor;       
473         unsigned long                   cntRSUncor;     
474         unsigned long                   cntSF;  
475         unsigned long                   cntSFErr;       
476 } vdslConnectionDataStat;
477
478 typedef struct _vdslConnectionStat {
479         vdslConnectionDataStat  rcvStat;
480         vdslConnectionDataStat  xmtStat;
481 } vdslConnectionStat;
482
483 #define kVdslFramingModeMask                    0x0F
484 #define kAtmFramingModeMask                             0xF0
485 #define kAtmHeaderCompression                   0x80
486
487 /* VdslMibGetObjectValue return codes */
488
489 #define kVdslMibStatusSuccess                   0
490 #define kVdslMibStatusFailure                   -1
491 #define kVdslMibStatusNoObject                  -2
492 #define kVdslMibStatusObjectInvalid             -3
493 #define kVdslMibStatusBufferTooSmall    -4
494 #define kVdslMibStatusLastError                 -4
495
496 /* Vdsl training codes */
497
498 #define kVdslTrainingIdle                               0
499 #define kVdslTrainingG994                               1
500 #define kVdslTrainingG992Started                2
501 #define kVdslTrainingG992ChanAnalysis   3
502 #define kVdslTrainingG992Exchange               4
503 #define kVdslTrainingConnected                  5
504
505 /* Global info structure */
506
507 typedef struct _vdslInfo {
508         vdslLineEntry                   vdslLine;
509         vdslPhysEntry                   vdslPhys;
510         vdslChanEntry                   vdslChanIntl;
511         vdslChanEntry                   vdslChanFast;
512         vdslPerfDataEntry               vdslPerfData; /* Used */
513         vdslPerfCounters                vdslPerfIntervals[kVdslMibPerfIntervals];
514         vdslChanPerfDataEntry   vdslChanIntlPerfData;
515         vdslChanPerfDataEntry   vdslChanFastPerfData;
516         vdslChanCounters                vdslChanIntlPerfIntervals[kVdslMibChanPerfIntervals];
517         vdslChanCounters                vdslChanFastPerfIntervals[kVdslMibChanPerfIntervals];
518
519         vdslThreshCounters              vdslAlarm;
520
521         atmPhyDataEntrty                vdslChanIntlAtmPhyData;
522         atmPhyDataEntrty                vdslChanFastAtmPhyData;
523
524         vdslBertResults                 vdslBertRes;
525
526         vdslConnectionInfo              vdslConnection;
527         vdslConnectionStat              vdslStat;
528         unsigned char                   vdslTrainingState;
529
530         vdslFullPhysEntry               vdslAtucPhys;
531         unsigned char                   vdslRxNonStdFramingAdjustK;
532         unsigned char                   vdslFramingMode;
533         vdslBertStatusEx                vdslBertStatus;
534         long                                    afeRxPgaGainQ1;
535
536         vdslPerfCounters                vdslTxPerfTotal;
537 } vdslInfo;
538
539 #if defined(__cplusplus)
540 }
541 #endif
542
543 #endif  /* VdslInfoDefHeader */