Blame view

include/linux/if_frad.h 4.87 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  /*
   * DLCI/FRAD	Definitions for Frame Relay Access Devices.  DLCI devices are
   *		created for each DLCI associated with a FRAD.  The FRAD driver
   *		is not truly a network device, but the lower level device
   *		handler.  This allows other FRAD manufacturers to use the DLCI
   *		code, including its RFC1490 encapsulation alongside the current
   *		implementation for the Sangoma cards.
   *
   * Version:	@(#)if_ifrad.h	0.15	31 Mar 96
   *
   * Author:	Mike McLagan <mike.mclagan@linux.org>
   *
   * Changes:
   *		0.15	Mike McLagan	changed structure defs (packed)
   *					re-arranged flags
   *					added DLCI_RET vars
   *
   *		This program is free software; you can redistribute it and/or
   *		modify it under the terms of the GNU General Public License
   *		as published by the Free Software Foundation; either version
   *		2 of the License, or (at your option) any later version.
   */
  
  #ifndef _FRAD_H_
  #define _FRAD_H_
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
26
  #include <linux/if.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  /* Structures and constants associated with the DLCI device driver */
  
  struct dlci_add
  {
     char  devname[IFNAMSIZ];
     short dlci;
  };
  
  #define DLCI_GET_CONF	(SIOCDEVPRIVATE + 2)
  #define DLCI_SET_CONF	(SIOCDEVPRIVATE + 3)
  
  /* 
   * These are related to the Sangoma SDLA and should remain in order. 
   * Code within the SDLA module is based on the specifics of this 
   * structure.  Change at your own peril.
   */
  struct dlci_conf {
     short flags;
     short CIR_fwd;
     short Bc_fwd;
     short Be_fwd;
     short CIR_bwd;
     short Bc_bwd;
     short Be_bwd; 
  
  /* these are part of the status read */
     short Tc_fwd;
     short Tc_bwd;
     short Tf_max;
     short Tb_max;
  
  /* add any new fields here above is a mirror of sdla_dlci_conf */
  };
  
  #define DLCI_GET_SLAVE	(SIOCDEVPRIVATE + 4)
  
  /* configuration flags for DLCI */
  #define DLCI_IGNORE_CIR_OUT	0x0001
  #define DLCI_ACCOUNT_CIR_IN	0x0002
  #define DLCI_BUFFER_IF		0x0008
  
  #define DLCI_VALID_FLAGS	0x000B
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  /* defines for the actual Frame Relay hardware */
  #define FRAD_GET_CONF	(SIOCDEVPRIVATE)
  #define FRAD_SET_CONF	(SIOCDEVPRIVATE + 1)
  
  #define FRAD_LAST_IOCTL	FRAD_SET_CONF
  
  /*
   * Based on the setup for the Sangoma SDLA.  If changes are 
   * necessary to this structure, a routine will need to be 
   * added to that module to copy fields.
   */
  struct frad_conf 
  {
     short station;
     short flags;
     short kbaud;
     short clocking;
     short mtu;
     short T391;
     short T392;
     short N391;
     short N392;
     short N393;
     short CIR_fwd;
     short Bc_fwd;
     short Be_fwd;
     short CIR_bwd;
     short Bc_bwd;
     short Be_bwd;
  
  /* Add new fields here, above is a mirror of the sdla_conf */
  
  };
  
  #define FRAD_STATION_CPE	0x0000
  #define FRAD_STATION_NODE	0x0001
  
  #define FRAD_TX_IGNORE_CIR	0x0001
  #define FRAD_RX_ACCOUNT_CIR	0x0002
  #define FRAD_DROP_ABORTED	0x0004
  #define FRAD_BUFFERIF		0x0008
  #define FRAD_STATS		0x0010
  #define FRAD_MCI		0x0100
  #define FRAD_AUTODLCI		0x8000
  #define FRAD_VALID_FLAGS	0x811F
  
  #define FRAD_CLOCK_INT		0x0001
  #define FRAD_CLOCK_EXT		0x0000
  
  #ifdef __KERNEL__
3121a48d8   Krzysztof Hałasa   net: Fix linux/if...
119
  #if defined(CONFIG_DLCI) || defined(CONFIG_DLCI_MODULE)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
120
121
122
  /* these are the fields of an RFC 1490 header */
  struct frhdr
  {
6a878184c   Jan Blunck   [PATCH] Eliminate...
123
     unsigned char  control;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
124
125
  
     /* for IP packets, this can be the NLPID */
6a878184c   Jan Blunck   [PATCH] Eliminate...
126
     unsigned char  pad;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
127

6a878184c   Jan Blunck   [PATCH] Eliminate...
128
129
     unsigned char  NLPID;
     unsigned char  OUI[3];
904584018   Al Viro   annotate the rest...
130
     __be16 PID;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
131
132
  
  #define IP_NLPID pad 
bc10502db   Eric Dumazet   net: use __packed...
133
  } __packed;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
134
135
136
137
138
139
140
141
142
143
144
145
  
  /* see RFC 1490 for the definition of the following */
  #define FRAD_I_UI		0x03
  
  #define FRAD_P_PADDING		0x00
  #define FRAD_P_Q933		0x08
  #define FRAD_P_SNAP		0x80
  #define FRAD_P_CLNP		0x81
  #define FRAD_P_IP		0xCC
  
  struct dlci_local
  {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
     struct net_device      *master;
     struct net_device      *slave;
     struct dlci_conf       config;
     int                    configured;
     struct list_head	  list;
  
     /* callback function */
     void              (*receive)(struct sk_buff *skb, struct net_device *);
  };
  
  struct frad_local
  {
     struct net_device_stats stats;
  
     /* devices which this FRAD is slaved to */
     struct net_device     *master[CONFIG_DLCI_MAX];
     short             dlci[CONFIG_DLCI_MAX];
  
     struct frad_conf  config;
     int               configured;	/* has this device been configured */
     int               initialized;	/* mem_start, port, irq set ? */
  
     /* callback functions */
     int               (*activate)(struct net_device *, struct net_device *);
     int               (*deactivate)(struct net_device *, struct net_device *);
     int               (*assoc)(struct net_device *, struct net_device *);
     int               (*deassoc)(struct net_device *, struct net_device *);
     int               (*dlci_conf)(struct net_device *, struct net_device *, int get);
  
     /* fields that are used by the Sangoma SDLA cards */
     struct timer_list timer;
     int               type;		/* adapter type */
     int               state;		/* state of the S502/8 control latch */
     int               buffer;		/* current buffer for S508 firmware */
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
181
  #endif /* CONFIG_DLCI || CONFIG_DLCI_MODULE */
20380731b   Arnaldo Carvalho de Melo   [NET]: Fix sparse...
182
  extern void dlci_ioctl_set(int (*hook)(unsigned int, void __user *));
3121a48d8   Krzysztof Hałasa   net: Fix linux/if...
183
184
  
  #endif /* __KERNEL__ */
20380731b   Arnaldo Carvalho de Melo   [NET]: Fix sparse...
185

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
186
  #endif