Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
[firefly-linux-kernel-4.4.55.git] / drivers / isdn / mISDN / hwchannel.c
index 0481a0cdf6db9a1915ea8423f4d389655e86c66f..e8049be552aa88800dee7d749489616628a7d20a 100644 (file)
@@ -114,13 +114,14 @@ mISDN_freedchannel(struct dchannel *ch)
 }
 EXPORT_SYMBOL(mISDN_freedchannel);
 
-int
-mISDN_freebchannel(struct bchannel *ch)
+void
+mISDN_clear_bchannel(struct bchannel *ch)
 {
        if (ch->tx_skb) {
                dev_kfree_skb(ch->tx_skb);
                ch->tx_skb = NULL;
        }
+       ch->tx_idx = 0;
        if (ch->rx_skb) {
                dev_kfree_skb(ch->rx_skb);
                ch->rx_skb = NULL;
@@ -129,6 +130,16 @@ mISDN_freebchannel(struct bchannel *ch)
                dev_kfree_skb(ch->next_skb);
                ch->next_skb = NULL;
        }
+       test_and_clear_bit(FLG_TX_BUSY, &ch->Flags);
+       test_and_clear_bit(FLG_TX_NEXT, &ch->Flags);
+       test_and_clear_bit(FLG_ACTIVE, &ch->Flags);
+}
+EXPORT_SYMBOL(mISDN_clear_bchannel);
+
+int
+mISDN_freebchannel(struct bchannel *ch)
+{
+       mISDN_clear_bchannel(ch);
        skb_queue_purge(&ch->rqueue);
        ch->rcount = 0;
        flush_scheduled_work();