Blame view

kernel/linux-imx6_3.14.28/drivers/isdn/mISDN/l1oip.h 2.48 KB
6b13f685e   김민수   BSP 최초 추가
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
26
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  /*
   * see notice in l1oip.c
   */
  
  /* debugging */
  #define DEBUG_L1OIP_INIT	0x00010000
  #define DEBUG_L1OIP_SOCKET	0x00020000
  #define DEBUG_L1OIP_MGR		0x00040000
  #define DEBUG_L1OIP_MSG		0x00080000
  
  /* enable to disorder received bchannels by sequence 2143658798... */
  /*
    #define REORDER_DEBUG
  */
  
  /* frames */
  #define L1OIP_MAX_LEN		2048		/* max packet size form l2 */
  #define L1OIP_MAX_PERFRAME	1400		/* max data size in one frame */
  
  
  /* timers */
  #define L1OIP_KEEPALIVE		15
  #define L1OIP_TIMEOUT		65
  
  
  /* socket */
  #define L1OIP_DEFAULTPORT	931
  
  
  /* channel structure */
  struct l1oip_chan {
  	struct dchannel		*dch;
  	struct bchannel		*bch;
  	u32			tx_counter;	/* counts xmit bytes/packets */
  	u32			rx_counter;	/* counts recv bytes/packets */
  	u32			codecstate;	/* used by codec to save data */
  #ifdef REORDER_DEBUG
  	int			disorder_flag;
  	struct sk_buff		*disorder_skb;
  	u32			disorder_cnt;
  #endif
  };
  
  
  /* card structure */
  struct l1oip {
  	struct list_head        list;
  
  	/* card */
  	int			registered;	/* if registered with mISDN */
  	char			name[MISDN_MAX_IDLEN];
  	int			idx;		/* card index */
  	int			pri;		/* 1=pri, 0=bri */
  	int			d_idx;		/* current dchannel number */
  	int			b_num;		/* number of bchannels */
  	u32			id;		/* id of connection */
  	int			ondemand;	/* if transmis. is on demand */
  	int			bundle;		/* bundle channels in one frm */
  	int			codec;		/* codec to use for transmis. */
  	int			limit;		/* limit number of bchannels */
  
  	/* timer */
  	struct timer_list	keep_tl;
  	struct timer_list	timeout_tl;
  	int			timeout_on;
  	struct work_struct	workq;
  
  	/* socket */
  	struct socket		*socket;	/* if set, socket is created */
  	struct completion	socket_complete;/* completion of sock thread */
  	struct task_struct	*socket_thread;
  	spinlock_t		socket_lock;	/* access sock outside thread */
  	u32			remoteip;	/* if all set, ip is assigned */
  	u16			localport;	/* must always be set */
  	u16			remoteport;	/* must always be set */
  	struct sockaddr_in	sin_local;	/* local socket name */
  	struct sockaddr_in	sin_remote;	/* remote socket name */
  	struct msghdr		sendmsg;	/* ip message to send */
  	struct kvec		sendiov;	/* iov for message */
  
  	/* frame */
  	struct l1oip_chan	chan[128];	/* channel instances */
  };
  
  extern int l1oip_law_to_4bit(u8 *data, int len, u8 *result, u32 *state);
  extern int l1oip_4bit_to_law(u8 *data, int len, u8 *result);
  extern int l1oip_alaw_to_ulaw(u8 *data, int len, u8 *result);
  extern int l1oip_ulaw_to_alaw(u8 *data, int len, u8 *result);
  extern void l1oip_4bit_free(void);
  extern int l1oip_4bit_alloc(int ulaw);