pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-gprs/+/32295 )


Change subject: sm: Start using SNSM SAP
......................................................................

sm: Start using SNSM SAP

Related: OS#5501
Change-Id: Ic5525bfa92e2591757d999610c0d59849d022d8d
---
M include/osmocom/gprs/sm/sm_ms_fsm.h
M include/osmocom/gprs/sm/sm_prim.h
M include/osmocom/gprs/sm/sm_private.h
M libosmo-gprs-sm.pc.in
M src/sm/Makefile.am
M src/sm/sm.c
M src/sm/sm_ms_fsm.c
M src/sm/sm_prim.c
M tests/sm/Makefile.am
M tests/sm/sm_prim_test.c
M tests/sm/sm_prim_test.err
M tests/sm/sm_prim_test.ok
12 files changed, 211 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/95/32295/1

diff --git a/include/osmocom/gprs/sm/sm_ms_fsm.h 
b/include/osmocom/gprs/sm/sm_ms_fsm.h
index 3970d73..d1d4689 100644
--- a/include/osmocom/gprs/sm/sm_ms_fsm.h
+++ b/include/osmocom/gprs/sm/sm_ms_fsm.h
@@ -22,6 +22,7 @@
        GPRS_SM_MS_EV_TX_ACT_PDP_CTX_REQ,
        GPRS_SM_MS_EV_RX_ACT_PDP_CTX_REJ, /* data: enum gsm48_gsm_cause *cause 
*/
        GPRS_SM_MS_EV_RX_ACT_PDP_CTX_ACC,
+       GPRS_SM_MS_EV_NSAPI_ACTIVATED,
        GPRS_SM_MS_EV_TX_DEACT_PDP_CTX_REQ,
        GPRS_SM_MS_EV_RX_DEACT_PDP_CTX_REQ,
        GPRS_SM_MS_EV_RX_DEACT_PDP_CTX_ACC,
diff --git a/include/osmocom/gprs/sm/sm_prim.h 
b/include/osmocom/gprs/sm/sm_prim.h
index 57fc32e..575ea80 100644
--- a/include/osmocom/gprs/sm/sm_prim.h
+++ b/include/osmocom/gprs/sm/sm_prim.h
@@ -18,6 +18,7 @@


 struct osmo_gprs_gmm_prim;
