<p>dexter <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12624">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc_vty: add features to disable specific lchans via vty<br><br>In some test and debug situations it is useful to have the ability to<br>lock certain lchans in a way that the BSC can not allocate them. One<br>application might be to simulate an exhaustion of all TCH/H channels in<br>order to force the BSC to take one of the available TCH/F.<br><br>Lets add a command to the vty which alloes us sen lchans from<br>LCHAN_ST_UNUSED<br>to LCHAN_ST_BORKEN and vice versa.<br><br>Change-Id: I397e68e26d6a1727890353fa34f4897b54795866<br>Related: OS#3503<br>---<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/lchan_fsm.c<br>2 files changed, 48 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 3830475..357ee9e 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -4788,6 +4788,51 @@</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Debug command to send lchans from state LCHAN_ST_UNUSED to state</span><br><span style="color: hsl(120, 100%, 40%);">+ * LCHAN_ST_BORKEN and vice versa. */</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_HIDDEN(lchan_set_borken, lchan_set_borken_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+             "bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7> (borken|unused)",</span><br><span style="color: hsl(120, 100%, 40%);">+            BTS_NR_TRX_TS_SS_STR2</span><br><span style="color: hsl(120, 100%, 40%);">+         "send lchan to state LCHAN_ST_BORKEN (for debugging)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+             "send lchan to state LCHAN_ST_UNUSED (for debugging)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gsm_bts_trx_ts *ts;</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gsm_lchan *lchan;</span><br><span style="color: hsl(120, 100%, 40%);">+      int ss_nr = atoi(argv[3]);</span><br><span style="color: hsl(120, 100%, 40%);">+    ts = vty_get_ts(vty, argv[0], argv[1], argv[2]);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!ts)</span><br><span style="color: hsl(120, 100%, 40%);">+              return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+   lchan = &ts->lchan[ss_nr];</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!lchan->fi)</span><br><span style="color: hsl(120, 100%, 40%);">+            return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!strcmp(argv[4], "borken")) {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (lchan->fi->state == LCHAN_ST_UNUSED)</span><br><span style="color: hsl(120, 100%, 40%);">+                        osmo_fsm_inst_state_chg(lchan->fi, LCHAN_ST_BORKEN, 0, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+         else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        vty_out(vty,</span><br><span style="color: hsl(120, 100%, 40%);">+                          "%% lchan is in state %s, only lchans that are in state %s may be moved to state %s manually%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                            osmo_fsm_state_name(lchan->fi->fsm, lchan->fi->state),</span><br><span style="color: hsl(120, 100%, 40%);">+                            osmo_fsm_state_name(lchan->fi->fsm, LCHAN_ST_UNUSED),</span><br><span style="color: hsl(120, 100%, 40%);">+                           osmo_fsm_state_name(lchan->fi->fsm, LCHAN_ST_BORKEN), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (lchan->fi->state == LCHAN_ST_BORKEN)</span><br><span style="color: hsl(120, 100%, 40%);">+                        osmo_fsm_inst_state_chg(lchan->fi, LCHAN_ST_UNUSED, 0, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+         else {</span><br><span style="color: hsl(120, 100%, 40%);">+                        vty_out(vty,</span><br><span style="color: hsl(120, 100%, 40%);">+                          "%% lchan is in state %s, only lchans that are in state %s may be moved to state %s manually%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                            osmo_fsm_state_name(lchan->fi->fsm, lchan->fi->state),</span><br><span style="color: hsl(120, 100%, 40%);">+                            osmo_fsm_state_name(lchan->fi->fsm, LCHAN_ST_BORKEN),</span><br><span style="color: hsl(120, 100%, 40%);">+                           osmo_fsm_state_name(lchan->fi->fsm, LCHAN_ST_UNUSED), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(lchan_mdcx, lchan_mdcx_cmd,</span><br><span>        "bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7> mdcx A.B.C.D <0-65535>",</span><br><span>      BTS_NR_TRX_TS_SS_STR2</span><br><span>@@ -5264,6 +5309,8 @@</span><br><span>        install_element(ENABLE_NODE, &pdch_act_cmd);</span><br><span>     install_element(ENABLE_NODE, &lchan_act_cmd);</span><br><span>    install_element(ENABLE_NODE, &lchan_mdcx_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+    install_element(ENABLE_NODE, &lchan_set_borken_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   install_element(ENABLE_NODE, &handover_subscr_conn_cmd);</span><br><span>         install_element(ENABLE_NODE, &assignment_subscr_conn_cmd);</span><br><span>       install_element(ENABLE_NODE, &smscb_cmd_cmd);</span><br><span>diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c</span><br><span>index 70f7622..8b4cf6d 100644</span><br><span>--- a/src/osmo-bsc/lchan_fsm.c</span><br><span>+++ b/src/osmo-bsc/lchan_fsm.c</span><br><span>@@ -1115,6 +1115,7 @@</span><br><span>               .out_state_mask = 0</span><br><span>                  | S(LCHAN_ST_WAIT_TS_READY)</span><br><span>                  | S(LCHAN_ST_CBCH)</span><br><span style="color: hsl(120, 100%, 40%);">+                    | S(LCHAN_ST_BORKEN)</span><br><span>                         ,</span><br><span>    },</span><br><span>   [LCHAN_ST_CBCH] = {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12624">change 12624</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12624"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I397e68e26d6a1727890353fa34f4897b54795866 </div>
<div style="display:none"> Gerrit-Change-Number: 12624 </div>
<div style="display:none"> Gerrit-PatchSet: 8 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: Vadim Yanitskiy <axilirator@gmail.com> </div>