pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/32296 )

Change subject: layer23: modem: Forward SNSM primitives SNDCP<->SM layers
......................................................................

layer23: modem: Forward SNSM primitives SNDCP<->SM layers

Related: OS#5501
Depends: libosmo-gprs.git Change-Id Ic5525bfa92e2591757d999610c0d59849d022d8d
Change-Id: Iad63f41557fbd078588dd890e2f18ed9606a25f7
---
M src/host/layer23/src/modem/sm.c
M src/host/layer23/src/modem/sndcp.c
2 files changed, 51 insertions(+), 2 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved




diff --git a/src/host/layer23/src/modem/sm.c b/src/host/layer23/src/modem/sm.c
index 5dc80e0..67fdc49 100644
--- a/src/host/layer23/src/modem/sm.c
+++ b/src/host/layer23/src/modem/sm.c
@@ -34,6 +34,8 @@

 #include <osmocom/gprs/gmm/gmm.h>
 #include <osmocom/gprs/gmm/gmm_prim.h>
+#include <osmocom/gprs/sndcp/sndcp.h>
+#include <osmocom/gprs/sndcp/sndcp_prim.h>
 #include <osmocom/gprs/sm/sm_prim.h>
 #include <osmocom/gprs/sm/sm.h>
 #include <osmocom/gprs/rlcmac/rlcmac_prim.h>
@@ -78,6 +80,30 @@
        return rc;
 }

+int modem_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);
+       int rc;
+
+       switch (sndcp_prim->oph.sap) {
+       case OSMO_GPRS_SNDCP_SAP_SNSM:
+               switch (OSMO_PRIM_HDR(&sndcp_prim->oph)) {
+               case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_ACTIVATE, 
PRIM_OP_INDICATION):
+                       LOGP(DSM, LOGL_INFO, "%s(): Rx %s\n", __func__, 
pdu_name);
+                       rc = osmo_gprs_sndcp_prim_dispatch_snsm(sndcp_prim);
+                       break;
+               default:
+                       LOGP(DSM, LOGL_ERROR, "%s(): Unexpected Rx %s\n", 
__func__, pdu_name);
+                       OSMO_ASSERT(0);
+               }
+               break;
+       default:
+               LOGP(DSM, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, 
pdu_name);
+               OSMO_ASSERT(0);
+       }
+       return rc;
+}
+
 static int modem_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);
@@ -113,6 +139,7 @@
        osmo_gprs_sm_set_log_cat(OSMO_GPRS_SM_LOGC_SM, DSM);

        osmo_gprs_sm_prim_set_up_cb(modem_sm_prim_up_cb, ms);
+       osmo_gprs_sm_prim_set_sndcp_up_cb(modem_sm_prim_sndcp_up_cb, ms);
        osmo_gprs_sm_prim_set_down_cb(modem_sm_prim_down_cb, ms);
        osmo_gprs_sm_prim_set_gmm_down_cb(modem_sm_prim_gmm_down_cb, ms);

diff --git a/src/host/layer23/src/modem/sndcp.c 
b/src/host/layer23/src/modem/sndcp.c
index f8710ec..00c21bc 100644
--- a/src/host/layer23/src/modem/sndcp.c
+++ b/src/host/layer23/src/modem/sndcp.c
@@ -33,6 +33,8 @@

 #include <osmocom/gprs/llc/llc.h>
 #include <osmocom/gprs/llc/llc_prim.h>
+#include <osmocom/gprs/sm/sm_prim.h>
+#include <osmocom/gprs/sm/sm.h>
 #include <osmocom/gprs/sndcp/sndcp_prim.h>
 #include <osmocom/gprs/sndcp/sndcp.h>

@@ -132,14 +134,23 @@
 static int modem_sndcp_prim_snsm_cb(struct osmo_gprs_sndcp_prim *sndcp_prim, 
void *user_data)
 {
        const char *npdu_name = osmo_gprs_sndcp_prim_name(sndcp_prim);
+       int rc = 0;

        if (sndcp_prim->oph.sap != OSMO_GPRS_SNDCP_SAP_SNSM) {
                LOGP(DSNDCP, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, 
npdu_name);
                OSMO_ASSERT(0);
        }

-       LOGP(DSNDCP, LOGL_ERROR, "%s(): Rx %s UNIMPLEMENTED\n", __func__, 
npdu_name);
-       return 0;
+       switch (OSMO_PRIM_HDR(&sndcp_prim->oph)) {
+       case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_ACTIVATE, PRIM_OP_RESPONSE):
+               LOGP(DSNDCP, LOGL_INFO, "%s(): Rx %s\n", __func__, npdu_name);
+               rc = osmo_gprs_sm_prim_sndcp_upper_down(sndcp_prim);
+               break;
+       default:
+               LOGP(DSNDCP, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, 
npdu_name);
+               OSMO_ASSERT(0);
+       }
+       return rc;
 }



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

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: Iad63f41557fbd078588dd890e2f18ed9606a25f7
Gerrit-Change-Number: 32296
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to