+struct osmo_gprs_sndcp_prim;

 /* 3GPP TS 24.007 */
 enum osmo_gprs_sm_prim_sap {
@@ -191,6 +192,9 @@
 typedef int (*osmo_gprs_sm_prim_up_cb)(struct osmo_gprs_sm_prim *sm_prim, void 
*up_user_data);
 void osmo_gprs_sm_prim_set_up_cb(osmo_gprs_sm_prim_up_cb up_cb, void 
*up_user_data);

+typedef int (*osmo_gprs_sm_prim_sndcp_up_cb)(struct osmo_gprs_sndcp_prim 
*sndcp_prim, void *sndcp_up_user_data);
+void osmo_gprs_sm_prim_set_sndcp_up_cb(osmo_gprs_sm_prim_sndcp_up_cb 
sndcp_up_cb, void *sndcp_up_user_data);
+
 typedef int (*osmo_gprs_sm_prim_down_cb)(struct osmo_gprs_sm_prim *sm_prim, 
void *down_user_data);
 void osmo_gprs_sm_prim_set_down_cb(osmo_gprs_sm_prim_down_cb down_cb, void 
*down_user_data);

@@ -198,6 +202,7 @@
 void osmo_gprs_sm_prim_set_gmm_down_cb(osmo_gprs_sm_prim_gmm_down_cb 
gmm_down_cb, void *gmm_down_user_data);

 int osmo_gprs_sm_prim_upper_down(struct osmo_gprs_sm_prim *sm_prim);
+int osmo_gprs_sm_prim_sndcp_upper_down(struct osmo_gprs_sndcp_prim 
*sndcp_prim);
 int osmo_gprs_sm_prim_lower_up(struct osmo_gprs_sm_prim *sm_prim);
 int osmo_gprs_sm_prim_gmm_lower_up(struct osmo_gprs_gmm_prim *gmm_prim);

diff --git a/include/osmocom/gprs/sm/sm_private.h 
b/include/osmocom/gprs/sm/sm_private.h
index e599759..357b334 100644
--- a/include/osmocom/gprs/sm/sm_private.h
+++ b/include/osmocom/gprs/sm/sm_private.h
@@ -76,6 +76,9 @@
        osmo_gprs_sm_prim_up_cb sm_up_cb;
        void *sm_up_cb_user_data;

+       osmo_gprs_sm_prim_sndcp_up_cb sm_sndcp_up_cb;
+       void *sm_sndcp_up_cb_user_data;
+
        osmo_gprs_sm_prim_down_cb sm_down_cb;
        void *sm_down_cb_user_data;

@@ -149,6 +152,7 @@
 int gprs_sm_prim_call_up_cb(struct osmo_gprs_sm_prim *sm_prim);
 int gprs_sm_prim_call_down_cb(struct osmo_gprs_sm_prim *sm_prim);
 int gprs_sm_prim_call_gmm_down_cb(struct osmo_gprs_gmm_prim *gmm_prim);
+int gprs_sm_prim_call_sndcp_up_cb(struct osmo_gprs_sndcp_prim *sndcp_prim);

 struct osmo_gprs_sm_prim *gprs_sm_prim_alloc_smreg_pdp_act_cnf(void);
 struct osmo_gprs_sm_prim *gprs_sm_prim_alloc_smreg_pdp_act_ind(void);
@@ -157,6 +161,7 @@
 struct gprs_sm_ms *gprs_sm_ms_alloc(uint32_t ms_id);
 void gprs_sm_ms_free(struct gprs_sm_ms *ms);
 struct gprs_sm_ms *gprs_sm_find_ms_by_id(uint32_t ms_id);
+struct gprs_sm_ms *gprs_sm_find_ms_by_tlli(uint32_t tlli);

 struct gprs_sm_entity *gprs_sm_entity_alloc(struct gprs_sm_ms *ms, uint32_t 
nsapi);
 void gprs_sm_entity_free(struct gprs_sm_entity *sme);
@@ -164,6 +169,7 @@

 int gprs_sm_submit_gmmsm_assign_req(const struct gprs_sm_entity *sme);
 int gprs_sm_submit_smreg_pdp_act_cnf(const struct gprs_sm_entity *sme, enum 
gsm48_gsm_cause cause);
+int gprs_sm_submit_snsm_act_ind(const struct gprs_sm_entity *sme);
 int gprs_sm_tx_act_pdp_ctx_req(struct gprs_sm_entity *sme);
 int gprs_sm_rx(struct gprs_sm_entity *sme, struct gsm48_hdr *gh, unsigned int 
len);

diff --git a/libosmo-gprs-sm.pc.in b/libosmo-gprs-sm.pc.in
index 85158f1..95d5b2b 100644
--- a/libosmo-gprs-sm.pc.in
+++ b/libosmo-gprs-sm.pc.in
@@ -6,7 +6,7 @@
 Name: Osmocom [E]GPRS SM (Session Management) Library
 Description: C Utility Library
 Version: @VERSION@
-Requires: libosmo-gprs-gmm libosmocore
+Requires: libosmo-gprs-gmm libosmo-gprs-sndcp libosmocore
 Libs: -L${libdir} -losmo-gprs-sm
 Libs.private: -ltalloc
 Cflags: -I${includedir}/
diff --git a/src/sm/Makefile.am b/src/sm/Makefile.am
index 8fb9090..ecd8ba3 100644
--- a/src/sm/Makefile.am
+++ b/src/sm/Makefile.am
@@ -34,6 +34,7 @@

 libosmo_gprs_sm_la_LIBADD = \
        $(top_builddir)/src/gmm/libosmo-gprs-gmm.la \
+       $(top_builddir)/src/sndcp/libosmo-gprs-sndcp.la \
        $(LIBOSMOCORE_LIBS) \
        $(LIBOSMOGSM_LIBS) \
        -lm \
diff --git a/src/sm/sm.c b/src/sm/sm.c
index c83e739..b3d65da 100644
--- a/src/sm/sm.c
+++ b/src/sm/sm.c
@@ -27,6 +27,8 @@
 #include <osmocom/core/tdef.h>
 #include <osmocom/gsm/protocol/gsm_04_08_gprs.h>

+#include <osmocom/gprs/sndcp/sndcp_prim.h>
+
 #include <osmocom/gprs/sm/sm.h>
 #include <osmocom/gprs/sm/sm_prim.h>
 #include <osmocom/gprs/sm/sm_private.h>
@@ -120,6 +122,17 @@
        return NULL;
 }

