<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>