<p>Pau Espin Pedrol <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13830">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">uhd: Avoid reallocation of buffers every read<br><br>Buffer size is based on num of chans and rxBuffer size is based on num<br>of chans and rx_spp, and both are available and set during open(), so no<br>need to waste time allocating and freeing them everytime we read from<br>the device.<br><br>Change-Id: I8c881c9c303c80f323825d85a924d74b76d2ce47<br>---<br>M Transceiver52M/device/uhd/UHDDevice.cpp<br>M Transceiver52M/device/uhd/UHDDevice.h<br>2 files changed, 10 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>index 34ffd57..6214666 100644</span><br><span>--- a/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>+++ b/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>@@ -516,6 +516,11 @@</span><br><span>  for (size_t i = 0; i < rx_buffers.size(); i++)</span><br><span>            rx_buffers[i] = new smpl_buf(buf_len, rx_rate);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   // Create vector buffer</span><br><span style="color: hsl(120, 100%, 40%);">+       pkt_bufs = std::vector<std::vector<short> >(chans, std::vector<short>(2 * rx_spp));</span><br><span style="color: hsl(120, 100%, 40%);">+ for (size_t i = 0; i < pkt_bufs.size(); i++)</span><br><span style="color: hsl(120, 100%, 40%);">+               pkt_ptrs.push_back(&pkt_bufs[i].front());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      // Initialize and shadow gain values</span><br><span>         init_gains();</span><br><span> </span><br><span>@@ -549,13 +554,6 @@</span><br><span>     size_t num_smpls;</span><br><span>    float timeout = UHD_RESTART_TIMEOUT;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        std::vector<std::vector<short> ></span><br><span style="color: hsl(0, 100%, 40%);">-            pkt_bufs(chans, std::vector<short>(2 * rx_spp));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  std::vector<short *> pkt_ptrs;</span><br><span style="color: hsl(0, 100%, 40%);">-    for (size_t i = 0; i < pkt_bufs.size(); i++)</span><br><span style="color: hsl(0, 100%, 40%);">-         pkt_ptrs.push_back(&pkt_bufs[i].front());</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        ts_initial = 0;</span><br><span>      while (!ts_initial || (num_pkts-- > 0)) {</span><br><span>                 num_smpls = rx_stream->recv(pkt_ptrs, rx_spp, md,</span><br><span>@@ -720,14 +718,6 @@</span><br><span>          return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   // Create vector buffer</span><br><span style="color: hsl(0, 100%, 40%);">- std::vector<std::vector<short> ></span><br><span style="color: hsl(0, 100%, 40%);">-            pkt_bufs(chans, std::vector<short>(2 * rx_spp));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  std::vector<short *> pkt_ptrs;</span><br><span style="color: hsl(0, 100%, 40%);">-    for (size_t i = 0; i < pkt_bufs.size(); i++)</span><br><span style="color: hsl(0, 100%, 40%);">-         pkt_ptrs.push_back(&pkt_bufs[i].front());</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        // Receive samples from the usrp until we have enough</span><br><span>        while (rx_buffers[0]->avail_smpls(timestamp) < len) {</span><br><span>          thread_enable_cancel(false);</span><br><span>diff --git a/Transceiver52M/device/uhd/UHDDevice.h b/Transceiver52M/device/uhd/UHDDevice.h</span><br><span>index f5d0b33..05a5914 100644</span><br><span>--- a/Transceiver52M/device/uhd/UHDDevice.h</span><br><span>+++ b/Transceiver52M/device/uhd/UHDDevice.h</span><br><span>@@ -152,6 +152,11 @@</span><br><span> </span><br><span>     TIMESTAMP ts_initial, ts_offset;</span><br><span>     std::vector<smpl_buf *> rx_buffers;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Sample buffers used to receive samples from UHD: */</span><br><span style="color: hsl(120, 100%, 40%);">+        std::vector<std::vector<short> > pkt_bufs;</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Used to call UHD API: Buffer pointer of each elem in pkt_ptrs will</span><br><span style="color: hsl(120, 100%, 40%);">+    point to corresponding buffer of vector pkt_bufs. */</span><br><span style="color: hsl(120, 100%, 40%);">+       std::vector<short *> pkt_ptrs;</span><br><span> </span><br><span>     void init_gains();</span><br><span>   void set_channels(bool swap);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13830">change 13830</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/13830"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-trx </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I8c881c9c303c80f323825d85a924d74b76d2ce47 </div>
<div style="display:none"> Gerrit-Change-Number: 13830 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: tnt <tnt@246tNt.com> </div>