[thirdparty-commits] rmudgett: branch mISDN/1.0 r101 - in /mISDN/branches/1.0: ./ drivers/isdn/har...
SVN commits to the Digium third-party software repository
thirdparty-commits at lists.digium.com
Mon Apr 13 14:32:42 CDT 2009
Author: rmudgett
Date: Mon Apr 13 14:32:39 2009
New Revision: 101
URL: http://svn.digium.com/svn-view/thirdparty?view=rev&rev=101
Log:
Merged revisions 93-94 via svnmerge from
https://origsvn.digium.com/svn/thirdparty/mISDN/trunk
........
r93 | rmudgett | 2009-04-09 14:06:40 -0500 (Thu, 09 Apr 2009) | 1 line
Added Q.921 L2 state name comments to L2 state definitions.
........
r94 | rmudgett | 2009-04-13 12:14:58 -0500 (Mon, 13 Apr 2009) | 32 lines
Added handling of EV_RELEASE_CNF to ST_L3_LC_ESTAB_WAIT state to bring L2 back up.
The mISDN L2 and L3 state machines could get into a deadlocked condition
while L2 is going down just as the TE side attempts to initiate a call
or respond to an incoming call.
JIRA ABE-1816, issue 14030
Sequence of events between L2 and L3:
ST_L3_LC_ESTAB::EV_RELEASE_REQ -> ST_L3_LC_REL_DELAY
Event for various reasons when L3 is no longer needed.
i.e. RELEASE_COMPLETE is sent.
ST_L3_LC_REL_DELAY::TIMEOUT -> ST_L3_LC_REL_WAIT
Event sent to L2 state machine to initiate bringing L2 down.
ST_L2_7::EV_L2_DL_RELEASE_REQ -> ST_L2_6
L2 sends disconnect and waits for a reply.
ST_L3_LC_REL_WAIT::EV_ESTABLISH_REQ -> ST_L3_LC_ESTAB_WAIT
L3 message (SETUP, SETUP_ACK, or PROCEEDING) attempts to bring
L2 back up by sending event to L2 to establish link.
ST_L2_6::EV_L2_DL_ESTABLISH_REQ (Ignored)
L2 is busy still waiting for a reply to the disconnect.
ST_L2_6::EV_L2_UA -> ST_L2_4
L2 completes going down and sends event to L3.
ST_L3_LC_ESTAB_WAIT::EV_RELEASE_CNF (Ignored)
L3 thinks L2 is trying to go up so does not know what
to do when L2 confirms that is has completed going down.
ST_L3_LC_ESTAB_WAIT::EV_ESTABLISH_REQ (Ignored)
Subsequent messages cannot go out because L3 is already
waiting for L2 to go up. Since L2 is never going
to try to go up anymore, the state machines are
deadlocked.
........
Modified:
mISDN/branches/1.0/ (props changed)
mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer2.c
mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer3.c
Propchange: mISDN/branches/1.0/
------------------------------------------------------------------------------
--- trunk-merged (original)
+++ trunk-merged Mon Apr 13 14:32:39 2009
@@ -1,1 +1,1 @@
-/mISDN/trunk:1-75
+/mISDN/trunk:1-75,93-94
Modified: mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer2.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer2.c?view=diff&rev=101&r1=100&r2=101
==============================================================================
--- mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer2.c (original)
+++ mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer2.c Mon Apr 13 14:32:39 2009
@@ -22,14 +22,14 @@
struct Fsm l2fsm = {NULL, 0, 0, NULL, NULL};
enum {
- ST_L2_1,
- ST_L2_2,
- ST_L2_3,
- ST_L2_4,
- ST_L2_5,
- ST_L2_6,
- ST_L2_7,
- ST_L2_8,
+ ST_L2_1, /* TEI unassigned. */
+ ST_L2_2, /* Assign awaiting TEI. */
+ ST_L2_3, /* Establish awaiting TEI. */
+ ST_L2_4, /* TEI assigned. */
+ ST_L2_5, /* Awaiting establishment. */
+ ST_L2_6, /* Awaiting release. */
+ ST_L2_7, /* Multiple frame established. */
+ ST_L2_8, /* Timer recovery. */
};
#define L2_STATE_COUNT (ST_L2_8+1)
Modified: mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer3.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer3.c?view=diff&rev=101&r1=100&r2=101
==============================================================================
--- mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer3.c (original)
+++ mISDN/branches/1.0/drivers/isdn/hardware/mISDN/layer3.c Mon Apr 13 14:32:39 2009
@@ -495,6 +495,7 @@
{ST_L3_LC_ESTAB_WAIT, EV_ESTABLISH_CNF, lc_connected},
{ST_L3_LC_ESTAB_WAIT, EV_RELEASE_REQ, lc_start_delay},
{ST_L3_LC_ESTAB_WAIT, EV_RELEASE_IND, lc_release_ind},
+ {ST_L3_LC_ESTAB_WAIT, EV_RELEASE_CNF, lc_activate},
{ST_L3_LC_ESTAB, EV_RELEASE_IND, lc_release_ind},
{ST_L3_LC_ESTAB, EV_RELEASE_REQ, lc_start_delay},
{ST_L3_LC_REL_DELAY, EV_RELEASE_IND, lc_release_ind},
More information about the thirdparty-commits
mailing list