pespin submitted this change.

View Change


Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
gmm: Implement GMMR-PAGE.ind

Submit an LLGM-TRIGGER.req as described in TS 24.007 C.13.

Change-Id: Iba77b4a5280ce08f099f4e15934fa92d4ba8ba10
---
M src/gmm/gmm_prim.c
M tests/gmm/gmm_prim_test.c
M tests/gmm/gmm_prim_test.err
M tests/gmm/gmm_prim_test.ok
4 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/src/gmm/gmm_prim.c b/src/gmm/gmm_prim.c
index 34c9fe9..b6d8dac 100644
--- a/src/gmm/gmm_prim.c
+++ b/src/gmm/gmm_prim.c
@@ -603,6 +603,27 @@
return rc;
}

+static int gprs_gmm_prim_handle_gmmrr_page_ind(struct osmo_gprs_gmm_prim *gmm_prim)
+{
+ struct osmo_gprs_llc_prim *llc_prim_tx;
+ int rc;
+ struct gprs_gmm_entity *gmme;
+
+ if (!(gmme = gprs_gmm_find_gmme_by_tlli(gmm_prim->gmmrr.tlli))) {
+ LOGGMM(LOGL_NOTICE, "Rx %s: Unknown TLLI 0x%08x\n",
+ osmo_gprs_gmm_prim_name(gmm_prim), gmm_prim->gmmrr.tlli);
+ return -ENOENT;
+ }
+
+ /* TS 24.007 C.13: restart READY timer, submit LLGM-TRIGGER.req */
+ gprs_gmm_gmme_ready_timer_start(gmme);
+
+ llc_prim_tx = osmo_gprs_llc_prim_alloc_llgmm_trigger_req(gmme->tlli, OSMO_GPRS_LLC_LLGM_TRIGGER_PAGE_RESP);
+
+ rc = gprs_gmm_prim_call_llc_down_cb(llc_prim_tx);
+ return rc;
+}
+
static int gprs_gmm_prim_handle_gmmrr_llc_transmitted_ind(struct osmo_gprs_gmm_prim *gmm_prim)
{
struct gprs_gmm_entity *gmme = gprs_gmm_find_gmme_by_tlli(gmm_prim->gmmrr.tlli);
@@ -620,8 +641,7 @@
int rc = 0;
switch (OSMO_PRIM_HDR(&gmm_prim->oph)) {
case OSMO_PRIM(OSMO_GPRS_GMM_GMMRR_PAGE, PRIM_OP_INDICATION):
- rc = gprs_gmm_prim_handle_unsupported(gmm_prim);
- rc = 1;
+ rc = gprs_gmm_prim_handle_gmmrr_page_ind(gmm_prim);
break;
case OSMO_PRIM(OSMO_GPRS_GMM_GMMRR_LLC_TRANSMITTED, PRIM_OP_INDICATION):
rc = gprs_gmm_prim_handle_gmmrr_llc_transmitted_ind(gmm_prim);
diff --git a/tests/gmm/gmm_prim_test.c b/tests/gmm/gmm_prim_test.c
index 7eefc73..89f621c 100644
--- a/tests/gmm/gmm_prim_test.c
+++ b/tests/gmm/gmm_prim_test.c
@@ -458,6 +458,14 @@

/* ... */

+ /* Test PS paging request arriving from CCCH (RR): */
+ gmm_prim = osmo_gprs_gmm_prim_alloc_gmmrr_page_ind(tlli);
+ OSMO_ASSERT(gmm_prim);
+ rc = osmo_gprs_gmm_prim_lower_up(gmm_prim);
+ OSMO_ASSERT(rc == 0);
+
+ /* ... */
+
/* DETACH */
gmm_prim = osmo_gprs_gmm_prim_alloc_gmmreg_detach_req();
OSMO_ASSERT(gmm_prim);
diff --git a/tests/gmm/gmm_prim_test.err b/tests/gmm/gmm_prim_test.err
index 6720d69..dea0ca7 100644
--- a/tests/gmm/gmm_prim_test.err
+++ b/tests/gmm/gmm_prim_test.err
@@ -37,6 +37,8 @@
DLGLOBAL INFO GMME(IMSI-1234567890:PTMSI-ec999002:TLLI-ec999002) READY timer started (expires in 10 seconds)
DLGLOBAL INFO GMM_MS{RAUInitidated}: Received Event RAU_ACCEPTED
DLGLOBAL INFO GMM_MS{RAUInitidated}: state_chg to Registered
+DLGLOBAL INFO Rx from lower layers: GMRR-PAGE.indication
+DLGLOBAL INFO GMME(IMSI-1234567890:PTMSI-ec999002:TLLI-ec999002) READY timer started (expires in 10 seconds)
DLGLOBAL INFO Rx from upper layers: GMMREG-DETACH.request
DLGLOBAL INFO GMM_MS{Registered}: Received Event DETACH_REQUESTED
DLGLOBAL INFO GMM_MS{Registered}: state_chg to DeregisteredInitiated
diff --git a/tests/gmm/gmm_prim_test.ok b/tests/gmm/gmm_prim_test.ok
index 870d58f..6cf672a 100644
--- a/tests/gmm/gmm_prim_test.ok
+++ b/tests/gmm/gmm_prim_test.ok
@@ -19,6 +19,7 @@
test_gmm_prim_down_cb(): Rx GMRR-ASSIGN.request old_tlli=0xea711b41 new_tlli=0xec999002
test_gmm_prim_llc_down_cb(): Rx LL-UNITDATA.request TLLI=0xec999002 SAPI=GMM l3=[08 0a ]
test_gmm_prim_llc_down_cb(): Rx LLGMM-RESUME.request TLLI=0xec999002
+test_gmm_prim_llc_down_cb(): Rx LLGMM-TRIGGER.request TLLI=0xec999002
test_gmm_prim_llc_down_cb(): Rx LL-UNITDATA.request TLLI=0xec999002 SAPI=GMM l3=[08 05 20 0a 00 05 f4 ec 99 90 02 ]
test_gmm_prim_llc_down_cb(): Rx LLGMM-ASSIGN.request old_TLLI=0xec999002 new_TLLI=0xffffffff
test_gmm_prim_up_cb(): Rx GMMREG-DETACH.confirm detach_type='GPRS detach'

To view, visit change 32982. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: libosmo-gprs
Gerrit-Branch: master
Gerrit-Change-Id: Iba77b4a5280ce08f099f4e15934fa92d4ba8ba10
Gerrit-Change-Number: 32982
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged