aboutsummaryrefslogtreecommitdiffstats
path: root/tests/tbf/TbfTest.cpp
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-06-12 14:06:09 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-06-22 10:39:06 +0200
commit409efa1ec84c14aaa43bfac85ba4956e9f3cf16a (patch)
tree7b1a6181bb1c157a23006a56547bd6a4ddbc6ebb /tests/tbf/TbfTest.cpp
parent411686402b6a7f148fd05c926d5fbce7a1802810 (diff)
tbf: Fix downlink packet loss
When the MS is pinged with a longer interval, many packets get lost even if the GprsMs object is kept. If the interval is above the time where the DL TBF is in state FLOW (mainly influenced be the dl-tbf-idle-time command), an new TBF must be requested via AGCH for each ICMP PING message. Currently the LLC frame containing the PING is immediately stored in the TBF and gets lost, if TBF establishment fails for some reason. This commit moves all calls to put_frame() to schedule_next_frame(), where the data is moved from the LLC queue to the frame storage within the TBF object. This method is only called from within create_new_bsn() when the TBF is in the FLOW state and the frame is going to be encoded immediately. At all other places, where put_frame() has been called before, the LLC message is just appended to the LLC queue in the GprsMs object. This change effectively simplifies the related code parts, since date/len information and discard notifications is no longer needed there. Ticket: #1759 Sponsored-by: On-Waves ehf
Diffstat (limited to 'tests/tbf/TbfTest.cpp')
-rw-r--r--tests/tbf/TbfTest.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 5bc492ec..5dfd2b8e 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -486,10 +486,10 @@ static void test_tbf_dl_llc_loss()
msg = ms->dl_tbf()->create_dl_acked_block(fn += 4, 7);
fprintf(stderr, "MSG = %s\n", msgb_hexdump(msg));
OSMO_ASSERT(msgb_length(msg) == 23);
- /* OSMO_ASSERT(msgb_data(msg)[10] == expected_data); */
+ OSMO_ASSERT(msgb_data(msg)[10] == expected_data);
expected_data += 1;
}
- /* OSMO_ASSERT(expected_data-1 == 3); */
+ OSMO_ASSERT(expected_data-1 == 3);
printf("=== end %s ===\n", __func__);