diff options
| author | Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 2002-10-29 09:01:57 -0600 |
|---|---|---|
| committer | Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 2002-10-29 09:01:57 -0600 |
| commit | 5480f44d02886536711d8fa1311e19fa15648fa3 (patch) | |
| tree | 19f12594dd477a2220035daa7c1a0991dff83097 /drivers | |
| parent | e6926b1210b14eb42095de4c87c28500556a4fc9 (diff) | |
ISDN: ttyI cleanups
Now that ttyI's take care of their own business, some cross links
between isdn_common and isdn_tty can finally go away.
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/isdn/i4l/isdn_common.c | 31 | ||||
| -rw-r--r-- | drivers/isdn/i4l/isdn_common.h | 6 | ||||
| -rw-r--r-- | drivers/isdn/i4l/isdn_net_lib.c | 17 | ||||
| -rw-r--r-- | drivers/isdn/i4l/isdn_tty.c | 12 | ||||
| -rw-r--r-- | drivers/isdn/i4l/isdn_ttyfax.c | 2 |
5 files changed, 10 insertions, 58 deletions
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c index ff0f63576bb0..beba71ff182d 100644 --- a/drivers/isdn/i4l/isdn_common.c +++ b/drivers/isdn/i4l/isdn_common.c @@ -2179,34 +2179,6 @@ isdn_slot_dial(struct isdn_slot *slot, struct dial_info *dial) } int -isdn_slot_usage(int sl) -{ - BUG_ON(sl < 0); - - return slots[sl].usage; -} - -int -isdn_slot_m_idx(int sl) -{ - BUG_ON(sl < 0); - - return slots[sl].m_idx; -} - -void -isdn_slot_set_m_idx(struct isdn_slot *slot, int midx) -{ - slot->m_idx = midx; -} - -char * -isdn_slot_num(struct isdn_slot *slot) -{ - return slot->num; -} - -int isdn_hard_header_len(void) { int drvidx; @@ -2334,10 +2306,7 @@ static int __init isdn_init(void) for (i = 0; i < ISDN_MAX_CHANNELS; i++) { slots[i].di = -1; slots[i].ch = -1; - slots[i].m_idx = -1; strcpy(slots[i].num, "???"); - init_waitqueue_head(&isdn_mdm.info[i].open_wait); - init_waitqueue_head(&isdn_mdm.info[i].close_wait); slots[i].fi.fsm = &slot_fsm; slots[i].fi.state = ST_SLOT_NULL; slots[i].fi.debug = 1; diff --git a/drivers/isdn/i4l/isdn_common.h b/drivers/isdn/i4l/isdn_common.h index ebed1119eb25..ff80a0063722 100644 --- a/drivers/isdn/i4l/isdn_common.h +++ b/drivers/isdn/i4l/isdn_common.h @@ -57,7 +57,6 @@ extern void isdn_MOD_INC_USE_COUNT(void); extern void isdn_MOD_DEC_USE_COUNT(void); extern void isdn_lock_drivers(void); extern void isdn_unlock_drivers(void); -extern void isdn_free_channel(int di, int ch, int usage); extern void isdn_info_update(void); extern char *isdn_map_eaz2msn(char *msn, int di); extern int isdn_getnum(char **); @@ -77,7 +76,6 @@ struct isdn_slot { unsigned long ibytes; /* Statistics incoming bytes */ unsigned long obytes; /* Statistics outgoing bytes */ struct isdn_v110 iv110; /* For V.110 */ - int m_idx; /* Index for mdm.... */ void *priv; /* pointer to isdn_net_dev */ int (*event_cb)(struct isdn_slot *, int pr, void *arg); struct fsm_inst fi; @@ -101,11 +99,7 @@ char *isdn_slot_map_eaz2msn(struct isdn_slot *, char *msn); int isdn_slot_write(struct isdn_slot *, struct sk_buff *); int isdn_slot_hdrlen(struct isdn_slot *); int isdn_slot_maxbufsize(struct isdn_slot *); -char *isdn_slot_num(struct isdn_slot *); -void isdn_slot_set_m_idx(struct isdn_slot *, int midx); int isdn_hard_header_len(void); -int isdn_slot_m_idx(int sl); -int isdn_slot_usage(int sl); int isdn_drv_lookup(char *drvid); char *isdn_drv_drvid(int di); diff --git a/drivers/isdn/i4l/isdn_net_lib.c b/drivers/isdn/i4l/isdn_net_lib.c index 78e3874c46a2..f5dc1e8ddd95 100644 --- a/drivers/isdn/i4l/isdn_net_lib.c +++ b/drivers/isdn/i4l/isdn_net_lib.c @@ -857,20 +857,13 @@ isdn_net_getpeer(isdn_net_ioctl_phone *phone, isdn_net_ioctl_phone *peer) if (!idev) return -ENODEV; - /* FIXME - * Theoretical race: while this executes, the remote number might - * become invalid (hang up) or change (new connection), resulting - * in (partially) wrong number copied to user. This race - * currently ignored. - */ - slot = idev->isdn_slot; - if (slot < 0) - return -ENOTCONN; - /* for pre-bound channels, we need this extra check */ - if (strncmp(isdn_slot_num(slot), "???", 3) == 0 ) + + if (idev->fi.state != ST_ACTIVE) return -ENOTCONN; - strncpy(phone->phone, isdn_slot_num(slot), ISDN_MSNLEN); + slot = idev->isdn_slot; + + strncpy(phone->phone, slot->num, ISDN_MSNLEN); phone->outgoing = USG_OUTGOING(slot->usage); if (copy_to_user(peer, phone, sizeof(*peer))) diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c index 93c9f986025d..63d15e90ab56 100644 --- a/drivers/isdn/i4l/isdn_tty.c +++ b/drivers/isdn/i4l/isdn_tty.c @@ -764,7 +764,6 @@ isdn_tty_dial(char *n, modem_info * info, atemu * m) }; info->isdn_slot = slot; - isdn_slot_set_m_idx(slot, info->line); slot->usage |= ISDN_USAGE_MODEM; slot->priv = info; slot->event_cb = isdn_tty_event_callback; @@ -941,7 +940,6 @@ isdn_tty_resume(char *id, modem_info * info, atemu * m) isdn_tty_modem_result(RESULT_NO_DIALTONE, info); } else { info->isdn_slot = slot; - isdn_slot_set_m_idx(slot, info->line); slot->usage |= ISDN_USAGE_MODEM; slot->priv = info; slot->event_cb = isdn_tty_event_callback; @@ -1018,7 +1016,6 @@ isdn_tty_send_msg(modem_info * info, atemu * m, char *msg) isdn_tty_modem_result(RESULT_NO_DIALTONE, info); } else { info->isdn_slot = slot; - isdn_slot_set_m_idx(slot, info->line); slot->usage |= ISDN_USAGE_MODEM; slot->priv = info; slot->event_cb = isdn_tty_event_callback; @@ -2133,6 +2130,8 @@ isdn_tty_init(void) init_timer(&info->read_timer); info->read_timer.data = (unsigned long) info; info->read_timer.function = isdn_tty_readmodem; + init_waitqueue_head(&info->open_wait); + init_waitqueue_head(&info->close_wait); skb_queue_head_init(&info->rpqueue); info->xmit_size = ISDN_SERIAL_XMIT_SIZE; skb_queue_head_init(&info->xmit_queue); @@ -2301,7 +2300,6 @@ isdn_tty_find_icall(struct isdn_slot *slot, setup_parm *setup) wret = matchret; if (!matchret) { /* EAZ is matching */ info->isdn_slot = slot; - isdn_slot_set_m_idx(slot, info->line); slot->usage |= isdn_calc_usage(si1, info->emu.mdmreg[REG_L2PROT]); slot->priv = info; slot->event_cb = isdn_tty_event_callback; @@ -2740,7 +2738,7 @@ isdn_tty_modem_result(int code, modem_info * info) /* print CID, _before_ _every_ ring */ if (!(m->mdmreg[REG_CIDONCE] & BIT_CIDONCE)) { isdn_tty_at_cout("\r\nCALLER NUMBER: ", info); - isdn_tty_at_cout(isdn_slot_num(info->isdn_slot), info); + isdn_tty_at_cout(info->isdn_slot->num, info); if (m->mdmreg[REG_CDN] & BIT_CDN) { isdn_tty_at_cout("\r\nCALLED NUMBER: ", info); isdn_tty_at_cout(info->emu.cpn, info); @@ -2769,7 +2767,7 @@ isdn_tty_modem_result(int code, modem_info * info) (m->mdmreg[REG_RINGCNT] == 1)) { isdn_tty_at_cout("\r\n", info); isdn_tty_at_cout("CALLER NUMBER: ", info); - isdn_tty_at_cout(isdn_slot_num(info->isdn_slot), info); + isdn_tty_at_cout(info->isdn_slot->num, info); if (m->mdmreg[REG_CDN] & BIT_CDN) { isdn_tty_at_cout("\r\nCALLED NUMBER: ", info); isdn_tty_at_cout(info->emu.cpn, info); @@ -3281,7 +3279,7 @@ isdn_tty_cmd_ATA(modem_info * info) if (info->msr & UART_MSR_RI) { /* Accept incoming call */ info->last_dir = 0; - strcpy(info->last_num, isdn_slot_num(info->isdn_slot)); + strcpy(info->last_num, info->isdn_slot->num); m->mdmreg[REG_RINGCNT] = 0; info->msr &= ~UART_MSR_RI; l2 = m->mdmreg[REG_L2PROT]; diff --git a/drivers/isdn/i4l/isdn_ttyfax.c b/drivers/isdn/i4l/isdn_ttyfax.c index 35142304fdbe..c216f92aaece 100644 --- a/drivers/isdn/i4l/isdn_ttyfax.c +++ b/drivers/isdn/i4l/isdn_ttyfax.c @@ -360,10 +360,8 @@ isdn_tty_cmd_FCLASS1(char **p, modem_info * info) PARSE_ERROR1; } info->isdn_slot = slot; - isdn_slot_set_m_idx(slot, info->line); isdn_slot_command(slot, ISDN_CMD_FAXCMD, &c); isdn_slot_free(slot); - isdn_slot_set_m_idx(slot, -1); info->isdn_slot = NULL; restore_flags(flags); } else { |
