Paging rollback

This commit is contained in:
Sukchan Lee 2019-07-08 21:44:03 +09:00
parent 979fd96a84
commit 40ae23aca4
1 changed files with 16 additions and 37 deletions

View File

@ -298,15 +298,15 @@ void s1ap_send_paging(mme_ue_t *mme_ue, S1AP_CNDomain_t cn_domain)
if (memcmp(&enb->supported_ta_list[i], &mme_ue->tai,
sizeof(tai_t)) == 0) {
/* Build S1AP Paging message */
rv = s1ap_build_paging(&s1apbuf, mme_ue, cn_domain);
ogs_assert(rv == OGS_OK && s1apbuf);
if (mme_ue->last_paging_msg) {
s1apbuf = mme_ue->last_paging_msg;
} else {
rv = s1ap_build_paging(&s1apbuf, mme_ue, cn_domain);
ogs_assert(rv == OGS_OK && s1apbuf);
}
/* Save it for later use */
ogs_assert(mme_ue->last_paging_msg == NULL);
mme_ue->last_paging_msg = ogs_pkbuf_copy(s1apbuf);
/* Send to enb */
rv = s1ap_send_to_enb(enb, s1apbuf, S1AP_NON_UE_SIGNALLING);
ogs_assert(rv == OGS_OK);
}
@ -322,40 +322,19 @@ void s1ap_t3413_timeout(void *data)
mme_ue_t *mme_ue = data;
ogs_assert(mme_ue);
if (mme_ue->max_paging_retry < MAX_NUM_OF_PAGING) {
ogs_pkbuf_t *s1apbuf = NULL;
mme_enb_t *enb = NULL;
int i;
int rv;
/* Find enB with matched TAI */
ogs_list_for_each(&mme_self()->enb_list, enb) {
for (i = 0; i < enb->num_of_supported_ta_list; i++) {
if (memcmp(&enb->supported_ta_list[i], &mme_ue->tai,
sizeof(tai_t)) == 0) {
/* Save it for later use */
ogs_assert(mme_ue->last_paging_msg);
s1apbuf = mme_ue->last_paging_msg;
mme_ue->last_paging_msg = ogs_pkbuf_copy(s1apbuf);
/* Send to enb */
rv = s1ap_send_to_enb(enb, s1apbuf, S1AP_NON_UE_SIGNALLING);
ogs_assert(rv == OGS_OK);
}
}
}
/* Start T3413 */
ogs_timer_start(mme_ue->t3413, mme_self()->t3413_value);
mme_ue->max_paging_retry++;
} else {
if (mme_ue->max_paging_retry >= MAX_NUM_OF_PAGING) {
/* Paging failed */
ogs_warn("[EMM] Paging to IMSI[%s] failed. Stop paging",
mme_ue->imsi_bcd);
CLEAR_PAGING_INFO(mme_ue);
if (mme_ue->last_paging_msg) {
ogs_pkbuf_free(mme_ue->last_paging_msg);
mme_ue->last_paging_msg = NULL;
}
} else {
mme_ue->max_paging_retry++;
/* If t3413 is timeout, last_paging_msg is used.
* We don't have to set CNDomain. So, we just set CNDomain to 0 */
s1ap_send_paging(mme_ue, 0);
}
}