<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-hnodeb/+/26016">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">hnb: Move wqueue to .iuh, add wrapper to use it<br><br>Change-Id: I38498858fc315ad3d57644d7b905f5393f43e884<br>---<br>M include/osmocom/hnodeb/hnodeb.h<br>M src/osmo-hnodeb/hnb.c<br>M src/osmo-hnodeb/hnbap.c<br>M src/osmo-hnodeb/rua.c<br>M src/osmo-hnodeb/vty.c<br>5 files changed, 27 insertions(+), 16 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-hnodeb refs/changes/16/26016/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/hnodeb/hnodeb.h b/include/osmocom/hnodeb/hnodeb.h</span><br><span>index 33375f6..d036bb2 100644</span><br><span>--- a/include/osmocom/hnodeb/hnodeb.h</span><br><span>+++ b/include/osmocom/hnodeb/hnodeb.h</span><br><span>@@ -75,9 +75,9 @@</span><br><span>               uint16_t local_port;</span><br><span>                 char *remote_addr;</span><br><span>           uint16_t remote_port;</span><br><span style="color: hsl(120, 100%, 40%);">+         /*! SCTP socket + write queue for Iuh to this specific HNB */</span><br><span style="color: hsl(120, 100%, 40%);">+         struct osmo_wqueue wqueue;</span><br><span>   } iuh;</span><br><span style="color: hsl(0, 100%, 40%);">-  /*! SCTP socket + write queue for Iuh to this specific HNB */</span><br><span style="color: hsl(0, 100%, 40%);">-   struct osmo_wqueue wqueue;</span><br><span> </span><br><span>       uint16_t rnc_id;</span><br><span> </span><br><span>@@ -90,5 +90,7 @@</span><br><span> struct hnb *hnb_alloc(void *tall_ctx);</span><br><span> int hnb_connect(struct hnb *hnb);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int hnb_iuh_send(struct hnb *hnb, struct msgb *msg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> extern void *tall_hnb_ctx;</span><br><span> extern struct hnb *g_hnb;</span><br><span>diff --git a/src/osmo-hnodeb/hnb.c b/src/osmo-hnodeb/hnb.c</span><br><span>index 85ca937..145c021 100644</span><br><span>--- a/src/osmo-hnodeb/hnb.c</span><br><span>+++ b/src/osmo-hnodeb/hnb.c</span><br><span>@@ -49,7 +49,7 @@</span><br><span>  return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int hnb_read_cb(struct osmo_fd *fd)</span><br><span style="color: hsl(120, 100%, 40%);">+static int hnb_iuh_read_cb(struct osmo_fd *fd)</span><br><span> {</span><br><span>   struct hnb *hnb = fd->data;</span><br><span>       struct sctp_sndrcvinfo sinfo;</span><br><span>@@ -114,7 +114,7 @@</span><br><span>  return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int hnb_write_cb(struct osmo_fd *fd, struct msgb *msg)</span><br><span style="color: hsl(120, 100%, 40%);">+static int hnb_iuh_write_cb(struct osmo_fd *fd, struct msgb *msg)</span><br><span> {</span><br><span>     /* struct hnb *ctx = fd->data; */</span><br><span>         struct sctp_sndrcvinfo sinfo = {</span><br><span>@@ -142,10 +142,10 @@</span><br><span>     hnb->iuh.remote_addr = talloc_strdup(hnb, "127.0.0.1");</span><br><span>         hnb->iuh.remote_port = IUH_DEFAULT_SCTP_PORT;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    osmo_wqueue_init(&hnb->wqueue, 16);</span><br><span style="color: hsl(0, 100%, 40%);">-      hnb->wqueue.bfd.data = hnb;</span><br><span style="color: hsl(0, 100%, 40%);">-  hnb->wqueue.read_cb = hnb_read_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-   hnb->wqueue.write_cb = hnb_write_cb;</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo_wqueue_init(&hnb->iuh.wqueue, 16);</span><br><span style="color: hsl(120, 100%, 40%);">+        hnb->iuh.wqueue.bfd.data = hnb;</span><br><span style="color: hsl(120, 100%, 40%);">+    hnb->iuh.wqueue.read_cb = hnb_iuh_read_cb;</span><br><span style="color: hsl(120, 100%, 40%);">+ hnb->iuh.wqueue.write_cb = hnb_iuh_write_cb;</span><br><span> </span><br><span>  return hnb;</span><br><span> }</span><br><span>@@ -157,12 +157,21 @@</span><br><span>     LOGP(DMAIN, LOGL_INFO, "Iuh Connect: %s[:%u] => %s[:%u]\n",</span><br><span>          hnb->iuh.local_addr, hnb->iuh.local_port, hnb->iuh.remote_addr, hnb->iuh.remote_port);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     rc = osmo_sock_init2_ofd(&hnb->wqueue.bfd, AF_INET, SOCK_STREAM, IPPROTO_SCTP,</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = osmo_sock_init2_ofd(&hnb->iuh.wqueue.bfd, AF_INET, SOCK_STREAM, IPPROTO_SCTP,</span><br><span>                       hnb->iuh.local_addr, hnb->iuh.local_port,</span><br><span>                      hnb->iuh.remote_addr, hnb->iuh.remote_port,</span><br><span>                            OSMO_SOCK_F_BIND |OSMO_SOCK_F_CONNECT);</span><br><span>   if (rc < 0)</span><br><span>               return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-      sctp_sock_init(hnb->wqueue.bfd.fd);</span><br><span style="color: hsl(120, 100%, 40%);">+        sctp_sock_init(hnb->iuh.wqueue.bfd.fd);</span><br><span>   return 0;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int hnb_iuh_send(struct hnb *hnb, struct msgb *msg)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+       rc = osmo_wqueue_enqueue(&hnb->iuh.wqueue, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+       return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/osmo-hnodeb/hnbap.c b/src/osmo-hnodeb/hnbap.c</span><br><span>index 7e54004..7cd9cd6 100644</span><br><span>--- a/src/osmo-hnodeb/hnbap.c</span><br><span>+++ b/src/osmo-hnodeb/hnbap.c</span><br><span>@@ -145,7 +145,7 @@</span><br><span> </span><br><span>     msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        return osmo_wqueue_enqueue(&hnb->wqueue, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+ return hnb_iuh_send(hnb, msg);</span><br><span> }</span><br><span> </span><br><span> void hnb_send_register_req(struct hnb *hnb)</span><br><span>@@ -194,7 +194,7 @@</span><br><span> </span><br><span>     msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_wqueue_enqueue(&hnb->wqueue, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+        hnb_iuh_send(hnb, msg);</span><br><span> }</span><br><span> </span><br><span> void hnb_send_deregister_req(struct hnb *hnb)</span><br><span>@@ -222,5 +222,5 @@</span><br><span> </span><br><span>  msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_wqueue_enqueue(&hnb->wqueue, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+        hnb_iuh_send(hnb, msg);</span><br><span> }</span><br><span>diff --git a/src/osmo-hnodeb/rua.c b/src/osmo-hnodeb/rua.c</span><br><span>index 229df30..d7352b6 100644</span><br><span>--- a/src/osmo-hnodeb/rua.c</span><br><span>+++ b/src/osmo-hnodeb/rua.c</span><br><span>@@ -41,7 +41,7 @@</span><br><span>    }</span><br><span> </span><br><span>        rua = rua_new_dt(chan->is_ps, chan->conn_id, txm);</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_wqueue_enqueue(&hnb->wqueue, rua);</span><br><span style="color: hsl(120, 100%, 40%);">+        hnb_iuh_send(hnb, rua);</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/osmo-hnodeb/vty.c b/src/osmo-hnodeb/vty.c</span><br><span>index ab3b3fc..5dd849c 100644</span><br><span>--- a/src/osmo-hnodeb/vty.c</span><br><span>+++ b/src/osmo-hnodeb/vty.c</span><br><span>@@ -211,7 +211,7 @@</span><br><span>    msg = ranap_new_msg_reset(is_ps, &cause);</span><br><span>        rua = rua_new_udt(msg);</span><br><span>      //msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-       osmo_wqueue_enqueue(&g_hnb->wqueue, rua);</span><br><span style="color: hsl(120, 100%, 40%);">+      hnb_iuh_send(g_hnb, rua);</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span>@@ -238,7 +238,7 @@</span><br><span>       msg = gen_initue_lu(chan->is_ps, chan->conn_id, chan->imsi);</span><br><span>        rua = rua_new_conn(chan->is_ps, chan->conn_id, msg);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  osmo_wqueue_enqueue(&g_hnb->wqueue, rua);</span><br><span style="color: hsl(120, 100%, 40%);">+      hnb_iuh_send(g_hnb, rua);</span><br><span> </span><br><span>        vty->index = chan;</span><br><span>        vty->node = CHAN_NODE;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-hnodeb/+/26016">change 26016</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/c/osmo-hnodeb/+/26016"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-hnodeb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I38498858fc315ad3d57644d7b905f5393f43e884 </div>
<div style="display:none"> Gerrit-Change-Number: 26016 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>