+struct gprs_sm_ms *gprs_sm_find_ms_by_tlli(uint32_t tlli)
+{
+       struct gprs_sm_ms *ms;
+
+       llist_for_each_entry(ms, &g_sm_ctx->ms_list, list) {
+               if (ms->gmm.ptmsi == tlli)
+                       return ms;
+       }
+       return NULL;
+}
+
 struct gprs_sm_entity *gprs_sm_entity_alloc(struct gprs_sm_ms *ms, uint32_t 
nsapi)
 {
        struct gprs_sm_entity *sme;
@@ -202,6 +215,23 @@
        return rc;
 }

+
+int gprs_sm_submit_snsm_act_ind(const struct gprs_sm_entity *sme)
+{
+       struct osmo_gprs_sndcp_prim *sndcp_prim_tx;
+       int rc;
+
+       sndcp_prim_tx = osmo_gprs_sndcp_prim_alloc_snsm_activate_ind(
+                               sme->ms->gmm.ptmsi,
+                               sme->nsapi,
+                               sme->llc_sapi);
+       //sndcp_prim_tx->snsm.activat_ind.qos_params = ; /* TODO */
+       //sndcp_prim_tx->snsm.activat_ind.radio_prio = 0; /* TODO */
+
+       rc = gprs_sm_prim_call_sndcp_up_cb(sndcp_prim_tx);
+       return rc;
+}
+
 /* Tx SM Activate PDP context request, 9.5.1 */
 int gprs_sm_tx_act_pdp_ctx_req(struct gprs_sm_entity *sme)
 {
diff --git a/src/sm/sm_ms_fsm.c b/src/sm/sm_ms_fsm.c
index 92137c4..297e81c 100644
--- a/src/sm/sm_ms_fsm.c
+++ b/src/sm/sm_ms_fsm.c
@@ -75,6 +75,13 @@
                gprs_sm_submit_smreg_pdp_act_cnf(ctx->sme, *((enum 
gsm48_gsm_cause *)data));
                break;
        case GPRS_SM_MS_EV_RX_ACT_PDP_CTX_ACC:
+               gprs_sm_submit_snsm_act_ind(ctx->sme);
+               /* Submitting SMREG-PDP-ACT-CNF is delayed until ,
+                * SNSM-ACTIVATE-RSP (GPRS_SM_MS_EV_NSAPI_ACTIVATED) is received
+                * from SNDCP, see TS 24.007 C.6 */
+               break;
+       case GPRS_SM_MS_EV_NSAPI_ACTIVATED:
+               /* see TS 24.007 C.6 */
                sm_ms_fsm_state_chg(fi, GPRS_SM_MS_ST_PDP_ACTIVE);
                gprs_sm_submit_smreg_pdp_act_cnf(ctx->sme, (enum 
gsm48_gsm_cause)0);
                break;
@@ -176,7 +183,8 @@
                        X(GPRS_SM_MS_EV_RX_GMM_ESTABLISH_CNF) |
                        X(GPRS_SM_MS_EV_RX_GMM_ESTABLISH_REJ) |
                        X(GPRS_SM_MS_EV_RX_ACT_PDP_CTX_REJ) |
-                       X(GPRS_SM_MS_EV_RX_ACT_PDP_CTX_ACC),
+                       X(GPRS_SM_MS_EV_RX_ACT_PDP_CTX_ACC) |
+                       X(GPRS_SM_MS_EV_NSAPI_ACTIVATED),
                .out_state_mask =
                        X(GPRS_SM_MS_ST_PDP_INACTIVE) |
                        X(GPRS_SM_MS_ST_PDP_ACTIVE_PENDING) |
@@ -225,6 +233,7 @@
        { GPRS_SM_MS_EV_TX_ACT_PDP_CTX_REQ,     "TX_ACT_PDP_CTX_REQ" },
        { GPRS_SM_MS_EV_RX_ACT_PDP_CTX_REJ,     "RX_ACT_PDP_CTX_REJ" },
        { GPRS_SM_MS_EV_RX_ACT_PDP_CTX_ACC,     "RX_ACT_PDP_CTX_ACC" },
+       { GPRS_SM_MS_EV_NSAPI_ACTIVATED,        "NSAPI_ACTIVATED" },
        { GPRS_SM_MS_EV_TX_DEACT_PDP_CTX_REQ,   "TX_DEACT_PDP_CTX_REQ" },
        { GPRS_SM_MS_EV_RX_DEACT_PDP_CTX_REQ,   "RX_DEACT_PDP_CTX_REQ" },
        { GPRS_SM_MS_EV_RX_DEACT_PDP_CTX_ACC,   "RX_DEACT_PDP_CTX_ACC" },
diff --git a/src/sm/sm_prim.c b/src/sm/sm_prim.c
index 33d15ba..6ec8af8 100644
--- a/src/sm/sm_prim.c
+++ b/src/sm/sm_prim.c
@@ -30,6 +30,7 @@
 #include <osmocom/gprs/sm/sm_prim.h>
 #include <osmocom/gprs/sm/sm_private.h>
 #include <osmocom/gprs/gmm/gmm_prim.h>
+#include <osmocom/gprs/sndcp/sndcp_prim.h>

 #define SM_MSGB_HEADROOM 0

@@ -72,6 +73,12 @@
        return 0;
 }

