diff options
-rw-r--r-- | drivers/isdn/mISDN/dsp_core.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/isdn/mISDN/dsp_core.c b/drivers/isdn/mISDN/dsp_core.c index 1d504ba954f5..c16cb7ac3d2a 100644 --- a/drivers/isdn/mISDN/dsp_core.c +++ b/drivers/isdn/mISDN/dsp_core.c | |||
@@ -867,11 +867,14 @@ dsp_function(struct mISDNchannel *ch, struct sk_buff *skb) | |||
867 | } | 867 | } |
868 | if (dsp->hdlc) { | 868 | if (dsp->hdlc) { |
869 | /* hdlc */ | 869 | /* hdlc */ |
870 | spin_lock_irqsave(&dsp_lock, flags); | 870 | if (!dsp->b_active) { |
871 | if (dsp->b_active) { | 871 | ret = -EIO; |
872 | skb_queue_tail(&dsp->sendq, skb); | 872 | break; |
873 | schedule_work(&dsp->workq); | ||
874 | } | 873 | } |
874 | hh->prim = PH_DATA_REQ; | ||
875 | spin_lock_irqsave(&dsp_lock, flags); | ||
876 | skb_queue_tail(&dsp->sendq, skb); | ||
877 | schedule_work(&dsp->workq); | ||
875 | spin_unlock_irqrestore(&dsp_lock, flags); | 878 | spin_unlock_irqrestore(&dsp_lock, flags); |
876 | return 0; | 879 | return 0; |
877 | } | 880 | } |