diff options
author | Martin Bachem <info@colognechip.com> | 2012-05-15 23:51:04 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-16 15:23:06 -0400 |
commit | 37952cfa3afdfa5cec39d9d76e80bc3a0e6a910c (patch) | |
tree | 829737484a661c49903ceb13d536b89c0a9a8ca9 /drivers/isdn/hardware | |
parent | 09e79a777a0c9c3de85abc395b5d984bd4bae19d (diff) | |
download | linux-37952cfa3afdfa5cec39d9d76e80bc3a0e6a910c.tar.gz linux-37952cfa3afdfa5cec39d9d76e80bc3a0e6a910c.tar.bz2 linux-37952cfa3afdfa5cec39d9d76e80bc3a0e6a910c.zip |
mISDN: Bugfix hfcsusb: usb endpoint activation/deactivation
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>
Diffstat (limited to 'drivers/isdn/hardware')
-rw-r--r-- | drivers/isdn/hardware/mISDN/hfcsusb.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/drivers/isdn/hardware/mISDN/hfcsusb.c b/drivers/isdn/hardware/mISDN/hfcsusb.c index a4c5b24b2266..919ecccb9939 100644 --- a/drivers/isdn/hardware/mISDN/hfcsusb.c +++ b/drivers/isdn/hardware/mISDN/hfcsusb.c @@ -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); } /* |