+static int sm_sndcp_up_cb_dummy(struct osmo_gprs_sndcp_prim *sndcp_prim, void 
*user_data)
+{
+       LOGSM(LOGL_INFO, "%s(%s)\n", __func__, 
osmo_gprs_sndcp_prim_name(sndcp_prim));
+       return 0;
+}
+
 static int sm_down_cb_dummy(struct osmo_gprs_sm_prim *sm_prim, void *user_data)
 {
        LOGSM(LOGL_INFO, "%s(%s)\n", __func__, osmo_gprs_sm_prim_name(sm_prim));
@@ -91,6 +98,13 @@
        g_sm_ctx->sm_up_cb_user_data = up_user_data;
 }

+/* Set callback used by SM layer to push primitives to SNDCP higher layer in 
protocol stack */
+void osmo_gprs_sm_prim_set_sndcp_up_cb(osmo_gprs_sm_prim_sndcp_up_cb 
sndcp_up_cb, void *sndcp_up_user_data)
+{
+       g_sm_ctx->sm_sndcp_up_cb = sndcp_up_cb;
+       g_sm_ctx->sm_sndcp_up_cb_user_data = sndcp_up_user_data;
+}
+
 /* Set callback used by SM layer to push primitives to lower layers in 
protocol stack */
 void osmo_gprs_sm_prim_set_down_cb(osmo_gprs_sm_prim_down_cb down_cb, void 
*down_user_data)
 {
@@ -186,6 +200,13 @@
        return -ENOTSUP;
 }

+static int gprs_sm_prim_handle_sndcp_unsupported(struct osmo_gprs_sndcp_prim 
*sndcp_prim)
+{
+       LOGSM(LOGL_ERROR, "Unsupported sndcp_prim! %s\n", 
osmo_gprs_sndcp_prim_name(sndcp_prim));
+       msgb_free(sndcp_prim->oph.msg);
+       return -ENOTSUP;
+}
+
 /********************************
  * Handling from/to upper layers:
  ********************************/
@@ -297,6 +318,93 @@
        return rc;
 }

