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