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
diff --git a/src/gb/gprs_ns2_vc_fsm.c b/src/gb/gprs_ns2_vc_fsm.c
index d5f134e..78b0691 100644
--- a/src/gb/gprs_ns2_vc_fsm.c
+++ b/src/gb/gprs_ns2_vc_fsm.c
@@ -334,6 +334,9 @@
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 @@
.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),