<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17922">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">enb: refactored rf_args handling for ZMQ-based radio<br><br>this patch moves the rf_dev_args creation for both eNB types<br>into the eNB base class, since they are identical.<br><br>the patch also fixes the arguments for all CA and MIMO configurations<br><br>Change-Id: I8ca3ed83e65dc07927385267e5970bc4f5b120d5<br>---<br>M src/osmo_gsm_tester/obj/enb.py<br>M src/osmo_gsm_tester/obj/enb_amarisoft.py<br>M src/osmo_gsm_tester/obj/enb_srs.py<br>3 files changed, 57 insertions(+), 54 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py</span><br><span>index e0f7be0..3c1f771 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb.py</span><br><span>@@ -99,6 +99,59 @@</span><br><span>     def num_prb(self):</span><br><span>         return self._num_prb</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    #reference: srsLTE.git srslte_symbol_sz()</span><br><span style="color: hsl(120, 100%, 40%);">+    def num_prb2symbol_sz(self, num_prb):</span><br><span style="color: hsl(120, 100%, 40%);">+        if num_prb <= 6:</span><br><span style="color: hsl(120, 100%, 40%);">+            return 128</span><br><span style="color: hsl(120, 100%, 40%);">+        if num_prb <= 15:</span><br><span style="color: hsl(120, 100%, 40%);">+            return 256</span><br><span style="color: hsl(120, 100%, 40%);">+        if num_prb <= 25:</span><br><span style="color: hsl(120, 100%, 40%);">+            return 384</span><br><span style="color: hsl(120, 100%, 40%);">+        if num_prb <= 50:</span><br><span style="color: hsl(120, 100%, 40%);">+            return 768</span><br><span style="color: hsl(120, 100%, 40%);">+        if num_prb <= 75:</span><br><span style="color: hsl(120, 100%, 40%);">+            return 1024</span><br><span style="color: hsl(120, 100%, 40%);">+        if num_prb <= 110:</span><br><span style="color: hsl(120, 100%, 40%);">+            return 1536</span><br><span style="color: hsl(120, 100%, 40%);">+        raise log.Error('invalid num_prb %r', num_prb)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def num_prb2base_srate(self, num_prb):</span><br><span style="color: hsl(120, 100%, 40%);">+        return self.num_prb2symbol_sz(num_prb) * 15 * 1000</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def get_zmq_rf_dev_args(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        base_srate = self.num_prb2base_srate(self.num_prb())</span><br><span style="color: hsl(120, 100%, 40%);">+        # Define all 8 possible RF ports (2x CA with 2x2 MIMO)</span><br><span style="color: hsl(120, 100%, 40%);">+        rf_dev_args = 'fail_on_disconnect=true' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',tx_port0=tcp://' + self.addr() + ':2000' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',tx_port1=tcp://' + self.addr() + ':2002' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',tx_port2=tcp://' + self.addr() + ':2004' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',tx_port3=tcp://' + self.addr() + ':2006' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',rx_port0=tcp://' + self.ue.addr() + ':2001' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',rx_port1=tcp://' + self.ue.addr() + ':2003' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',rx_port2=tcp://' + self.ue.addr() + ':2005' \</span><br><span style="color: hsl(120, 100%, 40%);">+                    + ',rx_port3=tcp://' + self.ue.addr() + ':2007'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        if self._num_cells == 1:</span><br><span style="color: hsl(120, 100%, 40%);">+            # Single carrier</span><br><span style="color: hsl(120, 100%, 40%);">+            if self.num_ports() == 1:</span><br><span style="color: hsl(120, 100%, 40%);">+                # SISO</span><br><span style="color: hsl(120, 100%, 40%);">+                rf_dev_args += ',tx_freq0=2630e6,rx_freq0=2510e6'</span><br><span style="color: hsl(120, 100%, 40%);">+            elif self.num_ports() == 2:</span><br><span style="color: hsl(120, 100%, 40%);">+                # MIMO</span><br><span style="color: hsl(120, 100%, 40%);">+                rf_dev_args += ',tx_freq0=2630e6,tx_freq1=2630e6,rx_freq0=2510e6,rx_freq1=2510e6'</span><br><span style="color: hsl(120, 100%, 40%);">+        elif self._num_cells == 2:</span><br><span style="color: hsl(120, 100%, 40%);">+            # 2x class</span><br><span style="color: hsl(120, 100%, 40%);">+            if self.num_ports() == 1:</span><br><span style="color: hsl(120, 100%, 40%);">+                # SISO</span><br><span style="color: hsl(120, 100%, 40%);">+                rf_dev_args += ',tx_freq0=2630e6,tx_freq1=2650e6,rx_freq0=2510e6,rx_freq1=2530e6'</span><br><span style="color: hsl(120, 100%, 40%);">+            elif self.num_ports() == 2:</span><br><span style="color: hsl(120, 100%, 40%);">+                # MIMO</span><br><span style="color: hsl(120, 100%, 40%);">+                rf_dev_args += ',tx_freq0=2630e6,tx_freq1=2630e6,tx_freq2=2650e6,tx_freq3=2650e6,rx_freq0=2510e6,rx_freq1=2510e6,rx_freq2=2530e6,rx_freq3=2530e6'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        rf_dev_args += ',id=enb,base_srate=' + str(base_srate)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        return rf_dev_args</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> ###################</span><br><span> # PUBLIC (test API included)</span><br><span> ###################</span><br><span>diff --git a/src/osmo_gsm_tester/obj/enb_amarisoft.py b/src/osmo_gsm_tester/obj/enb_amarisoft.py</span><br><span>index bb48880..ec7063c 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb_amarisoft.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb_amarisoft.py</span><br><span>@@ -27,25 +27,6 @@</span><br><span> def rf_type_valid(rf_type_str):</span><br><span>     return rf_type_str in ('uhd', 'zmq')</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#reference: srsLTE.git srslte_symbol_sz()</span><br><span style="color: hsl(0, 100%, 40%);">-def num_prb2symbol_sz(num_prb):</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 6:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 128</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 15:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 256</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 25:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 384</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 50:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 768</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 75:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 1024</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 110:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 1536</span><br><span style="color: hsl(0, 100%, 40%);">-    raise log.Error('invalid num_prb %r', num_prb)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def num_prb2base_srate(num_prb):</span><br><span style="color: hsl(0, 100%, 40%);">-    return num_prb2symbol_sz(num_prb) * 15 * 1000</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> class AmarisoftENB(enb.eNodeB):</span><br><span> </span><br><span>     REMOTE_DIR = '/osmo-gsm-tester-amarisoftenb'</span><br><span>@@ -174,15 +155,10 @@</span><br><span> </span><br><span>         # We need to set some specific variables programatically here to match IP addresses:</span><br><span>         if self._conf.get('rf_dev_type') == 'zmq':</span><br><span style="color: hsl(0, 100%, 40%);">-            base_srate = num_prb2base_srate(self.num_prb())</span><br><span style="color: hsl(0, 100%, 40%);">-            rf_dev_args = 'fail_on_disconnect=true' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',tx_port0=tcp://' + self.addr() + ':2000' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',tx_port1=tcp://' + self.addr() + ':2002' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',rx_port0=tcp://' + self.ue.addr() + ':2001' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',rx_port1=tcp://' + self.ue.addr() + ':2003' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',id=enb,base_srate=' + str(base_srate)</span><br><span style="color: hsl(120, 100%, 40%);">+            base_srate = self.num_prb2base_srate(self.num_prb())</span><br><span style="color: hsl(120, 100%, 40%);">+            rf_dev_args = self.get_zmq_rf_dev_args()</span><br><span>             config.overlay(values, dict(enb=dict(sample_rate = base_srate / (1000*1000),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                 rf_dev_args=rf_dev_args)))</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 rf_dev_args = rf_dev_args)))</span><br><span> </span><br><span>         # Set UHD frame size as a function of the cell bandwidth on B2XX</span><br><span>         if self._conf.get('rf_dev_type') == 'uhd' and values['enb'].get('rf_dev_args', None) is not None:</span><br><span>diff --git a/src/osmo_gsm_tester/obj/enb_srs.py b/src/osmo_gsm_tester/obj/enb_srs.py</span><br><span>index e657b04..243ffaa 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb_srs.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb_srs.py</span><br><span>@@ -27,25 +27,6 @@</span><br><span> def rf_type_valid(rf_type_str):</span><br><span>     return rf_type_str in ('zmq', 'uhd', 'soapy', 'bladerf')</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#reference: srsLTE.git srslte_symbol_sz()</span><br><span style="color: hsl(0, 100%, 40%);">-def num_prb2symbol_sz(num_prb):</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 6:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 128</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 15:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 256</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 25:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 384</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 50:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 768</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 75:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 1024</span><br><span style="color: hsl(0, 100%, 40%);">-    if num_prb <= 110:</span><br><span style="color: hsl(0, 100%, 40%);">-        return 1536</span><br><span style="color: hsl(0, 100%, 40%);">-    raise log.Error('invalid num_prb %r', num_prb)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def num_prb2base_srate(num_prb):</span><br><span style="color: hsl(0, 100%, 40%);">-    return num_prb2symbol_sz(num_prb) * 15 * 1000</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> class srsENB(enb.eNodeB):</span><br><span> </span><br><span>     REMOTE_DIR = '/osmo-gsm-tester-srsenb'</span><br><span>@@ -194,14 +175,7 @@</span><br><span> </span><br><span>         # We need to set some specific variables programatically here to match IP addresses:</span><br><span>         if self._conf.get('rf_dev_type') == 'zmq':</span><br><span style="color: hsl(0, 100%, 40%);">-            base_srate = num_prb2base_srate(self.num_prb())</span><br><span style="color: hsl(0, 100%, 40%);">-            rf_dev_args = 'fail_on_disconnect=true' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',tx_port=tcp://' + self.addr() + ':2000' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',tx_port2=tcp://' + self.addr() + ':2002' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',rx_port=tcp://' + self.ue.addr() + ':2001' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',rx_port2=tcp://' + self.ue.addr() + ':2003' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',tx_freq=2630e6,rx_freq=2510e6,tx_freq2=2650e6,rx_freq2=2530e6' \</span><br><span style="color: hsl(0, 100%, 40%);">-                        + ',id=enb,base_srate=' + str(base_srate)</span><br><span style="color: hsl(120, 100%, 40%);">+            rf_dev_args = self.get_zmq_rf_dev_args()</span><br><span>             config.overlay(values, dict(enb=dict(rf_dev_args=rf_dev_args)))</span><br><span> </span><br><span>         # Set UHD frame size as a function of the cell bandwidth on B2XX</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17922">change 17922</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-gsm-tester/+/17922"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I8ca3ed83e65dc07927385267e5970bc4f5b120d5 </div>
<div style="display:none"> Gerrit-Change-Number: 17922 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: srs_andre <andre@softwareradiosystems.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: srs_andre <andre@softwareradiosystems.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>