aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mISDNhw.h
diff options
context:
space:
mode:
authorKarsten Keil <kkeil@linux-pingi.de>2012-05-15 19:51:06 -0400
committerDavid S. Miller <davem@davemloft.net>2012-05-16 15:23:46 -0400
commit034005a0119b9c2aabe0ac3953eb9a65ca937a69 (patch)
treea7ee0735f2a9f87eb0207c27930a3e3c748bc1fe /include/linux/mISDNhw.h
parent7206e659f689558b41aa058c3040b081cb281d03 (diff)
mISDN: Allow to set a minimum length for transparent data
If the FIFO of the card is small, many short messages are queued up to the upper layers and the userspace. This change allows the applications to set a minimum datalen they want from the drivers. Create a common control function to avoid code duplication in each driver. Signed-off-by: Karsten Keil <kkeil@linux-pingi.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/mISDNhw.h')
-rw-r--r--include/linux/mISDNhw.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/include/linux/mISDNhw.h b/include/linux/mISDNhw.h
index a86d86beff7..226886cf31e 100644
--- a/include/linux/mISDNhw.h
+++ b/include/linux/mISDNhw.h
@@ -154,7 +154,12 @@ struct bchannel {
154 struct timer_list timer; 154 struct timer_list timer;
155 /* receive data */ 155 /* receive data */
156 struct sk_buff *rx_skb; 156 struct sk_buff *rx_skb;
157 int maxlen; 157 unsigned short maxlen;
158 unsigned short init_maxlen; /* initial value */
159 unsigned short next_maxlen; /* pending value */
160 unsigned short minlen; /* for transparent data */
161 unsigned short init_minlen; /* initial value */
162 unsigned short next_minlen; /* pending value */
158 /* send data */ 163 /* send data */
159 struct sk_buff *next_skb; 164 struct sk_buff *next_skb;
160 struct sk_buff *tx_skb; 165 struct sk_buff *tx_skb;
@@ -169,10 +174,12 @@ struct bchannel {
169}; 174};
170 175
171extern int mISDN_initdchannel(struct dchannel *, int, void *); 176extern int mISDN_initdchannel(struct dchannel *, int, void *);
172extern int mISDN_initbchannel(struct bchannel *, int); 177extern int mISDN_initbchannel(struct bchannel *, unsigned short,
178 unsigned short);
173extern int mISDN_freedchannel(struct dchannel *); 179extern int mISDN_freedchannel(struct dchannel *);
174extern void mISDN_clear_bchannel(struct bchannel *); 180extern void mISDN_clear_bchannel(struct bchannel *);
175extern int mISDN_freebchannel(struct bchannel *); 181extern int mISDN_freebchannel(struct bchannel *);
182extern int mISDN_ctrl_bchannel(struct bchannel *, struct mISDN_ctrl_req *);
176extern void queue_ch_frame(struct mISDNchannel *, u_int, 183extern void queue_ch_frame(struct mISDNchannel *, u_int,
177 int, struct sk_buff *); 184 int, struct sk_buff *);
178extern int dchannel_senddata(struct dchannel *, struct sk_buff *); 185extern int dchannel_senddata(struct dchannel *, struct sk_buff *);
@@ -180,7 +187,7 @@ extern int bchannel_senddata(struct bchannel *, struct sk_buff *);
180extern int bchannel_get_rxbuf(struct bchannel *, int); 187extern int bchannel_get_rxbuf(struct bchannel *, int);
181extern void recv_Dchannel(struct dchannel *); 188extern void recv_Dchannel(struct dchannel *);
182extern void recv_Echannel(struct dchannel *, struct dchannel *); 189extern void recv_Echannel(struct dchannel *, struct dchannel *);
183extern void recv_Bchannel(struct bchannel *, unsigned int id); 190extern void recv_Bchannel(struct bchannel *, unsigned int, bool);
184extern void recv_Dchannel_skb(struct dchannel *, struct sk_buff *); 191extern void recv_Dchannel_skb(struct dchannel *, struct sk_buff *);
185extern void recv_Bchannel_skb(struct bchannel *, struct sk_buff *); 192extern void recv_Bchannel_skb(struct bchannel *, struct sk_buff *);
186extern int get_next_bframe(struct bchannel *); 193extern int get_next_bframe(struct bchannel *);