aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-04-26 13:36:16 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-04-26 14:10:11 +0200
commit25ebf3c8f9bd759aaa9c57c15ec2f62cf02345b8 (patch)
treef005697f7dd72f861277a1eb500df75520b9eeb5
parent846fd248dc49c06441da6d7c3cd85df479810f1a (diff)
Make use of T3142 received from BTS
-rw-r--r--src/bts.cpp5
-rw-r--r--src/encoding.cpp10
-rw-r--r--src/encoding.h3
-rw-r--r--tests/types/TypesTest.cpp4
4 files changed, 11 insertions, 11 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 3d935a18..9065c4e4 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -76,7 +76,7 @@ void bts_trx_free_all_tbf(struct gprs_rlcmac_trx *trx)
}
static struct osmo_tdef T_defs_bts[] = {
- { .T=3142, .default_val=20, .unit=OSMO_TDEF_S, .desc="timer (s)", .val=0 },
+ { .T=3142, .default_val=20, .unit=OSMO_TDEF_S, .desc="Wait Indication used in Imm Ass Reject during TBF Establishment (s)", .val=0, .min_val = 0, .max_val = 255 }, /* TS 44.018 10.5.2.43 */
{ .T=3169, .default_val=5, .unit=OSMO_TDEF_S, .desc="Reuse of USF and TFI(s) after the MS uplink TBF assignment is invalid (s)", .val=0 },
{ .T=3191, .default_val=5, .unit=OSMO_TDEF_S, .desc="Reuse of TFI(s) after sending (1) last RLC Data Block on TBF(s), or (2) PACKET TBF RELEASE for an MBMS radio bearer (s)", .val=0 },
{ .T=3193, .default_val=100, .unit=OSMO_TDEF_MS, .desc="Reuse of TFI(s) after reception of final PACKET DOWNLINK ACK/NACK from MS for TBF (ms)", .val=0 },
@@ -890,7 +890,8 @@ send_imm_ass_rej:
if (rc != 0) {
LOGP(DRLCMAC, LOGL_DEBUG, "Tx Immediate Assignment Reject on AGCH\n");
plen = Encoding::write_immediate_assignment_reject(
- bv, rip->ra, Fn, rip->burst_type);
+ bv, rip->ra, Fn, rip->burst_type,
+ (uint8_t)osmo_tdef_get(bts->T_defs_bts, 3142, OSMO_TDEF_S, -1));
bts_do_rate_ctr_inc(bts, CTR_IMMEDIATE_ASSIGN_REJ);
} else {
LOGP(DRLCMAC, LOGL_DEBUG, "Tx Immediate Assignment on AGCH: "
diff --git a/src/encoding.cpp b/src/encoding.cpp
index 8bc8d15b..f91c638d 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -361,10 +361,8 @@ static int write_ia_rest_egprs_uplink_sba(const gprs_rlcmac_ul_tbf *tbf, bitvec
* Immediate assignment reject, sent on the CCCH/AGCH
* see GSM 44.018, 9.1.20 + 10.5.2.30
*/
-int Encoding::write_immediate_assignment_reject(
- bitvec *dest, uint16_t ra,
- uint32_t ref_fn,
- enum ph_burst_type burst_type)
+int Encoding::write_immediate_assignment_reject(bitvec *dest, uint16_t ra,
+ uint32_t ref_fn, enum ph_burst_type burst_type, uint8_t t3142)
{
unsigned wp = 0;
int plen;
@@ -404,8 +402,8 @@ int Encoding::write_immediate_assignment_reject(
bitvec_write_field(dest, &wp, ref_fn % 51, 6); // T3
bitvec_write_field(dest, &wp, ref_fn % 26, 5); // T2
- /* TODO: Make it configurable */
- bitvec_write_field(dest, &wp, 20, 8); //Wait Indication 1
+ /* 10.5.2.43 Wait Indication */
+ bitvec_write_field(dest, &wp, t3142, 8);
}
plen = wp / 8;
diff --git a/src/encoding.h b/src/encoding.h
index 89d057cf..e7046e27 100644
--- a/src/encoding.h
+++ b/src/encoding.h
@@ -59,7 +59,8 @@ public:
static int write_immediate_assignment_reject(
bitvec *dest, uint16_t ra,
uint32_t ref_fn,
- enum ph_burst_type burst_type
+ enum ph_burst_type burst_type,
+ uint8_t t3142
);
static void write_packet_uplink_assignment(
diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp
index 643ce4c0..480a9ac8 100644
--- a/tests/types/TypesTest.cpp
+++ b/tests/types/TypesTest.cpp
@@ -877,7 +877,7 @@ void test_immediate_assign_rej()
bitvec_unhex(immediate_assignment_rej, DUMMY_VEC);
plen = Encoding::write_immediate_assignment_reject(
immediate_assignment_rej, 112, 100,
- GSM_L1_BURST_TYPE_ACCESS_1);
+ GSM_L1_BURST_TYPE_ACCESS_1, 20);
printf("assignment reject: %s\n",
osmo_hexdump(immediate_assignment_rej->data, 22));
@@ -892,7 +892,7 @@ void test_immediate_assign_rej()
plen = Encoding::write_immediate_assignment_reject(
immediate_assignment_rej, 112, 100,
- GSM_L1_BURST_TYPE_ACCESS_0);
+ GSM_L1_BURST_TYPE_ACCESS_0, 20);
printf("assignment reject: %s\n",
osmo_hexdump(immediate_assignment_rej->data, 22));