|
@@ -1603,15 +1603,10 @@ isar_bctrl(struct mISDNchannel *ch, u32 cmd, void *arg)
|
|
switch (cmd) {
|
|
switch (cmd) {
|
|
case CLOSE_CHANNEL:
|
|
case CLOSE_CHANNEL:
|
|
test_and_clear_bit(FLG_OPEN, &bch->Flags);
|
|
test_and_clear_bit(FLG_OPEN, &bch->Flags);
|
|
- if (test_bit(FLG_ACTIVE, &bch->Flags)) {
|
|
|
|
- spin_lock_irqsave(ich->is->hwlock, flags);
|
|
|
|
- mISDN_freebchannel(bch);
|
|
|
|
- modeisar(ich, ISDN_P_NONE);
|
|
|
|
- spin_unlock_irqrestore(ich->is->hwlock, flags);
|
|
|
|
- } else {
|
|
|
|
- skb_queue_purge(&bch->rqueue);
|
|
|
|
- bch->rcount = 0;
|
|
|
|
- }
|
|
|
|
|
|
+ spin_lock_irqsave(ich->is->hwlock, flags);
|
|
|
|
+ mISDN_freebchannel(bch);
|
|
|
|
+ modeisar(ich, ISDN_P_NONE);
|
|
|
|
+ spin_unlock_irqrestore(ich->is->hwlock, flags);
|
|
ch->protocol = ISDN_P_NONE;
|
|
ch->protocol = ISDN_P_NONE;
|
|
ch->peer = NULL;
|
|
ch->peer = NULL;
|
|
module_put(ich->is->owner);
|
|
module_put(ich->is->owner);
|