switch (cmd) {
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags)) {
-                       spin_lock_irqsave(&fc->lock, flags);
-                       mISDN_freebchannel(bch);
-                       test_and_clear_bit(FLG_TX_BUSY, &bch->Flags);
-                       test_and_clear_bit(FLG_ACTIVE, &bch->Flags);
-                       modehdlc(bch, ISDN_P_NONE);
-                       spin_unlock_irqrestore(&fc->lock, flags);
-               }
+               spin_lock_irqsave(&fc->lock, flags);
+               mISDN_freebchannel(bch);
+               modehdlc(bch, ISDN_P_NONE);
+               spin_unlock_irqrestore(&fc->lock, flags);
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(THIS_MODULE);
 
        switch (cmd) {
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags))
-                       deactivate_bchannel(bch); /* locked there */
+               deactivate_bchannel(bch); /* locked there */
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(THIS_MODULE);
 
                break;
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags))
-                       deactivate_bchannel(bch);
+               deactivate_bchannel(bch);
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(THIS_MODULE);
 
 
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags))
-                       deactivate_bchannel(bch);
+               deactivate_bchannel(bch);
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(THIS_MODULE);
 
        switch (cmd) {
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags)) {
-                       spin_lock_irqsave(hx->ip->hwlock, flags);
-                       mISDN_freebchannel(bch);
-                       hscx_mode(hx, ISDN_P_NONE);
-                       spin_unlock_irqrestore(hx->ip->hwlock, flags);
-               } else {
-                       skb_queue_purge(&bch->rqueue);
-                       bch->rcount = 0;
-               }
+               spin_lock_irqsave(hx->ip->hwlock, flags);
+               mISDN_freebchannel(bch);
+               hscx_mode(hx, ISDN_P_NONE);
+               spin_unlock_irqrestore(hx->ip->hwlock, flags);
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(hx->ip->owner);
 
        switch (cmd) {
        case CLOSE_CHANNEL:
                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->peer = NULL;
                module_put(ich->is->owner);
 
        switch (cmd) {
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags)) {
-                       spin_lock_irqsave(&card->lock, flags);
-                       mISDN_freebchannel(bch);
-                       test_and_clear_bit(FLG_TX_BUSY, &bch->Flags);
-                       test_and_clear_bit(FLG_ACTIVE, &bch->Flags);
-                       mode_tiger(bc, ISDN_P_NONE);
-                       spin_unlock_irqrestore(&card->lock, flags);
-               }
+               spin_lock_irqsave(&card->lock, flags);
+               mISDN_freebchannel(bch);
+               mode_tiger(bc, ISDN_P_NONE);
+               spin_unlock_irqrestore(&card->lock, flags);
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(THIS_MODULE);
 
        switch (cmd) {
        case CLOSE_CHANNEL:
                test_and_clear_bit(FLG_OPEN, &bch->Flags);
-               if (test_bit(FLG_ACTIVE, &bch->Flags)) {
-                       spin_lock_irqsave(&card->lock, flags);
-                       mISDN_freebchannel(bch);
-                       w6692_mode(bc, ISDN_P_NONE);
-                       spin_unlock_irqrestore(&card->lock, flags);
-               } else {
-                       skb_queue_purge(&bch->rqueue);
-                       bch->rcount = 0;
-               }
+               spin_lock_irqsave(&card->lock, flags);
+               mISDN_freebchannel(bch);
+               w6692_mode(bc, ISDN_P_NONE);
+               spin_unlock_irqrestore(&card->lock, flags);
                ch->protocol = ISDN_P_NONE;
                ch->peer = NULL;
                module_put(THIS_MODULE);