]> git.hungrycats.org Git - linux/commitdiff
ISDN: Remove isdn_dc2minor(), isdn_slot_all_eaz()
authorKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
Tue, 29 Oct 2002 14:53:58 +0000 (08:53 -0600)
committerKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
Tue, 29 Oct 2002 14:53:58 +0000 (08:53 -0600)
The internal driver/channel relations shouldn't leak out to users
of the ISDN code, and isdn_slot_all_eaz() can be taken over by common
code as well.

drivers/isdn/i4l/isdn_common.c
drivers/isdn/i4l/isdn_common.h
drivers/isdn/i4l/isdn_net_lib.c
drivers/isdn/i4l/isdn_tty.c

index 10058cb820a2c735a43ea42b2252d4cf4fc1e612..fcc26d1ecaac1086c664f62b3bb36bdbc69b6a5c 100644 (file)
@@ -392,8 +392,12 @@ static int
 slot_unbind(struct fsm_inst *fi, int pr, void *arg)
 {
        struct isdn_slot *slot = fi->userdata;
+       int sl = slot - slots;
+       isdn_ctrl cmd;
 
        strcpy(slot->num, "???");
+       cmd.parm.num[0] = '\0';
+       isdn_slot_command(sl, ISDN_CMD_SETEAZ, &cmd);
        slot->ibytes = 0;
        slot->obytes = 0;
        slot->usage = ISDN_USAGE_NONE;
@@ -636,6 +640,7 @@ set_global_features(void)
 static int  isdn_add_channels(struct isdn_driver *, int, int, int);
 static void isdn_receive_skb_callback(int di, int ch, struct sk_buff *skb);
 static int  isdn_status_callback(isdn_ctrl * c);
+static int  isdn_dc2minor(int di, int ch);
 
 static void isdn_v110_add_features(struct isdn_driver *drv);
 
@@ -1211,7 +1216,7 @@ int isdn_msncmp( const char * msn1, const char * msn2 )
        return isdn_wildmat( TmpMsn1, TmpMsn2 );
 }
 