+/* SM layer pushes SNDCP primitive up to higher layers (SNSM): */
+int gprs_sm_prim_call_sndcp_up_cb(struct osmo_gprs_sndcp_prim *sndcp_prim)
+{
+       int rc;
+       if (g_sm_ctx->sm_sndcp_up_cb)
+               rc = g_sm_ctx->sm_sndcp_up_cb(sndcp_prim, 
g_sm_ctx->sm_sndcp_up_cb_user_data);
+       else
+               rc = sm_sndcp_up_cb_dummy(sndcp_prim, 
g_sm_ctx->sm_sndcp_up_cb_user_data);
+       /* Special return value '1' means: do not free */
+       if (rc != 1)
+               msgb_free(sndcp_prim->oph.msg);
+       else
+               rc = 0;
+       return rc;
+}
+
+/* TS 24.007 6.6.1.1 SMREG-Attach.request:*/
+static int gprs_sm_prim_handle_snsm_act_resp(struct osmo_gprs_sndcp_prim 
*sndcp_prim)
+{
+       int rc;
+       struct gprs_sm_ms *ms;
+       struct gprs_sm_entity *sme;
+
+       ms = gprs_sm_find_ms_by_tlli(sndcp_prim->snsm.tlli);
+       if (!ms) {
+               LOGSM(LOGL_ERROR, "Rx %s: Unable to find MS with TLLI=0x%08x\n",
+                     osmo_gprs_sndcp_prim_name(sndcp_prim), 
sndcp_prim->snsm.tlli);
+               return -ENOENT;
+       }
+
+       sme = gprs_sm_ms_get_pdp_ctx(ms, sndcp_prim->snsm.activate_rsp.nsapi);
+       if (!sme) {
+               LOGMS(ms, LOGL_ERROR, "Rx %s: Unable to find NSAPI=%u\n",
+                     osmo_gprs_sndcp_prim_name(sndcp_prim),
+                     sndcp_prim->snsm.activate_rsp.nsapi);
+               return -ENOENT;
+       }
+
+       rc = osmo_fsm_inst_dispatch(sme->ms_fsm.fi, 
GPRS_SM_MS_EV_NSAPI_ACTIVATED, NULL);
+       return rc;
+}
+
+/* SNDCP higher layers push SNDCP primitive (SNSM) down to SM layer: */
+static int gprs_sm_prim_handle_sndcp_snsm(struct osmo_gprs_sndcp_prim 
*sndcp_prim)
+{
+       int rc;
+
+       switch (OSMO_PRIM_HDR(&sndcp_prim->oph)) {
+       case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_ACTIVATE, PRIM_OP_RESPONSE):
+               rc = gprs_sm_prim_handle_snsm_act_resp(sndcp_prim);
+               break;
+       case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_DEACTIVATE, PRIM_OP_RESPONSE):
+       case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_MODIFY, PRIM_OP_RESPONSE):
+       case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_STATUS, PRIM_OP_REQUEST):
+       case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_SEQUENCE, PRIM_OP_RESPONSE):
+       case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_STOP_ASSIGN, PRIM_OP_RESPONSE):
+       default:
+               rc = gprs_sm_prim_handle_sndcp_unsupported(sndcp_prim);
+       }
+       return rc;
+}
+
+/* SM higher layers push SM primitive down to SM layer: */
+int osmo_gprs_sm_prim_sndcp_upper_down(struct osmo_gprs_sndcp_prim *sndcp_prim)
+{
+       int rc;
+
+       LOGSM(LOGL_INFO, "Rx from SNDCP layer: %s\n", 
osmo_gprs_sndcp_prim_name(sndcp_prim));
+
+
+       switch (sndcp_prim->oph.sap) {
+       case OSMO_GPRS_SNDCP_SAP_SNSM:
+               rc = gprs_sm_prim_handle_sndcp_snsm(sndcp_prim);
+               break;
+       default:
+               rc = gprs_sm_prim_handle_sndcp_unsupported(sndcp_prim);
+               rc = 1;
+       }
+
+       /* Special return value '1' means: do not free */
+       if (rc != 1)
+               msgb_free(sndcp_prim->oph.msg);
+       else
+               rc = 0;
+       return rc;
+}
+
 /********************************
  * Handling from/to lower layers:
  ********************************/
diff --git a/tests/sm/Makefile.am b/tests/sm/Makefile.am
index f9df676..37d2497 100644
--- a/tests/sm/Makefile.am
+++ b/tests/sm/Makefile.am
@@ -26,6 +26,7 @@
 sm_prim_test_SOURCES = sm_prim_test.c
 sm_prim_test_LDADD = \
        $(top_builddir)/src/sm/libosmo-gprs-sm.la \
+       $(top_builddir)/src/sndcp/.libs/libosmo-gprs-sndcp.a \
        $(top_builddir)/src/gmm/.libs/libosmo-gprs-gmm.a \
        $(top_builddir)/src/llc/.libs/libosmo-gprs-llc.la \
        $(LIBOSMOGSM_LIBS) \
diff --git a/tests/sm/sm_prim_test.c b/tests/sm/sm_prim_test.c
index 5703985..35613e3 100644
--- a/tests/sm/sm_prim_test.c
+++ b/tests/sm/sm_prim_test.c
@@ -31,6 +31,8 @@

 #include <osmocom/gprs/gmm/gmm_prim.h>
 #include <osmocom/gprs/gmm/gmm_private.h>
+#include <osmocom/gprs/sndcp/sndcp_prim.h>
+#include <osmocom/gprs/sndcp/sndcp_private.h>
 #include <osmocom/gprs/sm/sm.h>
 #include <osmocom/gprs/sm/sm_prim.h>

@@ -140,6 +142,28 @@
        return 0;
 }

