<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/25896">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">struct gsm_lchan: move tch.rep_facch to rep_acch.dl_facch<br><br>Finally we have all ACCH repetition state variables in one place.<br><br>Change-Id: I1469619528bb69c78c2fdc25bc1db208ead936d0<br>Related: SYS#5114<br>---<br>M include/osmo-bts/lchan.h<br>M src/common/l1sap.c<br>M src/common/lchan.c<br>3 files changed, 18 insertions(+), 20 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/96/25896/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/lchan.h b/include/osmo-bts/lchan.h</span><br><span>index 3eb4f93..a7e9004 100644</span><br><span>--- a/include/osmo-bts/lchan.h</span><br><span>+++ b/include/osmo-bts/lchan.h</span><br><span>@@ -254,9 +254,6 @@</span><br><span>             uint8_t last_cmr;</span><br><span>            uint32_t last_fn;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           /* SLOT #0 and #1 to store FACCH for repetition */</span><br><span style="color: hsl(0, 100%, 40%);">-              struct gsm_rep_facch rep_facch[2];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   } tch;</span><br><span> </span><br><span>   /* 3GPP TS 48.058 ยง 9.3.37: [0; 255] ok, -1 means invalid*/</span><br><span>@@ -311,7 +308,8 @@</span><br><span>           bool ul_sacch_active;</span><br><span>                bool dl_sacch_active;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-               /* Message buffer to store DL-SACCH repeation candidate */</span><br><span style="color: hsl(120, 100%, 40%);">+            /* Message buffers to store repeation candidates */</span><br><span style="color: hsl(120, 100%, 40%);">+           struct gsm_rep_facch dl_facch[2];</span><br><span>            struct msgb *dl_sacch_msg;</span><br><span>   } rep_acch;</span><br><span> </span><br><span>diff --git a/src/common/l1sap.c b/src/common/l1sap.c</span><br><span>index d94e3bc..c89b2c3 100644</span><br><span>--- a/src/common/l1sap.c</span><br><span>+++ b/src/common/l1sap.c</span><br><span>@@ -987,14 +987,14 @@</span><br><span> </span><br><span>     /* Note: The repeated version of the FACCH block must be scheduled 8 or 9 bursts after the original</span><br><span>   * transmission. see 3GPP TS 44.006, section 10.2 for a more detailed explaination. */</span><br><span style="color: hsl(0, 100%, 40%);">-  if (lchan->tch.rep_facch[0].msg && GSM_TDMA_FN_SUB(fn, lchan->tch.rep_facch[0].fn) >= 8) {</span><br><span style="color: hsl(120, 100%, 40%);">+   if (lchan->rep_acch.dl_facch[0].msg && GSM_TDMA_FN_SUB(fn, lchan->rep_acch.dl_facch[0].fn) >= 8) {</span><br><span>          /* Re-use stored FACCH message buffer from SLOT #0 for repetition. */</span><br><span style="color: hsl(0, 100%, 40%);">-           msg = lchan->tch.rep_facch[0].msg;</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan->tch.rep_facch[0].msg = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-  } else if (lchan->tch.rep_facch[1].msg && GSM_TDMA_FN_SUB(fn, lchan->tch.rep_facch[1].fn) >= 8) {</span><br><span style="color: hsl(120, 100%, 40%);">+            msg = lchan->rep_acch.dl_facch[0].msg;</span><br><span style="color: hsl(120, 100%, 40%);">+             lchan->rep_acch.dl_facch[0].msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+    } else if (lchan->rep_acch.dl_facch[1].msg && GSM_TDMA_FN_SUB(fn, lchan->rep_acch.dl_facch[1].fn) >= 8) {</span><br><span>           /* Re-use stored FACCH message buffer from SLOT #1 for repetition. */</span><br><span style="color: hsl(0, 100%, 40%);">-           msg = lchan->tch.rep_facch[1].msg;</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan->tch.rep_facch[1].msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+                msg = lchan->rep_acch.dl_facch[1].msg;</span><br><span style="color: hsl(120, 100%, 40%);">+             lchan->rep_acch.dl_facch[1].msg = NULL;</span><br><span>   } else {</span><br><span>             /* Fetch new FACCH from queue ... */</span><br><span>                 if (lapdm_phsap_dequeue_prim(le, &pp) < 0)</span><br><span>@@ -1010,12 +1010,12 @@</span><br><span>                  return msg;</span><br><span> </span><br><span>              /* ... and store the message buffer for repetition. */</span><br><span style="color: hsl(0, 100%, 40%);">-          if (lchan->tch.rep_facch[0].msg == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   lchan->tch.rep_facch[0].msg = msgb_copy(msg, "rep_facch_0");</span><br><span style="color: hsl(0, 100%, 40%);">-                       lchan->tch.rep_facch[0].fn = fn;</span><br><span style="color: hsl(0, 100%, 40%);">-             } else if (lchan->tch.rep_facch[1].msg == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    lchan->tch.rep_facch[1].msg = msgb_copy(msg, "rep_facch_1");</span><br><span style="color: hsl(0, 100%, 40%);">-                       lchan->tch.rep_facch[1].fn = fn;</span><br><span style="color: hsl(120, 100%, 40%);">+           if (lchan->rep_acch.dl_facch[0].msg == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan->rep_acch.dl_facch[0].msg = msgb_copy(msg, "rep_facch_0");</span><br><span style="color: hsl(120, 100%, 40%);">+                 lchan->rep_acch.dl_facch[0].fn = fn;</span><br><span style="color: hsl(120, 100%, 40%);">+               } else if (lchan->rep_acch.dl_facch[1].msg == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      lchan->rep_acch.dl_facch[1].msg = msgb_copy(msg, "rep_facch_1");</span><br><span style="color: hsl(120, 100%, 40%);">+                 lchan->rep_acch.dl_facch[1].fn = fn;</span><br><span>              } else {</span><br><span>                     /* By definition 3GPP TS 05.02 does not allow more than two (for TCH/H only one) FACCH blocks</span><br><span>                         * to be transmitted simultaniously. */</span><br><span>diff --git a/src/common/lchan.c b/src/common/lchan.c</span><br><span>index 423ecc1..9f27409 100644</span><br><span>--- a/src/common/lchan.c</span><br><span>+++ b/src/common/lchan.c</span><br><span>@@ -292,10 +292,10 @@</span><br><span>                 lapdm_channel_exit(&lchan->lapdm_ch);</span><br><span>                 /* Also ensure that there are no leftovers from repeated FACCH or</span><br><span>             * repeated SACCH that might cause memory leakage. */</span><br><span style="color: hsl(0, 100%, 40%);">-           msgb_free(lchan->tch.rep_facch[0].msg);</span><br><span style="color: hsl(0, 100%, 40%);">-              msgb_free(lchan->tch.rep_facch[1].msg);</span><br><span style="color: hsl(0, 100%, 40%);">-              lchan->tch.rep_facch[0].msg = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-          lchan->tch.rep_facch[1].msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+                msgb_free(lchan->rep_acch.dl_facch[0].msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                msgb_free(lchan->rep_acch.dl_facch[1].msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                lchan->rep_acch.dl_facch[0].msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+            lchan->rep_acch.dl_facch[1].msg = NULL;</span><br><span>           msgb_free(lchan->rep_acch.dl_sacch_msg);</span><br><span>          lchan->rep_acch.dl_sacch_msg = NULL;</span><br><span>              /* fall through */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/25896">change 25896</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/+/25896"/><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: I1469619528bb69c78c2fdc25bc1db208ead936d0 </div>
<div style="display:none"> Gerrit-Change-Number: 25896 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>