-int
+static int
 isdn_dc2minor(int di, int ch)
 {
        int i;
@@ -2084,15 +2089,6 @@ isdn_get_free_slot(int usage, int l2_proto, int l3_proto,
 /*
  * Set state of ISDN-channel to 'unused'
  */
-void
-isdn_free_channel(int di, int ch, int usage)
-{
-       int sl;
-
-       sl = isdn_dc2minor(di, ch);
-       isdn_slot_free(sl);
-}
-
 void
 isdn_slot_free(int sl)
 {
@@ -2334,15 +2330,6 @@ isdn_slot_dial(int sl, struct dial_info *dial)
        return isdn_slot_command(sl, ISDN_CMD_DIAL, &cmd);
 }
 
-void
-isdn_slot_all_eaz(int sl)
-{
-       isdn_ctrl cmd;
-
-       cmd.parm.num[0] = '\0';
-       isdn_slot_command(sl, ISDN_CMD_SETEAZ, &cmd);
-}
-
 int
 isdn_slot_usage(int sl)
 {
index 336a01ff8288d95c68c34bf245acc336b81a54bd..808be6c2ab45f705fa3efc77d869f0f1703e0954 100644 (file)
@@ -57,7 +57,6 @@ 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 int isdn_dc2minor(int di, int ch);
 extern void isdn_info_update(void);
 extern char *isdn_map_eaz2msn(char *msn, int di);
 extern void isdn_timer_ctrl(int tf, int onoff);
@@ -81,7 +80,6 @@ struct dial_info {
 
 extern int   isdn_get_free_slot(int, int, int, int, int, char *);
 extern void  isdn_slot_free(int slot);
-extern void  isdn_slot_all_eaz(int slot);
 extern int   isdn_slot_command(int slot, int cmd, isdn_ctrl *);
 extern int   isdn_slot_dial(int slot, struct dial_info *dial);
 extern char *isdn_slot_map_eaz2msn(int slot, char *msn);
index b70f1cbf73af6b6666702c2e1dffbe125bf75220..ae5e22d83a6e207f085fc850eb4b5107974f45e8 100644 (file)
@@ -1408,12 +1408,11 @@ do_callback(struct fsm_inst *fi, int pr, void *arg)
 }
 
 static int
-isdn_net_dev_icall(isdn_net_dev *idev, int di, int ch, int si1,
+isdn_net_dev_icall(isdn_net_dev *idev, int slot, int di, int ch, int si1,
                   char *eaz, char *nr)
 {
        isdn_net_local *mlp = idev->mlp;
        struct isdn_net_phone *ph;
-       int slot = isdn_dc2minor(di, ch);
        char *my_eaz;
        
        /* check acceptable call types for DOV */
@@ -1502,7 +1501,7 @@ isdn_net_dev_icall(isdn_net_dev *idev, int di, int ch, int si1,
  *                   would eventually match if CID was longer.
  */
 int
-isdn_net_find_icall(int di, int ch, int idx, setup_parm *setup)
+isdn_net_find_icall(int di, int ch, int sl, setup_parm *setup)
 {
        isdn_net_local *lp;
        isdn_net_dev *idev;
@@ -1542,8 +1541,8 @@ isdn_net_find_icall(int di, int ch, int idx, setup_parm *setup)
                 return 0;
         }
 
-       dbg_net_icall("n_fi: di=%d ch=%d idx=%d usg=%d\n", di, ch, idx,
-                     isdn_slot_usage(idx));
+       dbg_net_icall("n_fi: di=%d ch=%d sl=%d usg=%d\n", di, ch, sl,
+                     isdn_slot_usage(sl));
 
        retval = 0;
        spin_lock_irqsave(&running_devs_lock, flags);
@@ -1552,7 +1551,7 @@ isdn_net_find_icall(int di, int ch, int idx, setup_parm *setup)
                spin_unlock_irqrestore(&running_devs_lock, flags);
 
                list_for_each_entry(idev, &lp->slaves, slaves) {
-                       retval = isdn_net_dev_icall(idev, di, ch, si1, eaz, nr);
+                       retval = isdn_net_dev_icall(idev, sl, di, ch, si1, eaz, nr);
                        if (retval > 0)
                                break;
                }
@@ -1707,7 +1706,6 @@ connect_fail(struct fsm_inst *fi, int pr, void *arg)
        isdn_net_dev *idev = fi->userdata;
 
        del_timer(&idev->dial_timer);
-       isdn_slot_all_eaz(idev->isdn_slot);
        printk(KERN_INFO "%s: connection failed\n", idev->name);
        isdn_net_unbind_channel(idev);
        return 0;
@@ -1791,7 +1789,6 @@ dhup(struct fsm_inst *fi, int pr, void *arg)
        isdn_net_dev *idev = fi->userdata;
 
        printk(KERN_INFO "%s: Chargesum is %d\n", idev->name, idev->charge);
-       isdn_slot_all_eaz(idev->isdn_slot);
        isdn_net_unbind_channel(idev);
        return 0;
 }
index 509e2a10951337bf3283fc6f80d4d4be2b85d77b..8b5dc3a3d5d9185f438222c5856751b4e30df344 100644 (file)
@@ -834,7 +834,6 @@ isdn_tty_modem_hup(modem_info * info, int local)
        if (local)
                isdn_slot_command(slot, ISDN_CMD_HANGUP, &cmd);
 
-       isdn_slot_all_eaz(slot);
        info->emu.mdmreg[REG_RINGCNT] = 0;
        skb_queue_purge(&info->rpqueue);
        isdn_slot_free(slot);
@@ -2234,7 +2233,6 @@ isdn_tty_find_icall(int di, int ch, int sl, setup_parm *setup)
        char *eaz;
        int i;
        int wret;
-       int idx;
        int si1;
        int si2;
        char *nr;
@@ -2265,10 +2263,9 @@ isdn_tty_find_icall(int di, int ch, int sl, setup_parm *setup)
                     continue;
                if ((info->emu.mdmreg[REG_SI1] & si2bit[si1]) &&  /* SI1 is matching */
                    (info->emu.mdmreg[REG_SI2] == si2)) {         /* SI2 is matching */
-                       idx = isdn_dc2minor(di, ch);
 #ifdef ISDN_DEBUG_MODEM_ICALL
                        printk(KERN_DEBUG "m_fi: match1 wret=%d\n", wret);
-                       printk(KERN_DEBUG "m_fi: idx=%d flags=%08lx drv=%d ch=%d usg=%d\n", idx,
+                       printk(KERN_DEBUG "m_fi: sl=%d flags=%08lx drv=%d ch=%d usg=%d\n", sl,
                               info->flags, info->isdn_driver, info->isdn_channel,
                               dev->usage[idx]);
 #endif
@@ -2277,16 +2274,16 @@ isdn_tty_find_icall(int di, int ch, int sl, setup_parm *setup)
                                (info->flags & ISDN_ASYNC_NORMAL_ACTIVE) &&
 #endif
                                (info->isdn_slot == -1) &&
-                               (USG_NONE(isdn_slot_usage(idx)))) {
+                               (USG_NONE(isdn_slot_usage(sl)))) {
                                int matchret;
 
                                if ((matchret = isdn_tty_match_icall(eaz, &info->emu, di)) > wret)
                                        wret = matchret;
                                if (!matchret) {                  /* EAZ is matching */
-                                       info->isdn_slot = idx;
-                                       isdn_slot_set_m_idx(idx, info->line);
-                                       isdn_slot_set_priv(idx, isdn_calc_usage(si1, info->emu.mdmreg[REG_L2PROT]), info, isdn_tty_stat_callback, isdn_tty_rcv_skb);
-                                       strcpy(isdn_slot_num(idx), nr);
+                                       info->isdn_slot = sl;
+                                       isdn_slot_set_m_idx(sl, info->line);
+                                       isdn_slot_set_priv(sl, isdn_calc_usage(si1, info->emu.mdmreg[REG_L2PROT]), info, isdn_tty_stat_callback, isdn_tty_rcv_skb);
+                                       strcpy(isdn_slot_num(sl), nr);
                                        strcpy(info->emu.cpn, eaz);
                                        info->emu.mdmreg[REG_SI1I] = si2bit[si1];
                                        info->emu.mdmreg[REG_PLAN] = setup->plan;
@@ -2332,15 +2329,12 @@ isdn_tty_stat_callback(int i, isdn_ctrl *c)
 #ifdef ISDN_TTY_STAT_DEBUG
                                printk(KERN_DEBUG "tty_STAT_BSENT ttyI%d\n", info->line);
 #endif
-                               if ((info->isdn_slot == isdn_dc2minor(c->driver, c->arg))) {
-                                       info->msr |= UART_MSR_CTS;
-                                       if (info->send_outstanding)
-                                               if (!(--info->send_outstanding))
-                                                       info->lsr |= UART_LSR_TEMT;
-                                       isdn_tty_tint(info);
-                                       return 1;
-                               }
-                               break;
+                               info->msr |= UART_MSR_CTS;
+                               if (info->send_outstanding)
+                                       if (!(--info->send_outstanding))
+                                               info->lsr |= UART_LSR_TEMT;
+                               isdn_tty_tint(info);
+                               return 1;
                        case ISDN_STAT_CAUSE:
 #ifdef ISDN_TTY_STAT_DEBUG
                                printk(KERN_DEBUG "tty_STAT_CAUSE ttyI%d\n", info->line);