<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/24189">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Split ul_tbf alloc on CCCH into new function<br><br>This allows more easily finding when this specific scenario happens, and<br>can easily be compared against the PACCH one.<br><br>Change-Id: I609792a40fda2a798ca71a0e9f5639d0a0f011d7<br>---<br>M src/bts.cpp<br>M src/tbf_ul.cpp<br>M src/tbf_ul.h<br>M tests/tbf/TbfTest.err<br>4 files changed, 29 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/89/24189/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 4fe529e..261da19 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -867,18 +867,13 @@</span><br><span>                     "SBFn=%u TRX=%u TS=%u\n", sb_fn, trx_no, ts_no);</span><br><span>      } else {</span><br><span>             GprsMs *ms = bts_alloc_ms(bts, 0, chan_req.egprs_mslot_class);</span><br><span style="color: hsl(0, 100%, 40%);">-          tbf = tbf_alloc_ul_tbf(bts, ms, -1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+            tbf = tbf_alloc_ul_ccch(bts, ms);</span><br><span>            if (!tbf) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource for Uplink TBF\n");</span><br><span>                   /* Send RR Immediate Assignment Reject */</span><br><span>                    rc = -EBUSY;</span><br><span>                         goto send_imm_ass_rej;</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               /* FIXME: Copy and paste with other routines.. */</span><br><span>            tbf->set_ta(ta);</span><br><span style="color: hsl(0, 100%, 40%);">-             TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW);</span><br><span style="color: hsl(0, 100%, 40%);">-           TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH);</span><br><span>                trx_no = tbf->trx->trx_no;</span><br><span>             ts_no = tbf->first_ts;</span><br><span>            usf = tbf->m_usf[ts_no];</span><br><span>diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp</span><br><span>index cf8c75c..686eea5 100644</span><br><span>--- a/src/tbf_ul.cpp</span><br><span>+++ b/src/tbf_ul.cpp</span><br><span>@@ -160,6 +160,24 @@</span><br><span>      return tbf;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Alloc a UL TBF to be assigned over CCCH */</span><br><span style="color: hsl(120, 100%, 40%);">+struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_ccch(struct gprs_rlcmac_bts *bts, struct GprsMs *ms)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  struct gprs_rlcmac_ul_tbf *tbf;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     tbf = tbf_alloc_ul_tbf(bts, ms, -1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!tbf) {</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGP(DTBF, LOGL_NOTICE, "No PDCH resource for Uplink TBF\n");</span><br><span style="color: hsl(120, 100%, 40%);">+               /* Caller will most probably send a Imm Ass Reject after return */</span><br><span style="color: hsl(120, 100%, 40%);">+            return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW);</span><br><span style="color: hsl(120, 100%, 40%);">+ TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH);</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(tbf->ms());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  return tbf;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Create a temporary dummy TBF to Tx a ImmAssReject if allocating a new one during</span><br><span>  * packet resource Request failed. This is similar as tbf_alloc_ul() but without</span><br><span>  * calling tbf->setup() (in charge of TFI/USF allocation), and reusing resources</span><br><span>diff --git a/src/tbf_ul.h b/src/tbf_ul.h</span><br><span>index 4207deb..0b9be28 100644</span><br><span>--- a/src/tbf_ul.h</span><br><span>+++ b/src/tbf_ul.h</span><br><span>@@ -120,6 +120,7 @@</span><br><span> struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot);</span><br><span> struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_pacch(struct gprs_rlcmac_bts *bts, GprsMs *ms,</span><br><span>                                         int8_t use_trx, uint32_t tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_ccch(struct gprs_rlcmac_bts *bts, struct GprsMs *ms);</span><br><span> struct gprs_rlcmac_ul_tbf *handle_tbf_reject(struct gprs_rlcmac_bts *bts,</span><br><span>    GprsMs *ms, uint8_t trx_no, uint8_t ts_no);</span><br><span> </span><br><span>diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err</span><br><span>index 0a826a7..f1cab16 100644</span><br><span>--- a/tests/tbf/TbfTest.err</span><br><span>+++ b/tests/tbf/TbfTest.err</span><br><span>@@ -1454,9 +1454,9 @@</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=0 USF=0</span><br><span> PDCH(bts=0,trx=0,ts=7) Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184</span><br><span> PDCH(bts=0,trx=0,ts=7) FN=2654167 Rx UL DATA from unexpected TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=FLOW)</span><br><span>@@ -2060,9 +2060,9 @@</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=0 USF=0</span><br><span> PDCH(bts=0,trx=0,ts=7) Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184</span><br><span> PDCH(bts=0,trx=0,ts=7) FN=2654275 Rx UL DATA from unexpected TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=FLOW)</span><br><span>@@ -6210,9 +6210,9 @@</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=0 USF=0</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x79 (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span>@@ -6231,9 +6231,9 @@</span><br><span> TBF(TFI=1 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=1 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=1 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=1 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=1 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=1 USF=1</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x7a (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span>@@ -6252,9 +6252,9 @@</span><br><span> TBF(TFI=2 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=2 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=2 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=2 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=2 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=2 USF=2</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x7b (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span>@@ -6273,9 +6273,9 @@</span><br><span> TBF(TFI=3 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=3 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=3 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=3 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=3 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=3 USF=3</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x7c (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span>@@ -6294,9 +6294,9 @@</span><br><span> TBF(TFI=4 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=4 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=4 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=4 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=4 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=4 USF=4</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x7d (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span>@@ -6315,9 +6315,9 @@</span><br><span> TBF(TFI=5 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=5 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=5 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=5 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=5 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=5 USF=5</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x7e (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span>@@ -6336,9 +6336,9 @@</span><br><span> TBF(TFI=6 TLLI=0xffffffff DIR=UL STATE=NULL) Setting Control TS 7</span><br><span> TBF(TFI=6 TLLI=0xffffffff DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00</span><br><span> MS(TLLI=0xffffffff, IMSI=, TA=220, 0/0,) Attaching UL TBF: TBF(TFI=6 TLLI=0xffffffff DIR=UL STATE=NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> TBF(TFI=6 TLLI=0xffffffff DIR=UL STATE=NULL) changes state from NULL to FLOW</span><br><span> TBF(TFI=6 TLLI=0xffffffff DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0]</span><br><span style="color: hsl(120, 100%, 40%);">+Modifying MS object, TLLI = 0xffffffff, TA 220 -> 7</span><br><span> Tx Immediate Assignment on AGCH: TRX=0 (ARFCN 0) TS=7 TA=7 TSC=0 TFI=6 USF=6</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x7f (8 bit) Fn=2654167 qta=31</span><br><span> Creating MS object, TLLI = 0xffffffff</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/24189">change 24189</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-pcu/+/24189"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I609792a40fda2a798ca71a0e9f5639d0a0f011d7 </div>
<div style="display:none"> Gerrit-Change-Number: 24189 </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>