ed90b5d4d71242d03c956b0f74a088efeaf39bea
[openwrt/svn-archive/archive.git] / package / lqdsl / 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