Commit 942e6612 authored by Kai Germaschewski's avatar Kai Germaschewski

ISDN: Remove delayed ttyI xmit

There's really no good reason to delay sending out data on a ttyI, ISDN
is slow enough anyway ;)
  
(There is one reason, i.e. allowing to coalesce multiple chars, but
that is better fixed by having the upper levels (tty) send larger
buffers)
parent a4426b1f
...@@ -1160,8 +1160,6 @@ isdn_timer_funct(ulong dummy) ...@@ -1160,8 +1160,6 @@ isdn_timer_funct(ulong dummy)
if (tf & ISDN_TIMER_FAST) { if (tf & ISDN_TIMER_FAST) {
if (tf & ISDN_TIMER_MODEMREAD) if (tf & ISDN_TIMER_MODEMREAD)
isdn_tty_readmodem(); isdn_tty_readmodem();
if (tf & ISDN_TIMER_MODEMXMIT)
isdn_tty_modem_xmit();
} }
if (tf) if (tf)
{ {
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
/* Prototypes */ /* Prototypes */
static void isdn_tty_modem_xmit(struct modem_info *info);
static int isdn_tty_edit_at(const char *, int, modem_info *, int); static int isdn_tty_edit_at(const char *, int, modem_info *, int);
static void isdn_tty_escape_timer(unsigned long data); static void isdn_tty_escape_timer(unsigned long data);
static void isdn_tty_ring_timer(unsigned long data); static void isdn_tty_ring_timer(unsigned long data);
...@@ -1312,11 +1313,7 @@ isdn_tty_write(struct tty_struct *tty, int from_user, const u_char * buf, int co ...@@ -1312,11 +1313,7 @@ isdn_tty_write(struct tty_struct *tty, int from_user, const u_char * buf, int co
} }
atomic_dec(&info->xmit_lock); atomic_dec(&info->xmit_lock);
if ((info->xmit_count) || (skb_queue_len(&info->xmit_queue))) { if ((info->xmit_count) || (skb_queue_len(&info->xmit_queue))) {
if (m->mdmreg[REG_DXMT] & BIT_DXMT) { isdn_tty_modem_xmit(info);
isdn_tty_senddown(info);
isdn_tty_tint(info);
}
isdn_timer_ctrl(ISDN_TIMER_MODEMXMIT, 1);
} }
out: out:
if (from_user) if (from_user)
...@@ -1384,7 +1381,7 @@ isdn_tty_flush_chars(struct tty_struct *tty) ...@@ -1384,7 +1381,7 @@ isdn_tty_flush_chars(struct tty_struct *tty)
if (isdn_tty_paranoia_check(info, tty->device, "isdn_tty_flush_chars")) if (isdn_tty_paranoia_check(info, tty->device, "isdn_tty_flush_chars"))
return; return;
if ((info->xmit_count) || (skb_queue_len(&info->xmit_queue))) if ((info->xmit_count) || (skb_queue_len(&info->xmit_queue)))
isdn_timer_ctrl(ISDN_TIMER_MODEMXMIT, 1); isdn_tty_modem_xmit(info);
} }
/* /*
...@@ -3999,25 +3996,11 @@ isdn_tty_ring_timer(unsigned long data) ...@@ -3999,25 +3996,11 @@ isdn_tty_ring_timer(unsigned long data)
mod_timer(&info->ring_timer, jiffies + RING_TIMEOUT); mod_timer(&info->ring_timer, jiffies + RING_TIMEOUT);
} }
/* static void
* For all online tty's, try sending data to isdn_tty_modem_xmit(struct modem_info *info)
* the lower levels.
*/
void
isdn_tty_modem_xmit(void)
{ {
int ton = 1; isdn_tty_senddown(info);
int i; isdn_tty_tint(info);
for (i = 0; i < ISDN_MAX_CHANNELS; i++) {
modem_info *info = &isdn_mdm.info[i];
if (info->online) {
ton = 1;
isdn_tty_senddown(info);
isdn_tty_tint(info);
}
}
isdn_timer_ctrl(ISDN_TIMER_MODEMXMIT, ton);
} }
static void static void
...@@ -4031,3 +4014,4 @@ isdn_tty_connect_timer(unsigned long data) ...@@ -4031,3 +4014,4 @@ isdn_tty_connect_timer(unsigned long data)
isdn_tty_modem_hup(info, 1); isdn_tty_modem_hup(info, 1);
} }
} }
...@@ -98,7 +98,6 @@ ...@@ -98,7 +98,6 @@
((info->emu.mdmreg[REG_L2PROT] == ISDN_PROTO_L2_FAX) && \ ((info->emu.mdmreg[REG_L2PROT] == ISDN_PROTO_L2_FAX) && \
(info->emu.mdmreg[REG_L3PROT] == ISDN_PROTO_L3_FCLASS2)) (info->emu.mdmreg[REG_L3PROT] == ISDN_PROTO_L3_FCLASS2))
extern void isdn_tty_modem_xmit(void);
extern int isdn_tty_init(void); extern int isdn_tty_init(void);
extern void isdn_tty_readmodem(void); extern void isdn_tty_readmodem(void);
extern int isdn_tty_find_icall(struct isdn_slot *slot, setup_parm *setup); extern int isdn_tty_find_icall(struct isdn_slot *slot, setup_parm *setup);
......
...@@ -238,8 +238,7 @@ typedef struct { ...@@ -238,8 +238,7 @@ typedef struct {
/* Timer-delays and scheduling-flags */ /* Timer-delays and scheduling-flags */
#define ISDN_TIMER_RES 4 /* Main Timer-Resolution */ #define ISDN_TIMER_RES 4 /* Main Timer-Resolution */
#define ISDN_TIMER_MODEMREAD 1 #define ISDN_TIMER_MODEMREAD 1
#define ISDN_TIMER_MODEMXMIT 8 #define ISDN_TIMER_FAST (ISDN_TIMER_MODEMREAD)
#define ISDN_TIMER_FAST (ISDN_TIMER_MODEMREAD | ISDN_TIMER_MODEMXMIT)
/* GLOBAL_FLAGS */ /* GLOBAL_FLAGS */
#define ISDN_GLOBAL_STOPPED 1 #define ISDN_GLOBAL_STOPPED 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment