linux/drivers/isdn/hisax/lmgr.c
<<
>>
Prefs
   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
  15static void
  16error_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
  28static void
  29hisax_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
  46void
  47setstack_manager(struct PStack *st)
  48{
  49        st->ma.layer = hisax_manager;
  50}
  51