gmm: Implement GMMR-PAGE.ind
Submit an LLGM-TRIGGER.req as described in TS 24.007 C.13. Change-Id: Iba77b4a5280ce08f099f4e15934fa92d4ba8ba10
This commit is contained in:
parent
8700df25d7
commit
c9f5abdbff
|
@ -603,6 +603,27 @@ int gprs_gmm_prim_call_down_cb(struct osmo_gprs_gmm_prim *gmm_prim)
|
|||
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 @@ static int gprs_gmm_prim_handle_gmmrr(struct osmo_gprs_gmm_prim *gmm_prim)
|
|||
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);
|
||||
|
|
|
@ -458,6 +458,14 @@ static void test_gmm_prim_ms_gmmreg(void)
|
|||
|
||||
/* ... */
|
||||
|
||||
/* 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);
|
||||
|
|
|
@ -37,6 +37,8 @@ DLGLOBAL INFO Rx from lower layers: GMRR-LLC_TRANSMITTED.indication
|
|||
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
|
||||
|
|
|
@ -19,6 +19,7 @@ test_gmm_prim_llc_down_cb(): Rx LLGMM-ASSIGN.request old_TLLI=0xea711b41 new_TLL
|
|||
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'
|
||||
|
|
Loading…
Reference in New Issue