<p>pespin <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/15702">View Change</a></p><div style="white-space:pre-wrap">Approvals:
laforge: Looks good to me, but someone else must approve
osmith: Looks good to me, approved
Jenkins Builder: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts-trx: Log TRXC and TRXD socket recv()/send() failures<br><br>Related: OS#4215<br>Change-Id: Ic3e41d82b43459495d45873d612a3bd349ac174a<br>---<br>M src/osmo-bts-trx/trx_if.c<br>1 file changed, 23 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bts-trx/trx_if.c b/src/osmo-bts-trx/trx_if.c</span><br><span>index 9933109..1b8ea45 100644</span><br><span>--- a/src/osmo-bts-trx/trx_if.c</span><br><span>+++ b/src/osmo-bts-trx/trx_if.c</span><br><span>@@ -94,14 +94,18 @@</span><br><span> struct phy_link *plink = ofd->data;</span><br><span> struct phy_instance *pinst = phy_instance_by_num(plink, 0);</span><br><span> char buf[1500];</span><br><span style="color: hsl(0, 100%, 40%);">- int len;</span><br><span style="color: hsl(120, 100%, 40%);">+ ssize_t len;</span><br><span> uint32_t fn;</span><br><span> </span><br><span> OSMO_ASSERT(pinst);</span><br><span> </span><br><span> len = recv(ofd->fd, buf, sizeof(buf) - 1, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- if (len <= 0)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (len <= 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+ strerror_r(errno, (char *)buf, sizeof(buf));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGPPHI(pinst, DTRX, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+ "recv() failed on TRXD with rc=%zd (%s)\n", len, buf);</span><br><span> return len;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> buf[len] = '\0';</span><br><span> </span><br><span> if (!!strncmp(buf, "IND CLOCK ", 10)) {</span><br><span>@@ -144,6 +148,7 @@</span><br><span> struct trx_ctrl_msg *tcm;</span><br><span> char buf[1500];</span><br><span> int len;</span><br><span style="color: hsl(120, 100%, 40%);">+ ssize_t snd_len;</span><br><span> </span><br><span> /* get first command */</span><br><span> if (llist_empty(&l1h->trx_ctrl_list))</span><br><span>@@ -155,7 +160,12 @@</span><br><span> </span><br><span> LOGPPHI(l1h->phy_inst, DTRX, LOGL_DEBUG, "Sending control '%s'\n", buf);</span><br><span> /* send command */</span><br><span style="color: hsl(0, 100%, 40%);">- send(l1h->trx_ofd_ctrl.fd, buf, len+1, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ snd_len = send(l1h->trx_ofd_ctrl.fd, buf, len+1, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (snd_len <= 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+ strerror_r(errno, (char *)buf, sizeof(buf));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+ "send() failed on TRXC with rc=%zd (%s)\n", snd_len, buf);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> /* start timer */</span><br><span> osmo_timer_schedule(&l1h->trx_ctrl_timer, 2, 0);</span><br><span>@@ -979,8 +989,9 @@</span><br><span> </span><br><span> buf_len = recv(ofd->fd, buf, sizeof(buf), 0);</span><br><span> if (buf_len <= 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+ strerror_r(errno, (char *)buf, sizeof(buf));</span><br><span> LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">- "recv() failed on TRXD with rc=%zd\n", buf_len);</span><br><span style="color: hsl(120, 100%, 40%);">+ "recv() failed on TRXD with rc=%zd (%s)\n", buf_len, buf);</span><br><span> return buf_len;</span><br><span> }</span><br><span> </span><br><span>@@ -1058,6 +1069,7 @@</span><br><span> int trx_if_send_burst(struct trx_l1h *l1h, uint8_t tn, uint32_t fn, uint8_t pwr,</span><br><span> const ubit_t *bits, uint16_t nbits)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+ ssize_t snd_len;</span><br><span> uint8_t hdr_ver = l1h->config.trxd_hdr_ver_use;</span><br><span> uint8_t buf[TRX_DATA_MSG_MAX_LEN];</span><br><span> </span><br><span>@@ -1094,7 +1106,13 @@</span><br><span> </span><br><span> /* we must be sure that TRX is on */</span><br><span> if (trx_if_powered(l1h)) {</span><br><span style="color: hsl(0, 100%, 40%);">- send(l1h->trx_ofd_data.fd, buf, nbits + 6, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ snd_len = send(l1h->trx_ofd_data.fd, buf, nbits + 6, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (snd_len <= 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+ strerror_r(errno, (char *)buf, sizeof(buf));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+ "send() failed on TRXD with rc=%zd (%s)\n", snd_len, buf);</span><br><span style="color: hsl(120, 100%, 40%);">+ return -2;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> } else</span><br><span> LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR, "Ignoring TX data, transceiver powered off.\n");</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/15702">change 15702</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-bts/+/15702"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ic3e41d82b43459495d45873d612a3bd349ac174a </div>
<div style="display:none"> Gerrit-Change-Number: 15702 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>