aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn
diff options
context:
space:
mode:
authorTilman Schmidt <tilman@imap.cc>2009-10-06 08:18:26 -0400
committerDavid S. Miller <davem@davemloft.net>2009-10-07 01:20:57 -0400
commit3305adffc556f7998b40c31afcef4c8755ce919a (patch)
treefe3d9bf1543356bd59ac259b61986587af370693 /drivers/isdn
parent9803f79695f552265d5c70f148876b5e2a77dd6a (diff)
gigaset: fix reject/hangup handling
Signal D channel disconnect in a few cases where it was missed, including when an incoming call is disconnected before it was accepted. Impact: error handling improvement Signed-off-by: Tilman Schmidt <tilman@imap.cc> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn')
-rw-r--r--drivers/isdn/gigaset/ev-layer.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
index 2d91049571a..ff2ec2ce216 100644
--- a/drivers/isdn/gigaset/ev-layer.c
+++ b/drivers/isdn/gigaset/ev-layer.c
@@ -707,6 +707,11 @@ static void disconnect(struct at_state_t **at_state_p)
707 if (bcs) { 707 if (bcs) {
708 /* B channel assigned: invoke hardware specific handler */ 708 /* B channel assigned: invoke hardware specific handler */
709 cs->ops->close_bchannel(bcs); 709 cs->ops->close_bchannel(bcs);
710 /* notify LL */
711 if (bcs->chstate & (CHS_D_UP | CHS_NOTIFY_LL)) {
712 bcs->chstate &= ~(CHS_D_UP | CHS_NOTIFY_LL);
713 gigaset_i4l_channel_cmd(bcs, ISDN_STAT_DHUP);
714 }
710 } else { 715 } else {
711 /* no B channel assigned: just deallocate */ 716 /* no B channel assigned: just deallocate */
712 spin_lock_irqsave(&cs->lock, flags); 717 spin_lock_irqsave(&cs->lock, flags);