<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12589">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trxcon: make trxcon_fsm parent for both l1ctl_fsm and trx_fsm<br><br>Change-Id: I6262726f2b6e23abe543d6d67edfd634eece1b71<br>---<br>M src/host/trxcon/l1ctl_link.c<br>M src/host/trxcon/l1ctl_link.h<br>M src/host/trxcon/trx_if.c<br>M src/host/trxcon/trx_if.h<br>M src/host/trxcon/trxcon.c<br>5 files changed, 22 insertions(+), 16 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/89/12589/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/trxcon/l1ctl_link.c b/src/host/trxcon/l1ctl_link.c</span><br><span>index 897259a..f384753 100644</span><br><span>--- a/src/host/trxcon/l1ctl_link.c</span><br><span>+++ b/src/host/trxcon/l1ctl_link.c</span><br><span>@@ -177,7 +177,8 @@</span><br><span> }</span><br><span> </span><br><span> osmo_fsm_inst_state_chg(l1l->fsm, L1CTL_STATE_CONNECTED, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- osmo_fsm_inst_dispatch(trxcon_fsm, TRXCON_E_L1CTL_CONNECT, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_fsm_inst_dispatch(l1l->fsm->proc.parent,</span><br><span style="color: hsl(120, 100%, 40%);">+ TRXCON_E_L1CTL_CONNECT, NULL);</span><br><span> </span><br><span> LOGP(DL1C, LOGL_NOTICE, "L1CTL has a new connection\n");</span><br><span> </span><br><span>@@ -224,12 +225,14 @@</span><br><span> osmo_wqueue_clear(&l1l->wq);</span><br><span> </span><br><span> osmo_fsm_inst_state_chg(l1l->fsm, L1CTL_STATE_IDLE, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- osmo_fsm_inst_dispatch(trxcon_fsm, TRXCON_E_L1CTL_DISCONNECT, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_fsm_inst_dispatch(l1l->fsm->proc.parent,</span><br><span style="color: hsl(120, 100%, 40%);">+ TRXCON_E_L1CTL_DISCONNECT, NULL);</span><br><span> </span><br><span> return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct l1ctl_link *l1ctl_link_init(void *tall_ctx, const char *sock_path)</span><br><span style="color: hsl(120, 100%, 40%);">+struct l1ctl_link *l1ctl_link_init(struct osmo_fsm_inst *parent_fi,</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *sock_path)</span><br><span> {</span><br><span> struct l1ctl_link *l1l;</span><br><span> struct osmo_fd *bfd;</span><br><span>@@ -237,15 +240,15 @@</span><br><span> </span><br><span> LOGP(DL1C, LOGL_NOTICE, "Init L1CTL link (%s)\n", sock_path);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- l1l = talloc_zero(tall_ctx, struct l1ctl_link);</span><br><span style="color: hsl(120, 100%, 40%);">+ l1l = talloc_zero(parent_fi, struct l1ctl_link);</span><br><span> if (!l1l) {</span><br><span> LOGP(DL1C, LOGL_ERROR, "Failed to allocate memory\n");</span><br><span> return NULL;</span><br><span> }</span><br><span> </span><br><span> /* Allocate a new dedicated state machine */</span><br><span style="color: hsl(0, 100%, 40%);">- l1l->fsm = osmo_fsm_inst_alloc(&l1ctl_fsm, l1l,</span><br><span style="color: hsl(0, 100%, 40%);">- NULL, LOGL_DEBUG, "l1ctl_link");</span><br><span style="color: hsl(120, 100%, 40%);">+ l1l->fsm = osmo_fsm_inst_alloc_child(&l1ctl_fsm,</span><br><span style="color: hsl(120, 100%, 40%);">+ parent_fi, TRXCON_E_L1CTL_DISCONNECT);</span><br><span> if (l1l->fsm == NULL) {</span><br><span> LOGP(DTRX, LOGL_ERROR, "Failed to allocate an instance "</span><br><span> "of FSM '%s'\n", l1ctl_fsm.name);</span><br><span>diff --git a/src/host/trxcon/l1ctl_link.h b/src/host/trxcon/l1ctl_link.h</span><br><span>index da64419..ceeaa30 100644</span><br><span>--- a/src/host/trxcon/l1ctl_link.h</span><br><span>+++ b/src/host/trxcon/l1ctl_link.h</span><br><span>@@ -41,7 +41,8 @@</span><br><span> void (*shutdown_cb)(struct l1ctl_link *l1l);</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct l1ctl_link *l1ctl_link_init(void *tall_ctx, const char *sock_path);</span><br><span style="color: hsl(120, 100%, 40%);">+struct l1ctl_link *l1ctl_link_init(struct osmo_fsm_inst *parent_fi,</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *sock_path);</span><br><span> void l1ctl_link_shutdown(struct l1ctl_link *l1l);</span><br><span> </span><br><span> int l1ctl_link_send(struct l1ctl_link *l1l, struct msgb *msg);</span><br><span>diff --git a/src/host/trxcon/trx_if.c b/src/host/trxcon/trx_if.c</span><br><span>index f2db145..7eca984 100644</span><br><span>--- a/src/host/trxcon/trx_if.c</span><br><span>+++ b/src/host/trxcon/trx_if.c</span><br><span>@@ -173,7 +173,8 @@</span><br><span> if (++tcm->retry_cnt > 3) {</span><br><span> LOGP(DTRX, LOGL_NOTICE, "Transceiver offline\n");</span><br><span> osmo_fsm_inst_state_chg(trx->fsm, TRX_STATE_OFFLINE, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- osmo_fsm_inst_dispatch(trxcon_fsm, TRXCON_E_TRX_DISCONNECT, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_fsm_inst_dispatch(trx->fsm->proc.parent,</span><br><span style="color: hsl(120, 100%, 40%);">+ TRXCON_E_TRX_DISCONNECT, NULL);</span><br><span> return;</span><br><span> }</span><br><span> </span><br><span>@@ -514,7 +515,8 @@</span><br><span> </span><br><span> rsp_error:</span><br><span> /* Notify higher layers about the problem */</span><br><span style="color: hsl(0, 100%, 40%);">- osmo_fsm_inst_dispatch(trxcon_fsm, TRXCON_E_TRX_CTRL_ERROR, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_fsm_inst_dispatch(trx->fsm->proc.parent,</span><br><span style="color: hsl(120, 100%, 40%);">+ TRXCON_E_TRX_CTRL_ERROR, NULL);</span><br><span> return -EIO;</span><br><span> }</span><br><span> </span><br><span>@@ -627,7 +629,7 @@</span><br><span> }</span><br><span> </span><br><span> /* Init TRX interface (TRXC, TRXD sockets and FSM) */</span><br><span style="color: hsl(0, 100%, 40%);">-struct trx_instance *trx_if_open(void *tall_ctx,</span><br><span style="color: hsl(120, 100%, 40%);">+struct trx_instance *trx_if_open(struct osmo_fsm_inst *parent_fi,</span><br><span> const char *local_host, const char *remote_host, uint16_t port)</span><br><span> {</span><br><span> struct trx_instance *trx;</span><br><span>@@ -636,15 +638,15 @@</span><br><span> LOGP(DTRX, LOGL_NOTICE, "Init transceiver interface\n");</span><br><span> </span><br><span> /* Try to allocate memory */</span><br><span style="color: hsl(0, 100%, 40%);">- trx = talloc_zero(tall_ctx, struct trx_instance);</span><br><span style="color: hsl(120, 100%, 40%);">+ trx = talloc_zero(parent_fi, struct trx_instance);</span><br><span> if (!trx) {</span><br><span> LOGP(DTRX, LOGL_ERROR, "Failed to allocate memory\n");</span><br><span> return NULL;</span><br><span> }</span><br><span> </span><br><span> /* Allocate a new dedicated state machine */</span><br><span style="color: hsl(0, 100%, 40%);">- trx->fsm = osmo_fsm_inst_alloc(&trx_fsm, trx,</span><br><span style="color: hsl(0, 100%, 40%);">- NULL, LOGL_DEBUG, "trx_interface");</span><br><span style="color: hsl(120, 100%, 40%);">+ trx->fsm = osmo_fsm_inst_alloc_child(&trx_fsm,</span><br><span style="color: hsl(120, 100%, 40%);">+ parent_fi, TRXCON_E_TRX_DISCONNECT);</span><br><span> if (trx->fsm == NULL) {</span><br><span> LOGP(DTRX, LOGL_ERROR, "Failed to allocate an instance "</span><br><span> "of FSM '%s'\n", trx_fsm.name);</span><br><span>diff --git a/src/host/trxcon/trx_if.h b/src/host/trxcon/trx_if.h</span><br><span>index 0b3f36f..8180669 100644</span><br><span>--- a/src/host/trxcon/trx_if.h</span><br><span>+++ b/src/host/trxcon/trx_if.h</span><br><span>@@ -52,7 +52,7 @@</span><br><span> int cmd_len;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct trx_instance *trx_if_open(void *tall_ctx,</span><br><span style="color: hsl(120, 100%, 40%);">+struct trx_instance *trx_if_open(struct osmo_fsm_inst *parent_fi,</span><br><span> const char *local_host, const char *remote_host, uint16_t port);</span><br><span> void trx_if_flush_ctrl(struct trx_instance *trx);</span><br><span> void trx_if_close(struct trx_instance *trx);</span><br><span>diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c</span><br><span>index dda0a00..ab753d0 100644</span><br><span>--- a/src/host/trxcon/trxcon.c</span><br><span>+++ b/src/host/trxcon/trxcon.c</span><br><span>@@ -214,12 +214,12 @@</span><br><span> goto exit;</span><br><span> </span><br><span> /* Init L1CTL server */</span><br><span style="color: hsl(0, 100%, 40%);">- app_data.l1l = l1ctl_link_init(tall_trxcon_ctx, app_data.bind_socket);</span><br><span style="color: hsl(120, 100%, 40%);">+ app_data.l1l = l1ctl_link_init(trxcon_fsm, app_data.bind_socket);</span><br><span> if (app_data.l1l == NULL)</span><br><span> goto exit;</span><br><span> </span><br><span> /* Init transceiver interface */</span><br><span style="color: hsl(0, 100%, 40%);">- app_data.trx = trx_if_open(tall_trxcon_ctx,</span><br><span style="color: hsl(120, 100%, 40%);">+ app_data.trx = trx_if_open(trxcon_fsm,</span><br><span> app_data.trx_bind_ip, app_data.trx_remote_ip,</span><br><span> app_data.trx_base_port);</span><br><span> if (!app_data.trx)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12589">change 12589</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/12589"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6262726f2b6e23abe543d6d67edfd634eece1b71 </div>
<div style="display:none"> Gerrit-Change-Number: 12589 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>