From 05395a63b77e97217fc5ffa84ab375adfcaca244 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Tue, 8 Oct 2013 12:04:45 +0200 Subject: 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 --- src/gb/gprs_ns.c | 12 +++++++----- tests/gb/gprs_ns_test.ok | 36 ++++++++++++++++++------------------ 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: -- cgit v1.2.3