fixeria has uploaded this change for review.
pcu: f_pcuif_tx_data_ind(): make waiting behavior configurable
By default, f_pcuif_tx_data_ind() waits for TDMA_EV_PDTCH_BLOCK_SENT
making it impossible to send Uplink blocks with the same TDMA FN but
dufferent TDMA TN (multi-slot TBFs). This change allows sending
several UL blocks without waiting for TDMA_EV_PDTCH_BLOCK_SENT.
Change-Id: I3200b8a2973f97f08714654e525c631da5d6e382
Related: OS#5696
---
M pcu/GPRS_Components.ttcn
1 file changed, 13 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/28/29628/1
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index eb29787..b1dd28d 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -639,13 +639,15 @@
/* Enqueue DATA.ind (both TDMA frame and block numbers to be patched) */
function f_ms_tx_data_ind(inout GprsMS ms, octetstring data, uint32_t fn := 0,
+ boolean wait := true, /* wait for TDMA_EV_PDTCH_BLOCK_SENT? */
template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
runs on MS_BTS_IFACE_CT {
- f_pcuif_tx_data_ind(data, fn, ms.ta, ms.lqual_cb, nr := nr);
+ f_pcuif_tx_data_ind(data, fn, ms.ta, ms.lqual_cb, wait, nr := nr);
}
function f_ms_tx_ul_block(inout GprsMS ms, template (value) RlcmacUlBlock ul_data,
uint32_t fn := 0, template (omit) CodingScheme force_cs_mcs := omit,
+ boolean wait := true, /* wait for TDMA_EV_PDTCH_BLOCK_SENT? */
template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
runs on MS_BTS_IFACE_CT {
var octetstring data;
@@ -665,7 +667,7 @@
data := f_pad_oct(data, f_rlcmac_cs_mcs2block_len(CS_1), '2b'O);
}
/* Enqueue DATA.ind (both TDMA frame and block numbers to be patched) */
- f_ms_tx_data_ind(ms, data, fn, nr := nr);
+ f_ms_tx_data_ind(ms, data, fn, wait, nr := nr);
}
function f_ms_tx_ul_data_block(inout GprsMS ms, octetstring payload,
@@ -1084,20 +1086,24 @@
return f_pcuif_rx_imm_ass(PCU_IF_SAPI_AGCH, tr_IMM_TBF_ASS(false, ra, fn), nr);
}
-/* Enqueue DATA.ind (both TDMA frame and block numbers to be patched) */
+/* Enqueue DATA.ind (both TDMA frame and block numbers to be patched).
+ * By default, wait for TDMA_EV_PDTCH_BLOCK_SENT from the RAW_PCU_BTS_CT. */
function f_pcuif_tx_data_ind(octetstring data, uint32_t fn := 0,
TimingAdvance ta := 0, int16_t lqual_cb := 0,
+ boolean wait := true, /* wait for TDMA_EV_PDTCH_BLOCK_SENT? */
template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
runs on MS_BTS_IFACE_CT {
- var template RAW_PCU_EventParam ev_param := {tdma_fn := ? };
BTS.send(ts_PCUIF_DATA_IND(nr.bts_nr, nr.trx_nr, nr.ts_nr, nr.blk_nr,
sapi := PCU_IF_SAPI_PDTCH, data := data,
fn := fn, arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)),
ta_offs_qbits := ta * 4, lqual_cb := lqual_cb));
- if (fn != 0) {
- ev_param := {tdma_fn := fn };
+ if (wait) {
+ if (fn != 0) {
+ BTS.receive(tr_RAW_PCU_EV(TDMA_EV_PDTCH_BLOCK_SENT, { tdma_fn := fn }));
+ } else {
+ BTS.receive(tr_RAW_PCU_EV(TDMA_EV_PDTCH_BLOCK_SENT));
+ }
}
- BTS.receive(tr_RAW_PCU_EV(TDMA_EV_PDTCH_BLOCK_SENT, ev_param));
}
/* Enqueue RTS.req, expect DATA.req with UL ACK from the PCU */
To view, visit change 29628. To unsubscribe, or for help writing mail filters, visit settings.