<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12582">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trxcon/trx_if: refactor trx_if_open()<br><br>Change-Id: I39b24afee2f09d6a6c500cfc26ac45f206589c5c<br>---<br>M src/host/trxcon/trx_if.c<br>M src/host/trxcon/trx_if.h<br>M src/host/trxcon/trxcon.c<br>3 files changed, 23 insertions(+), 27 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/82/12582/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/trxcon/trx_if.c b/src/host/trxcon/trx_if.c</span><br><span>index 982fb40..108f58b 100644</span><br><span>--- a/src/host/trxcon/trx_if.c</span><br><span>+++ b/src/host/trxcon/trx_if.c</span><br><span>@@ -626,52 +626,47 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * Open/close OsmoTRX connection</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int trx_if_open(struct trx_instance **trx, const char *local_host,</span><br><span style="color: hsl(0, 100%, 40%);">-               const char *remote_host, uint16_t port)</span><br><span style="color: hsl(120, 100%, 40%);">+/* Init TRX interface (TRXC, TRXD sockets and FSM) */</span><br><span style="color: hsl(120, 100%, 40%);">+struct trx_instance *trx_if_open(void *tall_ctx,</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *local_host, const char *remote_host, uint16_t port)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct trx_instance *trx_new;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct trx_instance *trx;</span><br><span>    int rc;</span><br><span> </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_new = talloc_zero(tall_trx_ctx, struct trx_instance);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!trx_new) {</span><br><span style="color: hsl(120, 100%, 40%);">+       trx = talloc_zero(tall_ctx, struct trx_instance);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!trx) {</span><br><span>          LOGP(DTRX, LOGL_ERROR, "Failed to allocate memory\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                return -ENOMEM;</span><br><span style="color: hsl(120, 100%, 40%);">+               return NULL;</span><br><span>         }</span><br><span> </span><br><span>        /* Initialize CTRL queue */</span><br><span style="color: hsl(0, 100%, 40%);">-     INIT_LLIST_HEAD(&trx_new->trx_ctrl_list);</span><br><span style="color: hsl(120, 100%, 40%);">+      INIT_LLIST_HEAD(&trx->trx_ctrl_list);</span><br><span> </span><br><span>     /* Open sockets */</span><br><span style="color: hsl(0, 100%, 40%);">-      rc = trx_udp_open(trx_new, &trx_new->trx_ofd_ctrl, local_host,</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = trx_udp_open(trx, &trx->trx_ofd_ctrl, local_host,</span><br><span>                port + 101, remote_host, port + 1, trx_ctrl_read_cb);</span><br><span>        if (rc < 0)</span><br><span style="color: hsl(0, 100%, 40%);">-          goto error;</span><br><span style="color: hsl(120, 100%, 40%);">+           goto udp_error;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     rc = trx_udp_open(trx_new, &trx_new->trx_ofd_data, local_host,</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = trx_udp_open(trx, &trx->trx_ofd_data, local_host,</span><br><span>                port + 102, remote_host, port + 2, trx_data_rx_cb);</span><br><span>  if (rc < 0)</span><br><span style="color: hsl(0, 100%, 40%);">-          goto error;</span><br><span style="color: hsl(120, 100%, 40%);">+           goto udp_error;</span><br><span> </span><br><span>  /* Allocate a new dedicated state machine */</span><br><span>         osmo_fsm_register(&trx_fsm);</span><br><span style="color: hsl(0, 100%, 40%);">-        trx_new->fsm = osmo_fsm_inst_alloc(&trx_fsm, trx_new,</span><br><span style="color: hsl(120, 100%, 40%);">+  trx->fsm = osmo_fsm_inst_alloc(&trx_fsm, trx,</span><br><span>                 NULL, LOGL_DEBUG, "trx_interface");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       *trx = trx_new;</span><br><span style="color: hsl(120, 100%, 40%);">+       return trx;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-error:</span><br><span style="color: hsl(120, 100%, 40%);">+udp_error:</span><br><span>  LOGP(DTRX, LOGL_ERROR, "Couldn't establish UDP connection\n");</span><br><span style="color: hsl(0, 100%, 40%);">-    talloc_free(trx_new);</span><br><span style="color: hsl(0, 100%, 40%);">-   return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    talloc_free(trx);</span><br><span style="color: hsl(120, 100%, 40%);">+     return NULL;</span><br><span> }</span><br><span> </span><br><span> /* Flush pending control messages */</span><br><span>diff --git a/src/host/trxcon/trx_if.h b/src/host/trxcon/trx_if.h</span><br><span>index d551252..0b3f36f 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,8 +52,8 @@</span><br><span>       int cmd_len;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int trx_if_open(struct trx_instance **trx, const char *local_host,</span><br><span style="color: hsl(0, 100%, 40%);">-                const char *remote_host, uint16_t port);</span><br><span style="color: hsl(120, 100%, 40%);">+struct trx_instance *trx_if_open(void *tall_ctx,</span><br><span style="color: hsl(120, 100%, 40%);">+    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> </span><br><span>diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c</span><br><span>index 874f893..501d0c7 100644</span><br><span>--- a/src/host/trxcon/trxcon.c</span><br><span>+++ b/src/host/trxcon/trxcon.c</span><br><span>@@ -284,9 +284,10 @@</span><br><span>                goto exit;</span><br><span> </span><br><span>       /* Init transceiver interface */</span><br><span style="color: hsl(0, 100%, 40%);">-        rc = trx_if_open(&app_data.trx,</span><br><span style="color: hsl(0, 100%, 40%);">-             app_data.trx_bind_ip, app_data.trx_remote_ip, app_data.trx_base_port);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (rc)</span><br><span style="color: hsl(120, 100%, 40%);">+       app_data.trx = trx_if_open(tall_trx_ctx,</span><br><span style="color: hsl(120, 100%, 40%);">+              app_data.trx_bind_ip, app_data.trx_remote_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+         app_data.trx_base_port);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!app_data.trx)</span><br><span>           goto exit;</span><br><span> </span><br><span>       /* Bind L1CTL with TRX and vice versa */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12582">change 12582</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/12582"/><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: I39b24afee2f09d6a6c500cfc26ac45f206589c5c </div>
<div style="display:none"> Gerrit-Change-Number: 12582 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>