]>
Commit | Line | Data |
---|---|---|
b5a39c4d JR |
1 | the following patch makes atm a module. this patch also fixes a |
2 | number of other problems: MOD_INC/MOD_DEC are gone in lec and mpc | |
3 | (however i needed to use module_put() inside lec, mpc and clip due to | |
4 | the way the user space 'clients' unregister from the modules), clip | |
5 | is a module (i wrote the clip module_exit() function -- its *probably* | |
6 | correct), structs are now exported as pointers (if someone has a | |
7 | compelling reason it should remain the old way let me know), ipcommon.c | |
8 | is included by clip.c and doesnt export symbols -- it should probably | |
9 | just be split eventually with only llc_oui residing in the kernel | |
10 | (and exported) and skb_migrate moved to clip -- this really depends | |
11 | on the status of CONFIG_NET_SCH_ATM. | |
12 | ||
13 | Index: linux/net/atm/clip.c | |
14 | =================================================================== | |
15 | RCS file: /home/chas/CVSROOT/linux/net/atm/clip.c,v | |
16 | retrieving revision 1.1.1.1 | |
17 | diff -u -r1.1.1.1 clip.c | |
18 | --- linux/net/atm/clip.c 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
19 | +++ linux/net/atm/clip.c 3 Mar 2003 19:33:38 -0000 | |
20 | @@ -7,6 +7,7 @@ | |
21 | #include <linux/string.h> | |
22 | #include <linux/errno.h> | |
23 | #include <linux/kernel.h> /* for UINT_MAX */ | |
24 | +#include <linux/module.h> | |
25 | #include <linux/netdevice.h> | |
26 | #include <linux/skbuff.h> | |
27 | #include <linux/wait.h> | |
28 | @@ -48,6 +49,7 @@ | |
29 | static struct timer_list idle_timer; | |
30 | static int start_timer = 1; | |
31 | ||
32 | +#include "ipcommon.c" | |
33 | ||
34 | static int to_atmarpd(enum atmarp_ctrl_type type,int itf,unsigned long ip) | |
35 | { | |
36 | @@ -696,6 +698,7 @@ | |
37 | "pending\n"); | |
38 | skb_queue_purge(&vcc->recvq); | |
39 | DPRINTK("(done)\n"); | |
40 | + MOD_DEC_USE_COUNT; | |
41 | } | |
42 | ||
43 | ||
44 | @@ -747,10 +750,50 @@ | |
45 | return 0; | |
46 | } | |
47 | ||
48 | +static struct atm_clip_ops __atm_clip_ops = { | |
49 | + clip_create: clip_create, | |
50 | + clip_mkip: clip_mkip, | |
51 | + clip_setentry: clip_setentry, | |
52 | + clip_encap: clip_encap, | |
53 | + clip_push: clip_push, | |
54 | + atm_init_atmarp: atm_init_atmarp, | |
55 | + clip_tbl: &clip_tbl, | |
56 | + owner: THIS_MODULE | |
57 | +}; | |
58 | ||
59 | -void atm_clip_init(void) | |
60 | +static int __init atm_clip_init(void) | |
61 | { | |
62 | + extern struct atm_clip_ops *atm_clip_ops; | |
63 | + | |
64 | clip_tbl.lock = RW_LOCK_UNLOCKED; | |
65 | clip_tbl.kmem_cachep = kmem_cache_create(clip_tbl.id, | |
66 | clip_tbl.entry_size, 0, SLAB_HWCACHE_ALIGN, NULL, NULL); | |
67 | + | |
68 | + atm_clip_ops = &__atm_clip_ops; | |
69 | + | |
70 | + return 0; | |
71 | } | |
72 | + | |
73 | +static void __exit atm_clip_exit(void) | |
74 | +{ | |
75 | + extern struct atm_clip_ops *atm_clip_ops; | |
76 | + struct net_device *dev, *next; | |
77 | + | |
78 | + atm_clip_ops = NULL; | |
79 | + | |
80 | + next = clip_devs; | |
81 | + while (next) { | |
82 | + dev = next; | |
83 | + next = PRIV(dev)->next; | |
84 | + unregister_netdev(dev); | |
85 | + kfree(dev); | |
86 | + } | |
87 | + if (start_timer == 0) del_timer(&idle_timer); | |
88 | + | |
89 | + kmem_cache_destroy(clip_tbl.kmem_cachep); | |
90 | +} | |
91 | + | |
92 | +module_init(atm_clip_init); | |
93 | +module_exit(atm_clip_exit); | |
94 | + | |
95 | +MODULE_LICENSE("GPL"); | |
96 | Index: linux/net/atm/common.c | |
97 | =================================================================== | |
98 | RCS file: /home/chas/CVSROOT/linux/net/atm/common.c,v | |
99 | retrieving revision 1.5 | |
100 | diff -u -r1.5 common.c | |
101 | --- linux/net/atm/common.c 26 Feb 2003 15:52:44 -0000 1.5 | |
102 | +++ linux/net/atm/common.c 3 Mar 2003 19:41:21 -0000 | |
92bb4c6c JR |
103 | @@ -5,6 +5,7 @@ |
104 | ||
105 | #include <linux/config.h> | |
106 | #include <linux/module.h> | |
107 | +#include <linux/init.h> | |
108 | #include <linux/kmod.h> | |
109 | #include <linux/net.h> /* struct socket, struct net_proto, struct | |
110 | proto_ops */ | |
b5a39c4d JR |
111 | @@ -33,16 +33,16 @@ |
112 | #include <linux/atmlec.h> | |
113 | #include "lec.h" | |
114 | #include "lec_arpc.h" | |
115 | -struct atm_lane_ops atm_lane_ops; | |
116 | -#endif | |
117 | +struct atm_lane_ops *atm_lane_ops = NULL; | |
118 | #ifdef CONFIG_ATM_LANE_MODULE | |
119 | EXPORT_SYMBOL(atm_lane_ops); | |
120 | #endif | |
121 | +#endif | |
122 | ||
123 | #if defined(CONFIG_ATM_MPOA) || defined(CONFIG_ATM_MPOA_MODULE) | |
124 | #include <linux/atmmpc.h> | |
125 | #include "mpc.h" | |
126 | -struct atm_mpoa_ops atm_mpoa_ops; | |
127 | +struct atm_mpoa_ops *atm_mpoa_ops = NULL; | |
128 | #endif | |
129 | #ifdef CONFIG_ATM_MPOA_MODULE | |
130 | EXPORT_SYMBOL(atm_mpoa_ops); | |
131 | @@ -59,6 +59,14 @@ | |
132 | #endif | |
133 | #endif | |
134 | ||
135 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
136 | +#include <net/atmclip.h> | |
137 | +struct atm_clip_ops *atm_clip_ops = NULL; | |
138 | +#ifdef CONFIG_ATM_CLIP_MODULE | |
139 | +EXPORT_SYMBOL(atm_clip_ops); | |
140 | +#endif | |
141 | +#endif | |
142 | + | |
143 | #if defined(CONFIG_PPPOATM) || defined(CONFIG_PPPOATM_MODULE) | |
144 | int (*pppoatm_ioctl_hook)(struct atm_vcc *, unsigned int, unsigned long); | |
145 | EXPORT_SYMBOL(pppoatm_ioctl_hook); | |
146 | @@ -68,9 +76,6 @@ | |
147 | #include "common.h" /* prototypes */ | |
148 | #include "protocols.h" /* atm_init_<transport> */ | |
149 | #include "addr.h" /* address registry */ | |
150 | -#ifdef CONFIG_ATM_CLIP | |
151 | -#include <net/atmclip.h> /* for clip_create */ | |
152 | -#endif | |
153 | #include "signaling.h" /* for WAITING and sigd_attach */ | |
154 | ||
155 | ||
156 | @@ -642,39 +647,50 @@ | |
157 | if (!error) sock->state = SS_CONNECTED; | |
158 | ret_val = error; | |
159 | goto done; | |
160 | -#ifdef CONFIG_ATM_CLIP | |
161 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
162 | case SIOCMKCLIP: | |
163 | if (!capable(CAP_NET_ADMIN)) | |
164 | ret_val = -EPERM; | |
165 | else | |
166 | - ret_val = clip_create(arg); | |
167 | + ret_val = atm_clip_ops->clip_create(arg); | |
168 | goto done; | |
169 | case ATMARPD_CTRL: | |
170 | if (!capable(CAP_NET_ADMIN)) { | |
171 | ret_val = -EPERM; | |
172 | goto done; | |
173 | } | |
174 | - error = atm_init_atmarp(vcc); | |
175 | - if (!error) sock->state = SS_CONNECTED; | |
176 | +#if defined(CONFIG_ATM_CLIP_MODULE) | |
177 | + if (atm_clip_ops == NULL) | |
178 | + request_module("clip"); | |
179 | +#endif | |
180 | + if (atm_clip_ops && !try_inc_mod_count(atm_clip_ops->owner)) { | |
181 | + ret_val = -ENOSYS; | |
182 | + goto done; | |
183 | + } | |
184 | + error = atm_clip_ops->atm_init_atmarp(vcc); | |
185 | + if (!error) | |
186 | + sock->state = SS_CONNECTED; | |
187 | + else if (atm_clip_ops->owner) | |
188 | + __MOD_DEC_USE_COUNT(atm_clip_ops->owner); | |
189 | ret_val = error; | |
190 | goto done; | |
191 | case ATMARP_MKIP: | |
192 | if (!capable(CAP_NET_ADMIN)) | |
193 | ret_val = -EPERM; | |
194 | else | |
195 | - ret_val = clip_mkip(vcc,arg); | |
196 | + ret_val = atm_clip_ops->clip_mkip(vcc,arg); | |
197 | goto done; | |
198 | case ATMARP_SETENTRY: | |
199 | if (!capable(CAP_NET_ADMIN)) | |
200 | ret_val = -EPERM; | |
201 | else | |
202 | - ret_val = clip_setentry(vcc,arg); | |
203 | + ret_val = atm_clip_ops->clip_setentry(vcc,arg); | |
204 | goto done; | |
205 | case ATMARP_ENCAP: | |
206 | if (!capable(CAP_NET_ADMIN)) | |
207 | ret_val = -EPERM; | |
208 | else | |
209 | - ret_val = clip_encap(vcc,arg); | |
210 | + ret_val = atm_clip_ops->clip_encap(vcc,arg); | |
211 | goto done; | |
212 | #endif | |
213 | #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) | |
214 | @@ -683,30 +699,32 @@ | |
215 | ret_val = -EPERM; | |
216 | goto done; | |
217 | } | |
218 | - if (atm_lane_ops.lecd_attach == NULL) | |
219 | - atm_lane_init(); | |
220 | - if (!try_module_get(atm_lane_ops.owner)) { /* try again */ | |
221 | +#if defined(CONFIG_ATM_LANE_MODULE) | |
222 | + if (atm_lane_ops == NULL) | |
223 | + request_module("lec"); | |
224 | +#endif | |
225 | + if (atm_lane_ops && !try_inc_mod_count(atm_lane_ops->owner)) { | |
226 | ret_val = -ENOSYS; | |
227 | goto done; | |
228 | } | |
229 | - error = atm_lane_ops.lecd_attach(vcc, (int)arg); | |
230 | + error = atm_lane_ops->lecd_attach(vcc, (int)arg); | |
231 | if (error >= 0) | |
232 | sock->state = SS_CONNECTED; | |
233 | - else | |
234 | - module_put(atm_lane_ops.owner); | |
235 | + else if (atm_lane_ops->owner) | |
236 | + __MOD_DEC_USE_COUNT(atm_lane_ops->owner); | |
237 | ret_val = error; | |
238 | goto done; | |
239 | case ATMLEC_MCAST: | |
240 | if (!capable(CAP_NET_ADMIN)) | |
241 | ret_val = -EPERM; | |
242 | else | |
243 | - ret_val = atm_lane_ops.mcast_attach(vcc, (int)arg); | |
244 | + ret_val = atm_lane_ops->mcast_attach(vcc, (int)arg); | |
245 | goto done; | |
246 | case ATMLEC_DATA: | |
247 | if (!capable(CAP_NET_ADMIN)) | |
248 | ret_val = -EPERM; | |
249 | else | |
250 | - ret_val = atm_lane_ops.vcc_attach(vcc, (void*)arg); | |
251 | + ret_val = atm_lane_ops->vcc_attach(vcc, (void*)arg); | |
252 | goto done; | |
253 | #endif | |
254 | #if defined(CONFIG_ATM_MPOA) || defined(CONFIG_ATM_MPOA_MODULE) | |
255 | @@ -715,21 +733,26 @@ | |
256 | ret_val = -EPERM; | |
257 | goto done; | |
258 | } | |
259 | - if (atm_mpoa_ops.mpoad_attach == NULL) | |
260 | - atm_mpoa_init(); | |
261 | - if (atm_mpoa_ops.mpoad_attach == NULL) { /* try again */ | |
262 | +#if defined(CONFIG_ATM_MPOA_MODULE) | |
263 | + if (atm_mpoa_ops == NULL) | |
264 | + request_module("mpoa"); | |
265 | +#endif | |
266 | + if (atm_mpoa_ops && !try_inc_mod_count(atm_mpoa_ops->owner)) { | |
267 | ret_val = -ENOSYS; | |
268 | goto done; | |
269 | } | |
270 | - error = atm_mpoa_ops.mpoad_attach(vcc, (int)arg); | |
271 | - if (error >= 0) sock->state = SS_CONNECTED; | |
272 | + error = atm_mpoa_ops->mpoad_attach(vcc, (int)arg); | |
273 | + if (error >= 0) | |
274 | + sock->state = SS_CONNECTED; | |
275 | + else if (atm_mpoa_ops->owner) | |
276 | + __MOD_DEC_USE_COUNT(atm_mpoa_ops->owner); | |
277 | ret_val = error; | |
278 | goto done; | |
279 | case ATMMPC_DATA: | |
280 | if (!capable(CAP_NET_ADMIN)) | |
281 | ret_val = -EPERM; | |
282 | else | |
283 | - ret_val = atm_mpoa_ops.vcc_attach(vcc, arg); | |
284 | + ret_val = atm_mpoa_ops->vcc_attach(vcc, arg); | |
285 | goto done; | |
286 | #endif | |
287 | #if defined(CONFIG_ATM_TCP) || defined(CONFIG_ATM_TCP_MODULE) | |
288 | @@ -1105,40 +1128,6 @@ | |
289 | } | |
290 | ||
291 | ||
292 | -/* | |
293 | - * lane_mpoa_init.c: A couple of helper functions | |
294 | - * to make modular LANE and MPOA client easier to implement | |
295 | - */ | |
296 | - | |
297 | -/* | |
298 | - * This is how it goes: | |
299 | - * | |
300 | - * if xxxx is not compiled as module, call atm_xxxx_init_ops() | |
301 | - * from here | |
302 | - * else call atm_mpoa_init_ops() from init_module() within | |
303 | - * the kernel when xxxx module is loaded | |
304 | - * | |
305 | - * In either case function pointers in struct atm_xxxx_ops | |
306 | - * are initialized to their correct values. Either they | |
307 | - * point to functions in the module or in the kernel | |
308 | - */ | |
309 | - | |
310 | -extern struct atm_mpoa_ops atm_mpoa_ops; /* in common.c */ | |
311 | -extern struct atm_lane_ops atm_lane_ops; /* in common.c */ | |
312 | - | |
313 | -#if defined(CONFIG_ATM_MPOA) || defined(CONFIG_ATM_MPOA_MODULE) | |
314 | -void atm_mpoa_init(void) | |
315 | -{ | |
316 | -#ifndef CONFIG_ATM_MPOA_MODULE /* not module */ | |
317 | - atm_mpoa_init_ops(&atm_mpoa_ops); | |
318 | -#else | |
319 | - request_module("mpoa"); | |
320 | -#endif | |
321 | - | |
322 | - return; | |
323 | -} | |
324 | -#endif | |
325 | - | |
326 | #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) | |
327 | #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) | |
328 | struct net_bridge_fdb_entry *(*br_fdb_get_hook)(struct net_bridge *br, | |
329 | @@ -1149,15 +1138,33 @@ | |
330 | EXPORT_SYMBOL(br_fdb_put_hook); | |
331 | #endif /* defined(CONFIG_ATM_LANE_MODULE) || defined(CONFIG_BRIDGE_MODULE) */ | |
332 | #endif /* defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) */ | |
333 | +#endif /* defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) */ | |
334 | + | |
335 | ||
336 | -void atm_lane_init(void) | |
337 | +static int __init atm_init(void) | |
338 | { | |
339 | -#ifndef CONFIG_ATM_LANE_MODULE /* not module */ | |
340 | - atm_lane_init_ops(&atm_lane_ops); | |
341 | -#else | |
342 | - request_module("lec"); | |
343 | + int error = 0; | |
344 | + | |
345 | + if (atmpvc_init() < 0) | |
346 | + return -1; | |
347 | + if (atmsvc_init() < 0) | |
348 | + return -1; | |
349 | +#ifdef CONFIG_PROC_FS | |
350 | + error = atm_proc_init(); | |
351 | + if (error) printk("atm_proc_init fails with %d\n",error); | |
352 | #endif | |
353 | + return error; | |
354 | +} | |
355 | ||
356 | - return; | |
357 | -} | |
358 | +static void __exit atm_exit(void) | |
359 | +{ | |
360 | +#ifdef CONFIG_PROC_FS | |
361 | + atm_proc_exit(); | |
362 | #endif | |
363 | + atmsvc_exit(); | |
364 | + atmpvc_exit(); | |
365 | +} | |
366 | + | |
367 | +module_init(atm_init); | |
368 | +module_exit(atm_exit); | |
369 | +MODULE_LICENSE("GPL"); | |
370 | Index: linux/net/atm/common.h | |
371 | =================================================================== | |
372 | RCS file: /home/chas/CVSROOT/linux/net/atm/common.h,v | |
373 | retrieving revision 1.1.1.1 | |
374 | diff -u -r1.1.1.1 common.h | |
375 | --- linux/net/atm/common.h 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
376 | +++ linux/net/atm/common.h 27 Feb 2003 16:47:15 -0000 | |
377 | @@ -28,7 +28,14 @@ | |
378 | void atm_release_vcc_sk(struct sock *sk,int free_sk); | |
379 | void atm_shutdown_dev(struct atm_dev *dev); | |
380 | ||
381 | +int atmsvc_init(void); | |
382 | +void atmsvc_exit(void); | |
383 | + | |
384 | +int atmpvc_init(void); | |
385 | +void atmpvc_exit(void); | |
386 | + | |
387 | int atm_proc_init(void); | |
388 | +void atm_proc_exit(void); | |
389 | ||
390 | /* SVC */ | |
391 | ||
392 | Index: linux/net/atm/ipcommon.c | |
393 | =================================================================== | |
394 | RCS file: /home/chas/CVSROOT/linux/net/atm/ipcommon.c,v | |
395 | retrieving revision 1.1.1.1 | |
396 | diff -u -r1.1.1.1 ipcommon.c | |
397 | --- linux/net/atm/ipcommon.c 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
398 | +++ linux/net/atm/ipcommon.c 3 Mar 2003 16:51:32 -0000 | |
399 | @@ -65,6 +65,3 @@ | |
400 | from->qlen = 0; | |
401 | spin_unlock_irqrestore(&from->lock,flags); | |
402 | } | |
403 | - | |
404 | - | |
405 | -EXPORT_SYMBOL(skb_migrate); | |
406 | Index: linux/net/atm/ipcommon.h | |
407 | =================================================================== | |
408 | RCS file: /home/chas/CVSROOT/linux/net/atm/ipcommon.h,v | |
409 | retrieving revision 1.1.1.1 | |
410 | diff -u -r1.1.1.1 ipcommon.h | |
411 | --- linux/net/atm/ipcommon.h 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
412 | +++ linux/net/atm/ipcommon.h 3 Mar 2003 16:52:24 -0000 | |
413 | @@ -13,8 +13,6 @@ | |
414 | #include <linux/atmdev.h> | |
415 | ||
416 | ||
417 | -extern struct net_device *clip_devs; | |
418 | - | |
419 | /* | |
420 | * Appends all skbs from "from" to "to". The operation is atomic with respect | |
421 | * to all other skb operations on "from" or "to". | |
422 | Index: linux/net/atm/lec.c | |
423 | =================================================================== | |
424 | RCS file: /home/chas/CVSROOT/linux/net/atm/lec.c,v | |
425 | retrieving revision 1.11 | |
426 | diff -u -r1.11 lec.c | |
427 | --- linux/net/atm/lec.c 3 Mar 2003 21:25:05 -0000 1.11 | |
428 | +++ linux/net/atm/lec.c 3 Mar 2003 21:27:05 -0000 | |
429 | @@ -790,7 +790,6 @@ | |
430 | dev_lec[i] = init_etherdev(NULL, size); | |
431 | if (!dev_lec[i]) | |
432 | return -ENOMEM; | |
433 | - | |
434 | priv = dev_lec[i]->priv; | |
435 | priv->is_trdev = is_trdev; | |
436 | sprintf(dev_lec[i]->name, "lec%d", i); | |
437 | @@ -828,24 +827,20 @@ | |
438 | return i; | |
439 | } | |
440 | ||
441 | -void atm_lane_init_ops(struct atm_lane_ops *ops) | |
442 | -{ | |
443 | - ops->lecd_attach = lecd_attach; | |
444 | - ops->mcast_attach = lec_mcast_attach; | |
445 | - ops->vcc_attach = lec_vcc_attach; | |
446 | - ops->get_lecs = get_dev_lec; | |
447 | - ops->owner = lecdev_ops.owner; | |
448 | - | |
449 | - printk("lec.c: " __DATE__ " " __TIME__ " initialized\n"); | |
450 | - | |
451 | - return; | |
452 | -} | |
453 | +static struct atm_lane_ops __atm_lane_ops = { | |
454 | + lecd_attach: lecd_attach, | |
455 | + mcast_attach: lec_mcast_attach, | |
456 | + vcc_attach: lec_vcc_attach, | |
457 | + get_lecs: get_dev_lec, | |
458 | + owner: THIS_MODULE | |
459 | +}; | |
460 | ||
461 | static int __init lane_module_init(void) | |
462 | { | |
463 | - extern struct atm_lane_ops atm_lane_ops; | |
464 | + extern struct atm_lane_ops *atm_lane_ops; | |
465 | ||
466 | - atm_lane_init_ops(&atm_lane_ops); | |
467 | + atm_lane_ops = &__atm_lane_ops; | |
468 | + printk("lec.c: " __DATE__ " " __TIME__ " initialized\n"); | |
469 | ||
470 | return 0; | |
471 | } | |
472 | @@ -852,14 +847,10 @@ | |
473 | static void __exit lane_module_cleanup(void) | |
474 | { | |
475 | int i; | |
476 | - extern struct atm_lane_ops atm_lane_ops; | |
477 | + extern struct atm_lane_ops *atm_lane_ops; | |
478 | struct lec_priv *priv; | |
479 | ||
480 | - atm_lane_ops.lecd_attach = NULL; | |
481 | - atm_lane_ops.mcast_attach = NULL; | |
482 | - atm_lane_ops.vcc_attach = NULL; | |
483 | - atm_lane_ops.get_lecs = NULL; | |
484 | - atm_lane_ops.owner = NULL; | |
485 | + atm_lane_ops = NULL; | |
486 | ||
487 | for (i = 0; i < MAX_LEC_ITF; i++) { | |
488 | if (dev_lec[i] != NULL) { | |
489 | @@ -871,7 +863,7 @@ | |
490 | unregister_netdev(dev_lec[i]); | |
491 | kfree(dev_lec[i]); | |
492 | dev_lec[i] = NULL; | |
493 | - } | |
494 | + } | |
495 | } | |
496 | ||
497 | return; | |
498 | @@ -1021,7 +1013,7 @@ | |
499 | #include <linux/timer.h> | |
500 | #include <asm/param.h> | |
501 | #include <asm/atomic.h> | |
502 | -#include <linux/inetdevice.h> | |
503 | +#include <linux/netdevice.h> | |
504 | #include <net/route.h> | |
505 | ||
506 | ||
507 | Index: linux/net/atm/lec.h | |
508 | =================================================================== | |
509 | RCS file: /home/chas/CVSROOT/linux/net/atm/lec.h,v | |
510 | retrieving revision 1.5 | |
511 | diff -u -r1.5 lec.h | |
512 | --- linux/net/atm/lec.h 3 Mar 2003 21:25:05 -0000 1.5 | |
513 | +++ linux/net/atm/lec.h 3 Mar 2003 21:25:17 -0000 | |
514 | @@ -155,7 +156,5 @@ | |
515 | unsigned char *atm_addr, struct sk_buff *data); | |
516 | void lec_push(struct atm_vcc *vcc, struct sk_buff *skb); | |
517 | ||
518 | -void atm_lane_init(void); | |
519 | -void atm_lane_init_ops(struct atm_lane_ops *ops); | |
520 | #endif /* _LEC_H_ */ | |
521 | ||
522 | Index: linux/net/atm/mpc.c | |
523 | =================================================================== | |
524 | RCS file: /home/chas/CVSROOT/linux/net/atm/mpc.c,v | |
525 | retrieving revision 1.3 | |
526 | diff -u -r1.3 mpc.c | |
527 | --- linux/net/atm/mpc.c 3 Mar 2003 21:25:05 -0000 1.3 | |
528 | +++ linux/net/atm/mpc.c 3 Mar 2003 21:25:19 -0000 | |
529 | @@ -799,7 +799,6 @@ | |
530 | send_set_mps_ctrl_addr(mpc->mps_ctrl_addr, mpc); | |
531 | } | |
532 | ||
533 | - MOD_INC_USE_COUNT; | |
534 | return arg; | |
535 | } | |
536 | ||
537 | @@ -1390,11 +1389,17 @@ | |
538 | return; | |
539 | } | |
540 | ||
541 | -void atm_mpoa_init_ops(struct atm_mpoa_ops *ops) | |
542 | +struct atm_mpoa_ops __atm_mpoa_ops = { | |
543 | + mpoad_attach: atm_mpoa_mpoad_attach, | |
544 | + vcc_attach: atm_mpoa_vcc_attach, | |
545 | + owner: THIS_MODULE | |
546 | +}; | |
547 | + | |
548 | +static int __init atm_mpoa_init(void) | |
549 | { | |
550 | - ops->mpoad_attach = atm_mpoa_mpoad_attach; | |
551 | - ops->vcc_attach = atm_mpoa_vcc_attach; | |
552 | + extern struct atm_mpoa_ops *atm_mpoa_ops; | |
553 | ||
554 | + atm_mpoa_ops = &__atm_mpoa_ops; | |
555 | #ifdef CONFIG_PROC_FS | |
556 | if(mpc_proc_init() != 0) | |
557 | printk(KERN_INFO "mpoa: failed to initialize /proc/mpoa\n"); | |
558 | @@ -1404,22 +1409,12 @@ | |
559 | ||
560 | printk("mpc.c: " __DATE__ " " __TIME__ " initialized\n"); | |
561 | ||
562 | - return; | |
563 | -} | |
564 | - | |
565 | -#ifdef MODULE | |
566 | -int init_module(void) | |
567 | -{ | |
568 | - extern struct atm_mpoa_ops atm_mpoa_ops; | |
569 | - | |
570 | - atm_mpoa_init_ops(&atm_mpoa_ops); | |
571 | - | |
572 | return 0; | |
573 | } | |
574 | ||
575 | -void cleanup_module(void) | |
576 | +static void __exit atm_mpoa_cleanup(void) | |
577 | { | |
578 | - extern struct atm_mpoa_ops atm_mpoa_ops; | |
579 | + extern struct atm_mpoa_ops *atm_mpoa_ops; | |
580 | struct mpoa_client *mpc, *tmp; | |
581 | struct atm_mpoa_qos *qos, *nextqos; | |
582 | struct lec_priv *priv; | |
583 | @@ -1430,8 +1425,7 @@ | |
584 | ||
585 | del_timer(&mpc_timer); | |
586 | unregister_netdevice_notifier(&mpoa_notifier); | |
587 | - atm_mpoa_ops.mpoad_attach = NULL; | |
588 | - atm_mpoa_ops.vcc_attach = NULL; | |
589 | + atm_mpoa_ops = NULL; | |
590 | ||
591 | mpc = mpcs; | |
592 | mpcs = NULL; | |
593 | @@ -1463,8 +1457,9 @@ | |
594 | kfree(qos); | |
595 | qos = nextqos; | |
596 | } | |
597 | - | |
598 | - return; | |
599 | } | |
600 | -#endif /* MODULE */ | |
601 | + | |
602 | +module_init(atm_mpoa_init); | |
603 | +module_exit(atm_mpoa_cleanup); | |
604 | + | |
605 | MODULE_LICENSE("GPL"); | |
606 | Index: linux/net/atm/mpc.h | |
607 | =================================================================== | |
608 | RCS file: /home/chas/CVSROOT/linux/net/atm/mpc.h,v | |
609 | retrieving revision 1.1.1.1 | |
610 | diff -u -r1.1.1.1 mpc.h | |
611 | --- linux/net/atm/mpc.h 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
612 | +++ linux/net/atm/mpc.h 1 Mar 2003 13:37:05 -0000 | |
613 | @@ -48,11 +48,8 @@ | |
614 | struct atm_mpoa_ops { | |
615 | int (*mpoad_attach)(struct atm_vcc *vcc, int arg); /* attach mpoa daemon */ | |
616 | int (*vcc_attach)(struct atm_vcc *vcc, long arg); /* attach shortcut vcc */ | |
617 | + struct module *owner; | |
618 | }; | |
619 | - | |
620 | -/* Boot/module initialization function */ | |
621 | -void atm_mpoa_init(void); | |
622 | -void atm_mpoa_init_ops(struct atm_mpoa_ops *ops); | |
623 | ||
624 | /* MPOA QoS operations */ | |
625 | struct atm_mpoa_qos *atm_mpoa_add_qos(uint32_t dst_ip, struct atm_qos *qos); | |
626 | Index: linux/net/atm/proc.c | |
627 | =================================================================== | |
628 | RCS file: /home/chas/CVSROOT/linux/net/atm/proc.c,v | |
629 | retrieving revision 1.2 | |
630 | diff -u -r1.2 proc.c | |
631 | --- linux/net/atm/proc.c 26 Feb 2003 15:52:44 -0000 1.2 | |
632 | +++ linux/net/atm/proc.c 1 Mar 2003 14:39:12 -0000 | |
633 | @@ -39,16 +39,15 @@ | |
634 | #include "common.h" /* atm_proc_init prototype */ | |
635 | #include "signaling.h" /* to get sigd - ugly too */ | |
636 | ||
637 | -#ifdef CONFIG_ATM_CLIP | |
638 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
639 | #include <net/atmclip.h> | |
640 | -#include "ipcommon.h" | |
641 | -extern void clip_push(struct atm_vcc *vcc,struct sk_buff *skb); | |
642 | +extern struct atm_clip_ops *atm_clip_ops; /* in common.c */ | |
643 | #endif | |
644 | ||
645 | #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) | |
646 | #include "lec.h" | |
647 | #include "lec_arpc.h" | |
648 | -extern struct atm_lane_ops atm_lane_ops; /* in common.c */ | |
649 | +extern struct atm_lane_ops *atm_lane_ops; /* in common.c */ | |
650 | #endif | |
651 | ||
652 | static ssize_t proc_dev_atm_read(struct file *file,char *buf,size_t count, | |
653 | @@ -89,7 +88,7 @@ | |
654 | } | |
655 | ||
656 | ||
657 | -#ifdef CONFIG_ATM_CLIP | |
658 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
659 | ||
660 | ||
661 | static int svc_addr(char *buf,struct sockaddr_atmsvc *addr) | |
662 | @@ -178,8 +177,8 @@ | |
663 | aal_name[vcc->qos.aal],vcc->qos.rxtp.min_pcr, | |
664 | class_name[vcc->qos.rxtp.traffic_class],vcc->qos.txtp.min_pcr, | |
665 | class_name[vcc->qos.txtp.traffic_class]); | |
666 | -#ifdef CONFIG_ATM_CLIP | |
667 | - if (vcc->push == clip_push) { | |
668 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
669 | + if (atm_clip_ops && (vcc->push == atm_clip_ops->clip_push)) { | |
670 | struct clip_vcc *clip_vcc = CLIP_VCC(vcc); | |
671 | struct net_device *dev; | |
672 | ||
673 | @@ -393,7 +392,7 @@ | |
674 | return 0; | |
675 | } | |
676 | ||
677 | -#ifdef CONFIG_ATM_CLIP | |
678 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
679 | static int atm_arp_info(loff_t pos,char *buf) | |
680 | { | |
681 | struct neighbour *n; | |
682 | @@ -403,28 +402,30 @@ | |
683 | return sprintf(buf,"IPitf TypeEncp Idle IP address " | |
684 | "ATM address\n"); | |
685 | } | |
686 | + if (!atm_clip_ops) | |
687 | + return 0; | |
688 | count = pos; | |
689 | - read_lock_bh(&clip_tbl.lock); | |
690 | + read_lock_bh(&atm_clip_ops->clip_tbl->lock); | |
691 | for (i = 0; i <= NEIGH_HASHMASK; i++) | |
692 | - for (n = clip_tbl.hash_buckets[i]; n; n = n->next) { | |
693 | + for (n = atm_clip_ops->clip_tbl->hash_buckets[i]; n; n = n->next) { | |
694 | struct atmarp_entry *entry = NEIGH2ENTRY(n); | |
695 | struct clip_vcc *vcc; | |
696 | ||
697 | if (!entry->vccs) { | |
698 | if (--count) continue; | |
699 | atmarp_info(n->dev,entry,NULL,buf); | |
700 | - read_unlock_bh(&clip_tbl.lock); | |
701 | + read_unlock_bh(&atm_clip_ops->clip_tbl->lock); | |
702 | return strlen(buf); | |
703 | } | |
704 | for (vcc = entry->vccs; vcc; | |
705 | vcc = vcc->next) { | |
706 | if (--count) continue; | |
707 | atmarp_info(n->dev,entry,vcc,buf); | |
708 | - read_unlock_bh(&clip_tbl.lock); | |
709 | + read_unlock_bh(&atm_clip_ops->clip_tbl->lock); | |
710 | return strlen(buf); | |
711 | } | |
712 | } | |
713 | - read_unlock_bh(&clip_tbl.lock); | |
714 | + read_unlock_bh(&atm_clip_ops->clip_tbl->lock); | |
715 | return 0; | |
716 | } | |
717 | #endif | |
718 | @@ -442,13 +443,13 @@ | |
719 | " Status Flags " | |
720 | "VPI/VCI Recv VPI/VCI\n"); | |
721 | } | |
722 | - if (atm_lane_ops.get_lecs == NULL) | |
723 | + if (!atm_lane_ops) | |
724 | return 0; /* the lane module is not there yet */ | |
725 | ||
726 | - if (!try_module_get(atm_lane_ops.owner)) | |
727 | + if (!try_inc_mod_count(atm_lane_ops->owner)) | |
728 | return 0; | |
729 | ||
730 | - dev_lec = atm_lane_ops.get_lecs(); | |
731 | + dev_lec = atm_lane_ops->get_lecs(); | |
732 | ||
733 | count = pos; | |
734 | for(d=0;d<MAX_LEC_ITF;d++) { | |
735 | @@ -461,7 +462,8 @@ | |
736 | e=sprintf(buf,"%s ", | |
737 | dev_lec[d]->name); | |
738 | lec_info(entry,buf+e); | |
739 | - module_put(atm_lane_ops.owner); | |
740 | + if (atm_lane_ops->owner) | |
741 | + __MOD_DEC_USE_COUNT(atm_lane_ops->owner); | |
742 | return strlen(buf); | |
743 | } | |
744 | } | |
745 | @@ -470,7 +471,8 @@ | |
746 | if (--count) continue; | |
747 | e=sprintf(buf,"%s ",dev_lec[d]->name); | |
748 | lec_info(entry, buf+e); | |
749 | - module_put(atm_lane_ops.owner); | |
750 | + if (atm_lane_ops->owner) | |
751 | + __MOD_DEC_USE_COUNT(atm_lane_ops->owner); | |
752 | return strlen(buf); | |
753 | } | |
754 | for(entry=priv->lec_no_forward; entry; | |
755 | @@ -478,7 +479,8 @@ | |
756 | if (--count) continue; | |
757 | e=sprintf(buf,"%s ",dev_lec[d]->name); | |
758 | lec_info(entry, buf+e); | |
759 | - module_put(atm_lane_ops.owner); | |
760 | + if (atm_lane_ops->owner) | |
761 | + __MOD_DEC_USE_COUNT(atm_lane_ops->owner); | |
762 | return strlen(buf); | |
763 | } | |
764 | for(entry=priv->mcast_fwds; entry; | |
765 | @@ -486,11 +487,13 @@ | |
766 | if (--count) continue; | |
767 | e=sprintf(buf,"%s ",dev_lec[d]->name); | |
768 | lec_info(entry, buf+e); | |
769 | - module_put(atm_lane_ops.owner); | |
770 | + if (atm_lane_ops->owner) | |
771 | + __MOD_DEC_USE_COUNT(atm_lane_ops->owner); | |
772 | return strlen(buf); | |
773 | } | |
774 | } | |
775 | - module_put(atm_lane_ops.owner); | |
776 | + if (atm_lane_ops->owner) | |
777 | + __MOD_DEC_USE_COUNT(atm_lane_ops->owner); | |
778 | return 0; | |
779 | } | |
780 | #endif | |
781 | @@ -591,12 +592,11 @@ | |
782 | name->proc_fops = &proc_spec_atm_operations; \ | |
783 | name->owner = THIS_MODULE | |
784 | ||
785 | +struct proc_dir_entry *devices = NULL, *pvc = NULL, *svc = NULL; | |
786 | +struct proc_dir_entry *arp = NULL, *lec = NULL, *vc = NULL; | |
787 | ||
788 | int __init atm_proc_init(void) | |
789 | { | |
790 | - struct proc_dir_entry *devices = NULL,*pvc = NULL,*svc = NULL; | |
791 | - struct proc_dir_entry *arp = NULL,*lec = NULL,*vc = NULL; | |
792 | - | |
793 | atm_proc_root = proc_mkdir("net/atm",NULL); | |
794 | if (!atm_proc_root) | |
795 | return -ENOMEM; | |
796 | @@ -604,7 +604,7 @@ | |
797 | CREATE_ENTRY(pvc); | |
798 | CREATE_ENTRY(svc); | |
799 | CREATE_ENTRY(vc); | |
800 | -#ifdef CONFIG_ATM_CLIP | |
801 | +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) | |
802 | CREATE_ENTRY(arp); | |
803 | #endif | |
804 | #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) | |
805 | @@ -621,4 +621,15 @@ | |
806 | if (vc) remove_proc_entry("vc",atm_proc_root); | |
807 | remove_proc_entry("net/atm",NULL); | |
808 | return -ENOMEM; | |
809 | +} | |
810 | + | |
811 | +void __exit atm_proc_exit(void) | |
812 | +{ | |
813 | + if (vc) remove_proc_entry("vc",atm_proc_root); | |
814 | + if (lec) remove_proc_entry("lec",atm_proc_root); | |
815 | + if (arp) remove_proc_entry("arp",atm_proc_root); | |
816 | + if (svc) remove_proc_entry("svc",atm_proc_root); | |
817 | + if (pvc) remove_proc_entry("pvc",atm_proc_root); | |
818 | + if (devices) remove_proc_entry("devices",atm_proc_root); | |
819 | + remove_proc_entry("net/atm",NULL); | |
820 | } | |
821 | Index: linux/net/atm/pvc.c | |
822 | =================================================================== | |
823 | RCS file: /home/chas/CVSROOT/linux/net/atm/pvc.c,v | |
824 | retrieving revision 1.1.1.1 | |
825 | diff -u -r1.1.1.1 pvc.c | |
826 | --- linux/net/atm/pvc.c 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
827 | +++ linux/net/atm/pvc.c 1 Mar 2003 14:11:17 -0000 | |
828 | @@ -15,9 +15,6 @@ | |
829 | #include <linux/skbuff.h> | |
830 | #include <linux/bitops.h> | |
831 | #include <net/sock.h> /* for sock_no_* */ | |
832 | -#ifdef CONFIG_ATM_CLIP | |
833 | -#include <net/atmclip.h> | |
834 | -#endif | |
835 | ||
836 | #include "resources.h" /* devs and vccs */ | |
837 | #include "common.h" /* common for PVCs and SVCs */ | |
838 | @@ -121,23 +118,20 @@ | |
839 | */ | |
840 | ||
841 | ||
842 | -static int __init atmpvc_init(void) | |
843 | +int __init atmpvc_init(void) | |
844 | { | |
845 | int error; | |
846 | ||
847 | error = sock_register(&pvc_family_ops); | |
848 | if (error < 0) { | |
849 | - printk(KERN_ERR "ATMPVC: can't register (%d)",error); | |
850 | + printk(KERN_ERR "ATMPVC: can't register (%d)", error); | |
851 | return error; | |
852 | } | |
853 | -#ifdef CONFIG_ATM_CLIP | |
854 | - atm_clip_init(); | |
855 | -#endif | |
856 | -#ifdef CONFIG_PROC_FS | |
857 | - error = atm_proc_init(); | |
858 | - if (error) printk("atm_proc_init fails with %d\n",error); | |
859 | -#endif | |
860 | - return 0; | |
861 | + | |
862 | + return error; | |
863 | } | |
864 | ||
865 | -module_init(atmpvc_init); | |
866 | +void __exit atmpvc_exit(void) | |
867 | +{ | |
868 | + sock_unregister(PF_ATMPVC); | |
869 | +} | |
870 | Index: linux/net/atm/svc.c | |
871 | =================================================================== | |
872 | RCS file: /home/chas/CVSROOT/linux/net/atm/svc.c,v | |
873 | retrieving revision 1.1.1.1 | |
874 | diff -u -r1.1.1.1 svc.c | |
875 | --- linux/net/atm/svc.c 20 Feb 2003 13:46:30 -0000 1.1.1.1 | |
876 | +++ linux/net/atm/svc.c 27 Feb 2003 16:48:54 -0000 | |
877 | @@ -439,13 +439,19 @@ | |
878 | * Initialize the ATM SVC protocol family | |
879 | */ | |
880 | ||
881 | -static int __init atmsvc_init(void) | |
882 | +int __init atmsvc_init(void) | |
883 | { | |
884 | - if (sock_register(&svc_family_ops) < 0) { | |
885 | - printk(KERN_ERR "ATMSVC: can't register"); | |
886 | + int error; | |
887 | + | |
888 | + error = sock_register(&svc_family_ops); | |
889 | + if (error < 0) { | |
890 | + printk(KERN_ERR "ATMSVC: can't register (%d)\n", error); | |
891 | return -1; | |
892 | } | |
893 | return 0; | |
894 | } | |
895 | ||
896 | -module_init(atmsvc_init); | |
897 | +void __exit atmsvc_exit(void) | |
898 | +{ | |
899 | + sock_unregister(PF_ATMSVC); | |
900 | +} | |
901 | Index: linux/include/net/atmclip.h | |
902 | =================================================================== | |
903 | RCS file: /home/chas/CVSROOT/linux/include/net/atmclip.h,v | |
904 | retrieving revision 1.1.1.1 | |
905 | diff -u -r1.1.1.1 atmclip.h | |
906 | --- linux/include/net/atmclip.h 20 Feb 2003 13:45:58 -0000 1.1.1.1 | |
907 | +++ linux/include/net/atmclip.h 1 Mar 2003 13:59:31 -0000 | |
908 | @@ -62,6 +62,16 @@ | |
909 | int clip_mkip(struct atm_vcc *vcc,int timeout); | |
910 | int clip_setentry(struct atm_vcc *vcc,u32 ip); | |
911 | int clip_encap(struct atm_vcc *vcc,int mode); | |
912 | -void atm_clip_init(void); | |
913 | + | |
914 | +struct atm_clip_ops { | |
915 | + int (*clip_create)(int number); | |
916 | + int (*clip_mkip)(struct atm_vcc *vcc,int timeout); | |
917 | + int (*clip_setentry)(struct atm_vcc *vcc,u32 ip); | |
918 | + int (*clip_encap)(struct atm_vcc *vcc,int mode); | |
919 | + void (*clip_push)(struct atm_vcc *vcc,struct sk_buff *skb); | |
920 | + int (*atm_init_atmarp)(struct atm_vcc *vcc); | |
921 | + struct neigh_table *clip_tbl; | |
922 | + struct module *owner; | |
923 | +}; | |
924 | ||
925 | #endif | |
926 | --- linux-2.4.20/net/atm/clip.c.orig Wed Mar 5 22:54:57 2003 | |
927 | +++ linux-2.4.20/net/atm/clip.c Thu Mar 6 00:03:50 2003 | |
928 | @@ -49,7 +49,13 @@ | |
929 | static struct timer_list idle_timer; | |
930 | static int start_timer = 1; | |
931 | ||
932 | -#include "ipcommon.c" | |
933 | +const unsigned char llc_oui[] = { | |
934 | + 0xaa, /* DSAP: non-ISO */ | |
935 | + 0xaa, /* SSAP: non-ISO */ | |
936 | + 0x03, /* Ctrl: Unnumbered Information Command PDU */ | |
937 | + 0x00, /* OUI: EtherType */ | |
938 | + 0x00, | |
939 | + 0x00 }; | |
940 | ||
941 | static int to_atmarpd(enum atmarp_ctrl_type type,int itf,unsigned long ip) | |
942 | { | |
943 | --- linux-2.4.20/net/atm/ipcommon.c.orig Wed Mar 5 22:54:57 2003 | |
944 | +++ linux-2.4.20/net/atm/ipcommon.c Thu Mar 6 00:03:48 2003 | |
945 | @@ -22,15 +22,6 @@ | |
946 | #endif | |
947 | ||
948 | ||
949 | -const unsigned char llc_oui[] = { | |
950 | - 0xaa, /* DSAP: non-ISO */ | |
951 | - 0xaa, /* SSAP: non-ISO */ | |
952 | - 0x03, /* Ctrl: Unnumbered Information Command PDU */ | |
953 | - 0x00, /* OUI: EtherType */ | |
954 | - 0x00, | |
955 | - 0x00 }; | |
956 | - | |
957 | - | |
958 | /* | |
959 | * skb_migrate appends the list at "from" to "to", emptying "from" in the | |
960 | * process. skb_migrate is atomic with respect to all other skb operations on | |
961 | @@ -65,3 +56,5 @@ | |
962 | from->qlen = 0; | |
963 | spin_unlock_irqrestore(&from->lock,flags); | |
964 | } | |
965 | + | |
966 | +EXPORT_SYMBOL(skb_migrate); | |
967 | --- linux-2.4.20/net/Config.in.orig Sat Aug 3 02:39:46 2002 | |
968 | +++ linux-2.4.20/net/Config.in Wed Mar 5 03:16:08 2003 | |
969 | @@ -31,23 +31,13 @@ | |
970 | fi | |
971 | fi | |
972 | if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then | |
973 | - bool 'Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)' CONFIG_ATM | |
974 | - if [ "$CONFIG_ATM" = "y" ]; then | |
975 | - if [ "$CONFIG_INET" = "y" ]; then | |
976 | - bool ' Classical IP over ATM' CONFIG_ATM_CLIP | |
977 | - if [ "$CONFIG_ATM_CLIP" = "y" ]; then | |
978 | - bool ' Do NOT send ICMP if no neighbour' CONFIG_ATM_CLIP_NO_ICMP | |
979 | - fi | |
980 | - fi | |
981 | - tristate ' LAN Emulation (LANE) support' CONFIG_ATM_LANE | |
982 | - if [ "$CONFIG_INET" = "y" -a "$CONFIG_ATM_LANE" != "n" ]; then | |
983 | - tristate ' Multi-Protocol Over ATM (MPOA) support' CONFIG_ATM_MPOA | |
984 | - fi | |
985 | - tristate ' RFC1483/2684 Bridged protocols' CONFIG_ATM_BR2684 | |
986 | - if [ "$CONFIG_ATM_BR2684" != "n" ]; then | |
987 | - bool ' Per-VC IP filter kludge' CONFIG_ATM_BR2684_IPFILTER | |
988 | - fi | |
989 | - fi | |
990 | + tristate 'Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)' CONFIG_ATM | |
991 | + dep_tristate ' Classical IP over ATM' CONFIG_ATM_CLIP $CONFIG_ATM $CONFIG_INET | |
992 | + dep_mbool ' Do NOT send ICMP if no neighbour' CONFIG_ATM_CLIP_NO_ICMP $CONFIG_ATM_CLIP | |
993 | + dep_tristate ' LAN Emulation (LANE) support' CONFIG_ATM_LANE $CONFIG_ATM $CONFIG_INET | |
994 | + dep_tristate ' Multi-Protocol Over ATM (MPOA) support' CONFIG_ATM_MPOA $CONFIG_ATM_LANE | |
995 | + dep_tristate ' RFC1483/2684 Bridged protocols' CONFIG_ATM_BR2684 $CONFIG_ATM $CONFIG_INET | |
996 | + dep_mbool ' Per-VC IP filter kludge' CONFIG_ATM_BR2684_IPFILTER $CONFIG_ATM_BR2684 | |
997 | fi | |
998 | tristate '802.1Q VLAN Support' CONFIG_VLAN_8021Q | |
999 | ||
1000 | --- linux/arch/alpha/config.in.orig Wed Mar 5 22:24:02 2003 | |
1001 | +++ linux/arch/alpha/config.in Wed Mar 5 22:24:10 2003 | |
1002 | @@ -344,7 +344,7 @@ | |
1003 | bool 'Network device support' CONFIG_NETDEVICES | |
1004 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1005 | source drivers/net/Config.in | |
1006 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1007 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1008 | source drivers/atm/Config.in | |
1009 | fi | |
1010 | fi | |
1011 | --- linux/arch/cris/config.in.orig Wed Mar 5 22:24:24 2003 | |
1012 | +++ linux/arch/cris/config.in Wed Mar 5 22:24:31 2003 | |
1013 | @@ -198,7 +198,7 @@ | |
1014 | bool 'Network device support' CONFIG_NETDEVICES | |
1015 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1016 | source drivers/net/Config.in | |
1017 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1018 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1019 | source drivers/atm/Config.in | |
1020 | fi | |
1021 | fi | |
1022 | --- linux/arch/i386/config.in.orig Wed Mar 5 22:24:33 2003 | |
1023 | +++ linux/arch/i386/config.in Wed Mar 5 22:24:39 2003 | |
1024 | @@ -406,7 +406,7 @@ | |
1025 | bool 'Network device support' CONFIG_NETDEVICES | |
1026 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1027 | source drivers/net/Config.in | |
1028 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1029 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1030 | source drivers/atm/Config.in | |
1031 | fi | |
1032 | fi | |
1033 | --- linux/arch/parisc/config.in.orig Wed Mar 5 22:25:34 2003 | |
1034 | +++ linux/arch/parisc/config.in Wed Mar 5 22:25:40 2003 | |
1035 | @@ -144,7 +144,7 @@ | |
1036 | ||
1037 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1038 | source drivers/net/Config.in | |
1039 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1040 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1041 | source drivers/atm/Config.in | |
1042 | fi | |
1043 | fi | |
1044 | --- linux/arch/ppc/config.in.orig Wed Mar 5 22:25:42 2003 | |
1045 | +++ linux/arch/ppc/config.in Wed Mar 5 22:25:48 2003 | |
1046 | @@ -292,7 +292,7 @@ | |
1047 | bool 'Network device support' CONFIG_NETDEVICES | |
1048 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1049 | source drivers/net/Config.in | |
1050 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1051 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1052 | source drivers/atm/Config.in | |
1053 | fi | |
1054 | fi | |
1055 | --- linux/arch/ppc64/config.in.orig Wed Mar 5 22:25:50 2003 | |
1056 | +++ linux/arch/ppc64/config.in Wed Mar 5 22:25:55 2003 | |
1057 | @@ -138,7 +138,7 @@ | |
1058 | bool 'Network device support' CONFIG_NETDEVICES | |
1059 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1060 | source drivers/net/Config.in | |
1061 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1062 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1063 | source drivers/atm/Config.in | |
1064 | fi | |
1065 | fi | |
1066 | --- linux/arch/sh/config.in.orig Wed Mar 5 22:26:08 2003 | |
1067 | +++ linux/arch/sh/config.in Wed Mar 5 22:26:14 2003 | |
1068 | @@ -264,7 +264,7 @@ | |
1069 | bool 'Network device support' CONFIG_NETDEVICES | |
1070 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1071 | source drivers/net/Config.in | |
1072 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1073 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1074 | source drivers/atm/Config.in | |
1075 | fi | |
1076 | fi | |
1077 | --- linux/arch/sparc/config.in.orig Wed Mar 5 22:26:16 2003 | |
1078 | +++ linux/arch/sparc/config.in Wed Mar 5 22:26:32 2003 | |
1079 | @@ -217,7 +217,7 @@ | |
1080 | dep_tristate ' PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP m | |
1081 | if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then | |
1082 | dep_tristate ' PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP | |
1083 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1084 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1085 | dep_tristate ' PPP over ATM (EXPERIMENTAL)' CONFIG_PPPOATM $CONFIG_PPP | |
1086 | fi | |
1087 | fi | |
1088 | @@ -243,7 +243,7 @@ | |
1089 | # if [ "$CONFIG_FDDI" = "y" ]; then | |
1090 | # fi | |
1091 | ||
1092 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1093 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1094 | source drivers/atm/Config.in | |
1095 | fi | |
1096 | fi | |
1097 | --- linux/arch/sparc64/config.in.orig Wed Mar 5 22:26:39 2003 | |
1098 | +++ linux/arch/sparc64/config.in Wed Mar 5 22:26:45 2003 | |
1099 | @@ -242,7 +242,7 @@ | |
1100 | bool 'Network device support' CONFIG_NETDEVICES | |
1101 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1102 | source drivers/net/Config.in | |
1103 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1104 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1105 | source drivers/atm/Config.in | |
1106 | fi | |
1107 | fi | |
1108 | --- linux/arch/x86_64/config.in.orig Wed Mar 5 22:26:51 2003 | |
1109 | +++ linux/arch/x86_64/config.in Wed Mar 5 22:27:11 2003 | |
1110 | @@ -173,7 +173,7 @@ | |
1111 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1112 | source drivers/net/Config.in | |
1113 | # seems to be largely not 64bit safe | |
1114 | -# if [ "$CONFIG_ATM" = "y" ]; then | |
1115 | +# if [ "$CONFIG_ATM" != "n" ]; then | |
1116 | # source drivers/atm/Config.in | |
1117 | # fi | |
1118 | fi | |
1119 | --- linux/arch/mips/config-shared.in.orig Wed Mar 5 22:25:13 2003 | |
1120 | +++ linux/arch/mips/config-shared.in Wed Mar 5 22:25:19 2003 | |
1121 | @@ -691,7 +691,7 @@ | |
1122 | bool 'Network device support' CONFIG_NETDEVICES | |
1123 | if [ "$CONFIG_NETDEVICES" = "y" ]; then | |
1124 | source drivers/net/Config.in | |
1125 | - if [ "$CONFIG_ATM" = "y" ]; then | |
1126 | + if [ "$CONFIG_ATM" != "n" ]; then | |
1127 | source drivers/atm/Config.in | |
1128 | fi | |
1129 | fi | |
9d87a16a JR |
1130 | --- linux-2.4.20/net/sched/Config.in.orig Thu Mar 6 17:20:59 2003 |
1131 | +++ linux-2.4.20/net/sched/Config.in Thu Mar 6 17:46:02 2003 | |
1132 | @@ -6,9 +6,7 @@ | |
1133 | tristate ' CSZ packet scheduler' CONFIG_NET_SCH_CSZ | |
1134 | #tristate ' H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ | |
1135 | #tristate ' H-FSC packet scheduler' CONFIG_NET_SCH_HFCS | |
1136 | -if [ "$CONFIG_ATM" = "y" ]; then | |
1137 | - bool ' ATM pseudo-scheduler' CONFIG_NET_SCH_ATM | |
1138 | -fi | |
1139 | +dep_tristate ' ATM pseudo-scheduler' CONFIG_NET_SCH_ATM $CONFIG_ATM | |
1140 | tristate ' The simplest PRIO pseudoscheduler' CONFIG_NET_SCH_PRIO | |
1141 | tristate ' WRR packet scheduler' CONFIG_NET_SCH_WRR | |
1142 | tristate ' RED queue' CONFIG_NET_SCH_RED | |
b5a39c4d JR |
1143 | - |
1144 | To unsubscribe from this list: send the line "unsubscribe linux-kernel" in | |
1145 | the body of a message to majordomo@vger.kernel.org | |
1146 | More majordomo info at http://vger.kernel.org/majordomo-info.html | |
1147 | Please read the FAQ at http://www.tux.org/lkml/ |