Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* $Id: isdnloop.h,v 1.5.6.3 2001/09/23 22:24:56 kai Exp $ |
| 2 | * |
| 3 | * Loopback lowlevel module for testing of linklevel. |
| 4 | * |
| 5 | * Copyright 1997 by Fritz Elfert (fritz@isdn4linux.de) |
| 6 | * |
| 7 | * This software may be used and distributed according to the terms |
| 8 | * of the GNU General Public License, incorporated herein by reference. |
| 9 | * |
| 10 | */ |
| 11 | |
| 12 | #ifndef isdnloop_h |
| 13 | #define isdnloop_h |
| 14 | |
| 15 | #define ISDNLOOP_IOCTL_DEBUGVAR 0 |
| 16 | #define ISDNLOOP_IOCTL_ADDCARD 1 |
| 17 | #define ISDNLOOP_IOCTL_LEASEDCFG 2 |
| 18 | #define ISDNLOOP_IOCTL_STARTUP 3 |
| 19 | |
| 20 | /* Struct for adding new cards */ |
| 21 | typedef struct isdnloop_cdef { |
| 22 | char id1[10]; |
| 23 | } isdnloop_cdef; |
| 24 | |
| 25 | /* Struct for configuring cards */ |
| 26 | typedef struct isdnloop_sdef { |
| 27 | int ptype; |
| 28 | char num[3][20]; |
| 29 | } isdnloop_sdef; |
| 30 | |
| 31 | #if defined(__KERNEL__) || defined(__DEBUGVAR__) |
| 32 | |
| 33 | #ifdef __KERNEL__ |
| 34 | /* Kernel includes */ |
| 35 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | #include <linux/errno.h> |
| 37 | #include <linux/fs.h> |
| 38 | #include <linux/major.h> |
| 39 | #include <asm/io.h> |
| 40 | #include <linux/kernel.h> |
| 41 | #include <linux/signal.h> |
| 42 | #include <linux/slab.h> |
| 43 | #include <linux/mm.h> |
| 44 | #include <linux/mman.h> |
| 45 | #include <linux/ioport.h> |
| 46 | #include <linux/timer.h> |
| 47 | #include <linux/wait.h> |
| 48 | #include <linux/isdnif.h> |
| 49 | |
| 50 | #endif /* __KERNEL__ */ |
| 51 | |
| 52 | #define ISDNLOOP_FLAGS_B1ACTIVE 1 /* B-Channel-1 is open */ |
| 53 | #define ISDNLOOP_FLAGS_B2ACTIVE 2 /* B-Channel-2 is open */ |
| 54 | #define ISDNLOOP_FLAGS_RUNNING 4 /* Cards driver activated */ |
| 55 | #define ISDNLOOP_FLAGS_RBTIMER 8 /* scheduling of B-Channel-poll */ |
| 56 | #define ISDNLOOP_TIMER_BCREAD 1 /* B-Channel poll-cycle */ |
| 57 | #define ISDNLOOP_TIMER_DCREAD (HZ/2) /* D-Channel poll-cycle */ |
Joe Perches | 475be4d | 2012-02-19 19:52:38 -0800 | [diff] [blame] | 58 | #define ISDNLOOP_TIMER_ALERTWAIT (10 * HZ) /* Alert timeout */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 59 | #define ISDNLOOP_MAX_SQUEUE 65536 /* Max. outstanding send-data */ |
| 60 | #define ISDNLOOP_BCH 2 /* channels per card */ |
| 61 | |
| 62 | /* |
| 63 | * Per card driver data |
| 64 | */ |
| 65 | typedef struct isdnloop_card { |
| 66 | struct isdnloop_card *next; /* Pointer to next device struct */ |
| 67 | struct isdnloop_card |
| 68 | *rcard[ISDNLOOP_BCH]; /* Pointer to 'remote' card */ |
| 69 | int rch[ISDNLOOP_BCH]; /* 'remote' channel */ |
| 70 | int myid; /* Driver-Nr. assigned by linklevel */ |
| 71 | int leased; /* Flag: This Adapter is connected */ |
| 72 | /* to a leased line */ |
| 73 | int sil[ISDNLOOP_BCH]; /* SI's to listen for */ |
| 74 | char eazlist[ISDNLOOP_BCH][11]; |
| 75 | /* EAZ's to listen for */ |
| 76 | char s0num[3][20]; /* 1TR6 base-number or MSN's */ |
| 77 | unsigned short flags; /* Statusflags */ |
| 78 | int ptype; /* Protocol type (1TR6 or Euro) */ |
| 79 | struct timer_list st_timer; /* Timer for Status-Polls */ |
| 80 | struct timer_list rb_timer; /* Timer for B-Channel-Polls */ |
| 81 | struct timer_list |
Joe Perches | 475be4d | 2012-02-19 19:52:38 -0800 | [diff] [blame] | 82 | c_timer[ISDNLOOP_BCH]; /* Timer for Alerting */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 83 | int l2_proto[ISDNLOOP_BCH]; /* Current layer-2-protocol */ |
| 84 | isdn_if interface; /* Interface to upper layer */ |
| 85 | int iptr; /* Index to imsg-buffer */ |
| 86 | char imsg[60]; /* Internal buf for status-parsing */ |
| 87 | int optr; /* Index to omsg-buffer */ |
| 88 | char omsg[60]; /* Internal buf for cmd-parsing */ |
| 89 | char msg_buf[2048]; /* Buffer for status-messages */ |
| 90 | char *msg_buf_write; /* Writepointer for statusbuffer */ |
| 91 | char *msg_buf_read; /* Readpointer for statusbuffer */ |
| 92 | char *msg_buf_end; /* Pointer to end of statusbuffer */ |
| 93 | int sndcount[ISDNLOOP_BCH]; /* Byte-counters for B-Ch.-send */ |
| 94 | struct sk_buff_head |
Joe Perches | 475be4d | 2012-02-19 19:52:38 -0800 | [diff] [blame] | 95 | bqueue[ISDNLOOP_BCH]; /* B-Channel queues */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 96 | struct sk_buff_head dqueue; /* D-Channel queue */ |
Amol Lad | 078d396 | 2006-10-17 00:10:37 -0700 | [diff] [blame] | 97 | spinlock_t isdnloop_lock; |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 98 | } isdnloop_card; |
| 99 | |
| 100 | /* |
| 101 | * Main driver data |
| 102 | */ |
| 103 | #ifdef __KERNEL__ |
| 104 | static isdnloop_card *cards = (isdnloop_card *) 0; |
| 105 | #endif /* __KERNEL__ */ |
| 106 | |
| 107 | /* Utility-Macros */ |
| 108 | |
| 109 | #define CID (card->interface.id) |
| 110 | |
| 111 | #endif /* defined(__KERNEL__) || defined(__DEBUGVAR__) */ |
| 112 | #endif /* isdnloop_h */ |