+int test_sm_prim_sndcp_up_cb(struct osmo_gprs_sndcp_prim *sndcp_prim, void 
*user_data)
+{
+       const char *pdu_name = osmo_gprs_sndcp_prim_name(sndcp_prim);
+
+       switch (sndcp_prim->oph.sap) {
+       case OSMO_GPRS_SNDCP_SAP_SNSM:
+               switch (OSMO_PRIM_HDR(&sndcp_prim->oph)) {
+               case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_ACTIVATE, 
PRIM_OP_INDICATION):
+                       printf("%s(): Rx %s\n", __func__, pdu_name);
+                       break;
+               default:
+                       printf("%s(): Unexpected Rx %s\n", __func__, pdu_name);
+                       OSMO_ASSERT(0)
+               }
+               break;
+       default:
+               printf("%s(): Unexpected Rx %s\n", __func__, pdu_name);
+               OSMO_ASSERT(0);
+       }
+       return 0;
+}
+
 int test_sm_prim_down_cb(struct osmo_gprs_sm_prim *sm_prim, void *user_data)
 {
        const char *pdu_name = osmo_gprs_sm_prim_name(sm_prim);
@@ -199,6 +223,7 @@
 {
        struct osmo_gprs_sm_prim *sm_prim;
        struct osmo_gprs_gmm_prim *gmm_prim;
+       struct osmo_gprs_sndcp_prim *sndcp_prim;
        int rc;
        uint8_t nsapi = 6;
        enum osmo_gprs_sm_llc_sapi llc_sapi = OSMO_GPRS_SM_LLC_SAPI_SAPI3;
@@ -217,6 +242,7 @@
        OSMO_ASSERT(rc == 0);

        osmo_gprs_sm_prim_set_up_cb(test_sm_prim_up_cb, NULL);
+       osmo_gprs_sm_prim_set_sndcp_up_cb(test_sm_prim_sndcp_up_cb, NULL);
        osmo_gprs_sm_prim_set_down_cb(test_sm_prim_down_cb, NULL);
        osmo_gprs_sm_prim_set_gmm_down_cb(test_sm_prim_gmm_down_cb, NULL);

@@ -254,6 +280,15 @@
        rc = osmo_gprs_sm_prim_gmm_lower_up(gmm_prim);
        OSMO_ASSERT(rc == 0);

+       /* SM layer will trigger SNSM-ACTIVATE.ind to SNDCP layer here. Now,
+       * SNDCP is expected to do XID config and once done, answer with
+       * SNSM-ACTIVATE.rsp: */
+
+       sndcp_prim = gprs_sndcp_prim_alloc_snsm_activate_rsp(ptmsi, nsapi);
+       OSMO_ASSERT(sndcp_prim);
+       rc = osmo_gprs_sm_prim_sndcp_upper_down(sndcp_prim);
+       OSMO_ASSERT(rc == 0);
+
        printf("==== %s() [end] ====\n", __func__);
 }

diff --git a/tests/sm/sm_prim_test.err b/tests/sm/sm_prim_test.err
index d9dc296..0961fc1 100644
--- a/tests/sm/sm_prim_test.err
+++ b/tests/sm/sm_prim_test.err
@@ -8,4 +8,6 @@
 DLGLOBAL INFO Rx from lower layers: GMMSM-UNITDATA.indication
 DLGLOBAL INFO PDP(ID-0:NSAPI-6) Rx SM Activate PDP Context Accept
 DLGLOBAL INFO SM_MS{PDP_ACTIVE_PENDING}: Received Event RX_ACT_PDP_CTX_ACC
+DLGLOBAL INFO Rx from SNDCP layer: SNSM-ACTIVATE.response
+DLGLOBAL INFO SM_MS{PDP_ACTIVE_PENDING}: Received Event NSAPI_ACTIVATED
 DLGLOBAL INFO SM_MS{PDP_ACTIVE_PENDING}: state_chg to PDP_ACTIVE
diff --git a/tests/sm/sm_prim_test.ok b/tests/sm/sm_prim_test.ok
index 82d4a97..6909031 100644
--- a/tests/sm/sm_prim_test.ok
+++ b/tests/sm/sm_prim_test.ok
@@ -1,5 +1,6 @@
 ==== test_sm_prim_ms() [start] ====
 test_sm_prim_gmm_down_cb(): Rx GMMSM-ESTABLISH.request sess_id=0
 test_sm_prim_gmm_down_cb(): Rx GMMSM-UNITDATA.request sess_id=0 SMPDU=[8a 41 
06 03 01 00 06 10 21 00 00 00 00 28 04 27 01 00 ]
+test_sm_prim_sndcp_up_cb(): Rx SNSM-ACTIVATE.indication
 test_sm_prim_up_cb(): Rx SMREG-PDP_ACTIVATE.confirm
 ==== test_sm_prim_ms() [end] ====

--
To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32295
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-gprs
Gerrit-Branch: master
Gerrit-Change-Id: Ic5525bfa92e2591757d999610c0d59849d022d8d
Gerrit-Change-Number: 32295
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to