aboutsummaryrefslogtreecommitdiffstats
path: root/tests/gb/gprs_ns_test.ok
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-12-17 13:22:36 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-12-17 14:16:50 +0100
commitcc6ac4cdc4103cb68a3e161deb49dfb64c931adf (patch)
tree0aabeb0e1f0b0c4fb7c9b341441b6c5f9b338740 /tests/gb/gprs_ns_test.ok
parent5ab8e2cdfcdfb932b918405061798e0079223273 (diff)
ns: Force a defined state when sending NS RESET
Currently the state is assumed to remain the same while the reset procedure is active. While this works correctly in general, a single unexpected BLOCK_ACK or UNBLOCK_ACK can change the state but will not stop the reset procedure. The leads to repeated RESET messages, where the corresponding RESET_ACK is ignored. This is a stable state which can only be left by manual intervention or by reception of a RESET message from the peer. This commit changes the RESET timeout handler to set the state to BLOCKED/RESET when sending the new NS RESET message. Note that this should ensure a clean restart even if the state has been screwed up. It does not fix the handling of BLOCK_ACK or UNBLOCK_ACK in abnormal cases. Addresses: gprs_ns.c:349 NSEI=8895 Tx NS RESET (NSVCI=8895, cause=O&M intervention) gprs_ns.c:878 NSVCI=8895 Rx NS RESET ACK (NSEI=8895, NSVCI=8895) gprs_ns.c:887 NS RESET ACK Discarding unexpected message for NS-VCI 8895 from SGSN NSEI=8895 Ticket: OW#1551 Sponsored-by: On-Waves ehf
Diffstat (limited to 'tests/gb/gprs_ns_test.ok')
-rw-r--r--tests/gb/gprs_ns_test.ok84
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/gb/gprs_ns_test.ok b/tests/gb/gprs_ns_test.ok
index 1e0bf7f8..b0c81e44 100644
--- a/tests/gb/gprs_ns_test.ok
+++ b/tests/gb/gprs_ns_test.ok
@@ -569,6 +569,90 @@ Current NS-VCIs:
NS-VC replaced other count: 2
NS-VC changed NSEI count : 3
+--- RESET (BSS -> SGSN) crossing an UNBLOCK_ACK (SGSN -> BSS) ---
+
+Setup NS-VC: remote 0x01020304:2222, NSVCI 0x1001(4097), NSEI 0x1000(4096)
+
+PROCESSING RESET from 0x01020304:2222
+02 00 81 01 01 82 10 01 04 82 10 00
+
+==> got signal NS_REPLACED: 0x1001/0.0.0.0:0 -> 0xf001/1.2.3.4:2222
+==> got signal NS_RESET, NS-VC 0x1001/1.2.3.4:2222
+MESSAGE to BSS, msg length 9
+03 01 82 10 01 04 82 10 00
+
+MESSAGE to BSS, msg length 1
+0a
+
+result (RESET) = 9
+
+PROCESSING ALIVE from 0x01020304:2222
+0a
+
+MESSAGE to BSS, msg length 1
+0b
+
+result (ALIVE) = 1
+
+PROCESSING UNBLOCK from 0x01020304:2222
+06
+
+==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:2222
+MESSAGE to BSS, msg length 1
+07
+
+result (UNBLOCK) = 1
+
+PROCESSING ALIVE_ACK from 0x01020304:2222
+0b
+
+result (ALIVE_ACK) = 0
+
+MESSAGE to BSS, msg length 12
+02 00 81 01 01 82 10 01 04 82 10 00
+
+PROCESSING UNBLOCK_ACK from 0x01020304:2222
+07
+
+==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:2222
+result (UNBLOCK_ACK) = 0
+
+Current NS-VCIs:
+ VCI 0xf001, NSEI 0x1000, peer 0x00000000:0, blocked
+ NS-VC Block count : 1
+ NS-VC replaced other count: 2
+ VCI 0x2001, NSEI 0x2000, peer 0x01020304:1111
+ VCI 0x1001, NSEI 0x1000, peer 0x01020304:2222
+ NS-VC Block count : 4
+ NS-VC replaced other count: 3
+ NS-VC changed NSEI count : 4
+
+PROCESSING RESET_ACK from 0x01020304:2222
+03 01 82 10 01 04 82 10 00
+
+result (RESET_ACK) = 0
+
+MESSAGE to BSS, msg length 12
+02 00 81 01 01 82 10 01 04 82 10 00
+
+PROCESSING RESET_ACK from 0x01020304:2222
+03 01 82 10 01 04 82 10 00
+
+MESSAGE to BSS, msg length 1
+0a
+
+result (RESET_ACK) = 1
+
+Current NS-VCIs:
+ VCI 0xf001, NSEI 0x1000, peer 0x00000000:0, blocked
+ NS-VC Block count : 1
+ NS-VC replaced other count: 2
+ VCI 0x2001, NSEI 0x2000, peer 0x01020304:1111
+ VCI 0x1001, NSEI 0x1000, peer 0x01020304:2222, blocked
+ NS-VC Block count : 5
+ NS-VC replaced other count: 3
+ NS-VC changed NSEI count : 4
+
Current NS-VCIs:
--- Setup SGSN connection, BSS -> SGSN ---