1
2
3
4
5
6#ifndef LINUX_SONET_H
7#define LINUX_SONET_H
8
9#define __SONET_ITEMS \
10 __HANDLE_ITEM(section_bip); \
11 __HANDLE_ITEM(line_bip); \
12 __HANDLE_ITEM(path_bip); \
13 __HANDLE_ITEM(line_febe); \
14 __HANDLE_ITEM(path_febe); \
15 __HANDLE_ITEM(corr_hcs); \
16 __HANDLE_ITEM(uncorr_hcs); \
17 __HANDLE_ITEM(tx_cells); \
18 __HANDLE_ITEM(rx_cells);
19
20struct sonet_stats {
21#define __HANDLE_ITEM(i) int i
22 __SONET_ITEMS
23#undef __HANDLE_ITEM
24} __attribute__ ((packed));
25
26
27#define SONET_GETSTAT _IOR('a',ATMIOC_PHYTYP,struct sonet_stats)
28
29#define SONET_GETSTATZ _IOR('a',ATMIOC_PHYTYP+1,struct sonet_stats)
30
31#define SONET_SETDIAG _IOWR('a',ATMIOC_PHYTYP+2,int)
32
33#define SONET_CLRDIAG _IOWR('a',ATMIOC_PHYTYP+3,int)
34
35#define SONET_GETDIAG _IOR('a',ATMIOC_PHYTYP+4,int)
36
37#define SONET_SETFRAMING _IOW('a',ATMIOC_PHYTYP+5,int)
38
39#define SONET_GETFRAMING _IOR('a',ATMIOC_PHYTYP+6,int)
40
41#define SONET_GETFRSENSE _IOR('a',ATMIOC_PHYTYP+7, \
42 unsigned char[SONET_FRSENSE_SIZE])
43
44#define SONET_INS_SBIP 1
45#define SONET_INS_LBIP 2
46#define SONET_INS_PBIP 4
47#define SONET_INS_FRAME 8
48#define SONET_INS_LOS 16
49#define SONET_INS_LAIS 32
50#define SONET_INS_PAIS 64
51#define SONET_INS_HCS 128
52
53#define SONET_FRAME_SONET 0
54#define SONET_FRAME_SDH 1
55
56#define SONET_FRSENSE_SIZE 6
57
58
59#ifdef __KERNEL__
60
61#include <asm/atomic.h>
62
63struct k_sonet_stats {
64#define __HANDLE_ITEM(i) atomic_t i
65 __SONET_ITEMS
66#undef __HANDLE_ITEM
67};
68
69extern void sonet_copy_stats(struct k_sonet_stats *from,struct sonet_stats *to);
70extern void sonet_subtract_stats(struct k_sonet_stats *from,
71 struct sonet_stats *to);
72
73#endif
74
75#endif
76