diff options
author | Peter Schlaile <root@asterisk.schlaile.de> | 2008-08-22 21:44:21 +0400 |
---|---|---|
committer | Karsten Keil <kkeil@suse.de> | 2009-01-10 00:44:24 +0300 |
commit | e4cce225f05c1daf89d10565c654f4c11907a049 (patch) | |
tree | 3e08f7a9f7ef16935eba11d07fa7218279b8366b /drivers/isdn | |
parent | 837468d135dcc49cdabc9fa92fc9550479f60704 (diff) | |
download | linux-e4cce225f05c1daf89d10565c654f4c11907a049.tar.xz |
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/isdn')
-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) } if (dsp->hdlc) { /* hdlc */ - spin_lock_irqsave(&dsp_lock, flags); - if (dsp->b_active) { - skb_queue_tail(&dsp->sendq, skb); - schedule_work(&dsp->workq); + if (!dsp->b_active) { + ret = -EIO; + break; } + hh->prim = PH_DATA_REQ; + spin_lock_irqsave(&dsp_lock, flags); + skb_queue_tail(&dsp->sendq, skb); + schedule_work(&dsp->workq); spin_unlock_irqrestore(&dsp_lock, flags); return 0; } |