diff options
Diffstat (limited to 'drivers/isdn/hisax/lmgr.c')
-rw-r--r-- | drivers/isdn/hisax/lmgr.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/isdn/hisax/lmgr.c b/drivers/isdn/hisax/lmgr.c new file mode 100644 index 000000000000..d4f86d654de0 --- /dev/null +++ b/drivers/isdn/hisax/lmgr.c | |||
@@ -0,0 +1,50 @@ | |||
1 | /* $Id: lmgr.c,v 1.7.6.2 2001/09/23 22:24:50 kai Exp $ | ||
2 | * | ||
3 | * Layermanagement module | ||
4 | * | ||
5 | * Author Karsten Keil | ||
6 | * Copyright by Karsten Keil <keil@isdn4linux.de> | ||
7 | * | ||
8 | * This software may be used and distributed according to the terms | ||
9 | * of the GNU General Public License, incorporated herein by reference. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include "hisax.h" | ||
14 | |||
15 | static void | ||
16 | error_handling_dchan(struct PStack *st, int Error) | ||
17 | { | ||
18 | switch (Error) { | ||
19 | case 'C': | ||
20 | case 'D': | ||
21 | case 'G': | ||
22 | case 'H': | ||
23 | st->l2.l2tei(st, MDL_ERROR | REQUEST, NULL); | ||
24 | break; | ||
25 | } | ||
26 | } | ||
27 | |||
28 | static void | ||
29 | hisax_manager(struct PStack *st, int pr, void *arg) | ||
30 | { | ||
31 | long Code; | ||
32 | |||
33 | switch (pr) { | ||
34 | case (MDL_ERROR | INDICATION): | ||
35 | Code = (long) arg; | ||
36 | HiSax_putstatus(st->l1.hardware, "manager: MDL_ERROR", | ||
37 | " %c %s", (char)Code, | ||
38 | test_bit(FLG_LAPD, &st->l2.flag) ? | ||
39 | "D-channel" : "B-channel"); | ||
40 | if (test_bit(FLG_LAPD, &st->l2.flag)) | ||
41 | error_handling_dchan(st, Code); | ||
42 | break; | ||
43 | } | ||
44 | } | ||
45 | |||
46 | void | ||
47 | setstack_manager(struct PStack *st) | ||
48 | { | ||
49 | st->ma.layer = hisax_manager; | ||
50 | } | ||