[M] Change in osmocom-bb[master]: layer23: modem: Forward SNSM primitives SNDCP<->SM layers
pespin has uploaded this change for review. ( 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, 50 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/96/32296/1 diff --git a/src/host/layer23/src/modem/sm.c b/src/host/layer23/src/modem/sm.c index 5dc80e0..376910a 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_SM_SMREG_PDP_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 ee5380f..e99c096 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,13 +134,22 @@ 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; 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); + 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 0; } -- 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: 1 Gerrit-Owner: pespin <pespin@sysmocom.de> Gerrit-MessageType: newchange
participants (1)
-
pespin