diff options
author | Peter Schlaile <root@asterisk.schlaile.de> | 2008-08-22 13:44:21 -0400 |
---|---|---|
committer | Karsten Keil <kkeil@suse.de> | 2009-01-09 16:44:24 -0500 |
commit | e4cce225f05c1daf89d10565c654f4c11907a049 (patch) | |
tree | 3e08f7a9f7ef16935eba11d07fa7218279b8366b /drivers | |
parent | 837468d135dcc49cdabc9fa92fc9550479f60704 (diff) |
mISDN: Fix HDLC DSP transmit
Fix HDLC DSP transmit (DL_DATA frames were bounced back upwards instead of
being sent down as PH_DATA frames)
Thanks to Andreas Eversberg for the fix!
Signed-off-by: Andreas Eversberg <andreas@eversberg.eu>
Signed-off-by: Peter Schlaile <root@asterisk.schlaile.de>
Signed-off-by: Karsten Keil <kkeil@suse.de>
Diffstat (limited to 'drivers')
-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 | } |