summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2013-10-08 12:04:45 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-10-08 14:51:13 +0200
commit05395a63b77e97217fc5ffa84ab375adfcaca244 (patch)
treef364115b3e0e713c18a8b7a26376e5e249e6a579
parent84cdc70e0bbeddf33404df472f3c992f5446ff12 (diff)
gb: Fix NS-RESET response message order
According to 3GPP TS 08.16, 7.3 "Reset procedure" the entity receiving a NS-RESET PDU responds with a NS-RESET-ACK and 'then' starts the test procedure which essentially means, that a NS-ALIVE gets sent and a timer is started. Currently the NS-ALIVE is sent before the NS-RESET-ACK. This patch fixes the implementation by reversing the order in which these messages are sent. Sponsored-by: On-Waves ehf
-rw-r--r--src/gb/gprs_ns.c12
-rw-r--r--tests/gb/gprs_ns_test.ok36
2 files changed, 25 insertions, 23 deletions
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index b3bb77de..0fed43c5 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -684,15 +684,17 @@ static int gprs_ns_rx_reset(struct gprs_nsvc *nsvc, struct msgb *msg)
nsvc->nsei = ntohs(*nsei);
nsvc->nsvci = ntohs(*nsvci);
- /* start the test procedure */
- gprs_ns_tx_simple(nsvc, NS_PDUT_ALIVE);
- nsvc_start_timer(nsvc, NSVC_TIMER_TNS_TEST);
-
/* inform interested parties about the fact that this NSVC
* has received RESET */
ns_osmo_signal_dispatch(nsvc, S_NS_RESET, *cause);
- return gprs_ns_tx_reset_ack(nsvc);
+ rc = gprs_ns_tx_reset_ack(nsvc);
+
+ /* start the test procedure */
+ gprs_ns_tx_simple(nsvc, NS_PDUT_ALIVE);
+ nsvc_start_timer(nsvc, NSVC_TIMER_TNS_TEST);
+
+ return rc;
}
static int gprs_ns_rx_block(struct gprs_nsvc *nsvc, struct msgb *msg)
diff --git a/tests/gb/gprs_ns_test.ok b/tests/gb/gprs_ns_test.ok
index 4a449077..049b5e66 100644
--- a/tests/gb/gprs_ns_test.ok
+++ b/tests/gb/gprs_ns_test.ok
@@ -2,12 +2,12 @@
PROCESSING RESET from 0x01020304:1111
02 00 81 01 01 82 11 22 04 82 11 22
-RESPONSE, msg length 1
-0a
-
RESPONSE, msg length 9
03 01 82 11 22 04 82 11 22
+RESPONSE, msg length 1
+0a
+
result (RESET) = 9
Current NS-VCIs:
@@ -42,12 +42,12 @@ result (BSSGP RESET) = 0
PROCESSING RESET from 0x01020304:2222
02 00 81 01 01 82 11 22 04 82 11 22
-RESPONSE, msg length 1
-0a
-
RESPONSE, msg length 9
03 01 82 11 22 04 82 11 22
+RESPONSE, msg length 1
+0a
+
result (RESET) = 9
Current NS-VCIs:
@@ -58,12 +58,12 @@ Current NS-VCIs:
PROCESSING RESET from 0x01020304:3333
02 00 81 01 01 82 33 44 04 82 11 22
-RESPONSE, msg length 1
-0a
-
RESPONSE, msg length 9
03 01 82 33 44 04 82 11 22
+RESPONSE, msg length 1
+0a
+
result (RESET) = 9
Current NS-VCIs:
@@ -74,12 +74,12 @@ Current NS-VCIs:
PROCESSING RESET from 0x01020304:4444
02 00 81 01 01 82 11 22 04 82 33 44
-RESPONSE, msg length 1
-0a
-
RESPONSE, msg length 9
03 01 82 11 22 04 82 33 44
+RESPONSE, msg length 1
+0a
+
result (RESET) = 9
Current NS-VCIs:
@@ -91,12 +91,12 @@ Current NS-VCIs:
PROCESSING RESET from 0x01020304:3333
02 00 81 01 01 82 11 22 04 82 11 22
-RESPONSE, msg length 1
-0a
-
RESPONSE, msg length 9
03 01 82 11 22 04 82 11 22
+RESPONSE, msg length 1
+0a
+
result (RESET) = 9
Current NS-VCIs:
@@ -108,12 +108,12 @@ Current NS-VCIs:
PROCESSING RESET from 0x01020304:4444
02 00 81 01 01 82 11 22 04 82 11 22
-RESPONSE, msg length 1
-0a
-
RESPONSE, msg length 9
03 01 82 11 22 04 82 11 22
+RESPONSE, msg length 1
+0a
+
result (RESET) = 9
Current NS-VCIs: