mISDN: Bugfix hfcsusb: usb endpoint activation/deactivation
authorMartin Bachem <info@colognechip.com>
Tue, 15 May 2012 23:51:04 +0000 (23:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 May 2012 19:23:06 +0000 (15:23 -0400)
Here was a off by one in the activation/deactivation.
The additional activation in open_bchannel() did hide
it, but only if you do not try to use B2.

Signed-off-by: Martin Bachem <info@colognechip.com>
Signed-off-by: Karsten Keil <kkeil@linux-pingi.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/isdn/hardware/mISDN/hfcsusb.c

index a4c5b24..919eccc 100644 (file)
@@ -231,7 +231,7 @@ hfcusb_l2l1B(struct mISDNchannel *ch, struct sk_buff *skb)
                return ret;
        case PH_ACTIVATE_REQ:
                if (!test_and_set_bit(FLG_ACTIVE, &bch->Flags)) {
-                       hfcsusb_start_endpoint(hw, bch->nr);
+                       hfcsusb_start_endpoint(hw, bch->nr - 1);
                        ret = hfcsusb_setup_bch(bch, ch->protocol);
                } else
                        ret = 0;
@@ -495,12 +495,6 @@ open_bchannel(struct hfcsusb *hw, struct channel_req *rq)
        bch->ch.protocol = rq->protocol;
        rq->ch = &bch->ch;
 
-       /* start USB endpoint for bchannel */
-       if (rq->adr.channel  == 1)
-               hfcsusb_start_endpoint(hw, HFC_CHAN_B1);
-       else
-               hfcsusb_start_endpoint(hw, HFC_CHAN_B2);
-
        if (!try_module_get(THIS_MODULE))
                printk(KERN_WARNING "%s: %s:cannot get module\n",
                       hw->name, __func__);
@@ -1801,7 +1795,7 @@ deactivate_bchannel(struct bchannel *bch)
        mISDN_clear_bchannel(bch);
        spin_unlock_irqrestore(&hw->lock, flags);
        hfcsusb_setup_bch(bch, ISDN_P_NONE);
-       hfcsusb_stop_endpoint(hw, bch->nr);
+       hfcsusb_stop_endpoint(hw, bch->nr - 1);
 }
 
 /*