[lantiq] move ltq-ifxos
[openwrt.git] / package / system / ltq-dsl / src / ifxmips_atm.h
1 /******************************************************************************
2 **
3 ** FILE NAME    : ifx_atm.h
4 ** PROJECT      : UEIP
5 ** MODULES      : ATM
6 **
7 ** DATE         : 17 Jun 2009
8 ** AUTHOR       : Xu Liang
9 ** DESCRIPTION  : Global ATM driver header file
10 ** COPYRIGHT    :       Copyright (c) 2006
11 **                      Infineon Technologies AG
12 **                      Am Campeon 1-12, 85579 Neubiberg, Germany
13 **
14 **    This program is free software; you can redistribute it and/or modify
15 **    it under the terms of the GNU General Public License as published by
16 **    the Free Software Foundation; either version 2 of the License, or
17 **    (at your option) any later version.
18 **
19 ** HISTORY
20 ** $Date        $Author         $Comment
21 ** 07 JUL 2009  Xu Liang        Init Version
22 *******************************************************************************/
23
24 #ifndef IFX_ATM_H
25 #define IFX_ATM_H
26
27
28
29 /*!
30   \defgroup IFX_ATM UEIP Project - ATM driver module
31   \brief UEIP Project - ATM driver module, support Danube, Amazon-SE, AR9, VR9.
32  */
33
34 /*!
35   \defgroup IFX_ATM_IOCTL IOCTL Commands
36   \ingroup IFX_ATM
37   \brief IOCTL Commands used by user application.
38  */
39
40 /*!
41   \defgroup IFX_ATM_STRUCT Structures
42   \ingroup IFX_ATM
43   \brief Structures used by user application.
44  */
45
46 /*!
47   \file ifx_atm.h
48   \ingroup IFX_ATM
49   \brief ATM driver header file
50  */
51
52
53
54 /*
55  * ####################################
56  *              Definition
57  * ####################################
58  */
59
60 /*!
61   \addtogroup IFX_ATM_STRUCT
62  */
63 /*@{*/
64
65 /*
66  *  ATM MIB
67  */
68
69 typedef struct {
70         __u32   ifHCInOctets_h;     /*!< byte counter of ingress cells (upper 32 bits, total 64 bits)   */
71         __u32   ifHCInOctets_l;     /*!< byte counter of ingress cells (lower 32 bits, total 64 bits)   */
72         __u32   ifHCOutOctets_h;    /*!< byte counter of egress cells (upper 32 bits, total 64 bits)    */
73         __u32   ifHCOutOctets_l;    /*!< byte counter of egress cells (lower 32 bits, total 64 bits)    */
74         __u32   ifInErrors;         /*!< counter of error ingress cells     */
75         __u32   ifInUnknownProtos;  /*!< counter of unknown ingress cells   */
76         __u32   ifOutErrors;        /*!< counter of error egress cells      */
77 } atm_cell_ifEntry_t;
78
79 typedef struct {
80         __u32   ifHCInOctets_h;     /*!< byte counter of ingress packets (upper 32 bits, total 64 bits) */
81         __u32   ifHCInOctets_l;     /*!< byte counter of ingress packets (lower 32 bits, total 64 bits) */
82         __u32   ifHCOutOctets_h;    /*!< byte counter of egress packets (upper 32 bits, total 64 bits)  */
83         __u32   ifHCOutOctets_l;    /*!< byte counter of egress packets (lower 32 bits, total 64 bits)  */
84         __u32   ifInUcastPkts;      /*!< counter of ingress packets         */
85         __u32   ifOutUcastPkts;     /*!< counter of egress packets          */
86         __u32   ifInErrors;         /*!< counter of error ingress packets   */
87         __u32   ifInDiscards;       /*!< counter of dropped ingress packets */
88         __u32   ifOutErros;         /*!< counter of error egress packets    */
89         __u32   ifOutDiscards;      /*!< counter of dropped egress packets  */
90 } atm_aal5_ifEntry_t;
91
92 typedef struct {
93         __u32   aal5VccCrcErrors;       /*!< counter of ingress packets with CRC error  */
94         __u32   aal5VccSarTimeOuts;     /*!< counter of ingress packets with Re-assemble timeout    */  //no timer support yet
95         __u32   aal5VccOverSizedSDUs;   /*!< counter of oversized ingress packets       */
96 } atm_aal5_vcc_t;
97
98 typedef struct {
99         int             vpi;        /*!< VPI of the VCC to get MIB counters */
100         int             vci;        /*!< VCI of the VCC to get MIB counters */
101         atm_aal5_vcc_t  mib_vcc;    /*!< structure to get MIB counters      */
102 } atm_aal5_vcc_x_t;
103
104 /*@}*/
105
106
107
108 /*
109  * ####################################
110  *                IOCTL
111  * ####################################
112  */
113
114 /*!
115   \addtogroup IFX_ATM_IOCTL
116  */
117 /*@{*/
118
119 /*
120  *  ioctl Command
121  */
122 /*!
123   \brief ATM IOCTL Magic Number
124  */
125 #define PPE_ATM_IOC_MAGIC       'o'
126 /*!
127   \brief ATM IOCTL Command - Get Cell Level MIB Counters
128
129    This command is obsolete. User can get cell level MIB from DSL API.
130    This command uses structure "atm_cell_ifEntry_t" as parameter for output of MIB counters.
131  */
132 #define PPE_ATM_MIB_CELL        _IOW(PPE_ATM_IOC_MAGIC,  0, atm_cell_ifEntry_t)
133 /*!
134   \brief ATM IOCTL Command - Get AAL5 Level MIB Counters
135
136    Get AAL5 packet counters.
137    This command uses structure "atm_aal5_ifEntry_t" as parameter for output of MIB counters.
138  */
139 #define PPE_ATM_MIB_AAL5        _IOW(PPE_ATM_IOC_MAGIC,  1, atm_aal5_ifEntry_t)
140 /*!
141   \brief ATM IOCTL Command - Get Per PVC MIB Counters
142
143    Get AAL5 packet counters for each PVC.
144    This command uses structure "atm_aal5_vcc_x_t" as parameter for input of VPI/VCI information and output of MIB counters.
145  */
146 #define PPE_ATM_MIB_VCC         _IOWR(PPE_ATM_IOC_MAGIC, 2, atm_aal5_vcc_x_t)
147 /*!
148   \brief Total Number of ATM IOCTL Commands
149  */
150 #define PPE_ATM_IOC_MAXNR       3
151
152 /*@}*/
153
154
155
156 /*
157  * ####################################
158  *                 API
159  * ####################################
160  */
161
162 #ifdef __KERNEL__
163 struct port_cell_info {
164     unsigned int    port_num;
165     unsigned int    tx_link_rate[2];
166 };
167 #endif
168
169
170
171 #endif  //  IFX_ATM_H
172