dexter submitted this change.

View Change



2 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.

Approvals: laforge: Looks good to me, but someone else must approve fixeria: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
GPRS_Components: use more suitable SAPI for DL TBF assignment

The function that assigns the downlink TBF f_ms_exp_dl_tbf_ass_ccch()
uses SAPI PCU_IF_SAPI_AGCH as default but actually downlink TBFs are
assigned via the PCH. This means we have to put PCU_IF_SAPI_PCH into the
parameter list on every function call, so it makes sense to change the
default to PCU_IF_SAPI_PCH and omit the SAPI when calling the function

Related: OS#5927
Change-Id: I49c59bad0162cb303669f6108201f154918b1db3
---
M pcu/GPRS_Components.ttcn
M pcu/PCU_Tests.ttcn
2 files changed, 47 insertions(+), 31 deletions(-)

diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index 59c99d8..64a39dd 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -628,7 +628,7 @@
ms.ul_tbf := f_ultbf_new_from_rr_imm_ass(rr_imm_ass);
}

-function f_ms_exp_dl_tbf_ass_ccch(inout GprsMS ms, template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH,
+function f_ms_exp_dl_tbf_ass_ccch(inout GprsMS ms, template PCUIF_Sapi sapi := PCU_IF_SAPI_PCH,
template GsmRrMessage t_imm_ass := tr_IMM_TBF_ASS(true, ?, ?),
template (present) TsTrxBtsNum nr := tr_TsTrxBtsNum)
runs on MS_BTS_IFACE_CT {
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 76926ae..2598e7b 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -447,7 +447,7 @@

/* Now SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -480,7 +480,7 @@
/* New data arrives, PCU should page the MS since no TBF active exists: */
/* Send some more data, it will never reach the MS */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

f_shutdown(__BFILE__, __LINE__, final := true);
}
@@ -593,7 +593,7 @@
/* SGSN sends some DL data, PCU will initiate Packet Downlink
* Assignment on CCCH (PCH). We don't care about the payload. */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, f_rnd_octstring(10)));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Make sure that Timing Advance is 0 (the actual value is not known yet).
* As per 3GPP S 44.018, section 3.5.3.1.2, the network *shall* initiate
@@ -1060,7 +1060,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1103,7 +1103,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, ms_racap));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS */
f_sleep(X2002);
@@ -1333,7 +1333,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, bssgp_ms_racap_egprs_def));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1727,7 +1727,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data1));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1786,7 +1786,7 @@

/* The TBF should be freed now, so new data should trigger an Assignment: */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data2));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1828,7 +1828,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data1));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1861,7 +1861,7 @@

/* The TBF should be freed now, so new data should trigger an Assignment: */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data2));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1907,7 +1907,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -1981,7 +1981,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data1));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2054,7 +2054,7 @@

/* after T_3195 timeout, TBF is released */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data2));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2119,7 +2119,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2435,7 +2435,7 @@

/* Now SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2625,7 +2625,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, ms_racap));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2780,7 +2780,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2789,7 +2789,7 @@
/* Now we don't ack the dl block (emulate MS failed receiveing IMM ASS
* or GPRS DL, or DL ACK was lost for some reason). As a result, PCU
* should retrigger IMM ASS + GPRS DL procedure after poll timeout. */
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -2831,7 +2831,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS */
f_sleep(X2002);
@@ -3028,7 +3028,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data1));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -3047,7 +3047,7 @@
}

/* PCU starts whole process again */
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -3132,7 +3132,7 @@
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data_sapi7));
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data_sapi8));
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data_sapi1));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS */
f_sleep(X2002);
@@ -3574,7 +3574,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, racap_tmpl));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -3853,7 +3853,7 @@

/* Now SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, imsi := ts_BSSGP_IMSI(ms.imsi)));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
@@ -3945,7 +3945,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, ms_racap));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS */
f_sleep(X2002);
@@ -4040,7 +4040,7 @@

/* UL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);
/* Wait timer X2002 and DL block is available after CCCH IMM ASS: */
f_sleep(X2002);
f_rx_rlcmac_dl_block_exp_data(dl_block, dl_fn, data, 0);
@@ -4107,7 +4107,7 @@

/* UL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Now the PCU is waiting for the MS to move to PDCH in order to send data to it (timer X2002).
* The MS decides it want to send new Ul TBF so it send RACH req to ask for it: */
@@ -4187,7 +4187,7 @@

/* UL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Now the PCU is waiting for the MS to move to PDCH in order to send data to it (timer X2002).
* The MS decides it want to send new Ul TBF so it send RACH req to ask for it: */
@@ -4652,7 +4652,7 @@

/* SGSN sends some DL data, PCU will page on CCCH (PCH) */
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, f_rnd_octstring(12)));
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

f_TC_pcuif_fh_check_imm_ass(valueof(info_ind), ms.dl_tbf.rr_imm_ass);
f_shutdown(__BFILE__, __LINE__, final := true);
@@ -7137,7 +7137,7 @@
} else {
BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, bssgp_ms_racap_gprs));
}
- f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);
+ f_ms_exp_dl_tbf_ass_ccch(ms);

/* Wait timer X2002 and DL block is available after CCCH IMM ASS */
f_sleep(X2002);

To view, visit change 33794. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I49c59bad0162cb303669f6108201f154918b1db3
Gerrit-Change-Number: 33794
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier@sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged