aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2021-01-10 20:44:26 +0100
committerAlexander Couzens <lynxis@fe80.eu>2021-01-17 16:11:36 +0100
commitc4b746284f0181d4822f070435d9af7472164bd7 (patch)
treea07b9b1be65f15260fd069a33bcc3b959c95fe73
parent03f88d910e4b839b3cc51036d748c902b4690537 (diff)
gprs_ns2_vc: answer UNBLOCK on unblocked nsvc
48.016 7.2: says an UNBLOCK pdu should be answered with UNBLOCK_ACK on already unblocked NSVC Related: SYS#5208 Change-Id: Ic92e99b2607d1e54ecb4668667065502a55a2ce0
-rw-r--r--src/gb/gprs_ns2_vc_fsm.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gb/gprs_ns2_vc_fsm.c b/src/gb/gprs_ns2_vc_fsm.c
index d5f134e1..78b06911 100644
--- a/src/gb/gprs_ns2_vc_fsm.c
+++ b/src/gb/gprs_ns2_vc_fsm.c
@@ -334,6 +334,9 @@ static void gprs_ns2_st_unblocked(struct osmo_fsm_inst *fi, uint32_t event, void
struct gprs_ns2_vc_priv *priv = fi->priv;
switch (event) {
+ case GPRS_NS2_EV_UNBLOCK:
+ ns2_tx_unblock_ack(priv->nsvc);
+ break;
case GPRS_NS2_EV_BLOCK:
priv->initiate_block = false;
ns2_tx_block_ack(priv->nsvc);
@@ -400,7 +403,8 @@ static const struct osmo_fsm_state gprs_ns2_vc_states[] = {
.onenter = gprs_ns2_st_blocked_onenter,
},
[GPRS_NS2_ST_UNBLOCKED] = {
- .in_event_mask = S(GPRS_NS2_EV_BLOCK) | S(GPRS_NS2_EV_UNBLOCK_ACK),
+ .in_event_mask = S(GPRS_NS2_EV_BLOCK) | S(GPRS_NS2_EV_UNBLOCK_ACK) |
+ S(GPRS_NS2_EV_UNBLOCK),
.out_state_mask = S(GPRS_NS2_ST_RESET) | S(GPRS_NS2_ST_ALIVE) |
S(GPRS_NS2_ST_BLOCKED) |
S(GPRS_NS2_ST_UNCONFIGURED),