laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-sgsn/+/40811?usp=email )
Change subject: routing area: prefix GERAN functions with geran ...................................................................... routing area: prefix GERAN functions with geran Make it easier to understand the purpose of the functions. Change-Id: Ic616bd8f9afe6cd3702cd4af08706b7b36987f42 --- M include/osmocom/sgsn/gprs_routing_area.h M src/sgsn/gprs_bssgp.c M src/sgsn/gprs_ns.c M src/sgsn/gprs_routing_area.c M tests/gprs_routing_area/gprs_routing_area_test.c 5 files changed, 60 insertions(+), 61 deletions(-) Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/sgsn/gprs_routing_area.h b/include/osmocom/sgsn/gprs_routing_area.h index 2626216..a807227 100644 --- a/include/osmocom/sgsn/gprs_routing_area.h +++ b/include/osmocom/sgsn/gprs_routing_area.h @@ -88,27 +88,29 @@ struct sgsn_ra *sgsn_ra_alloc(const struct osmo_routing_area_id *rai, enum sgsn_ra_ran_type ran_type); struct sgsn_ra *sgsn_ra_find_or_create(const struct osmo_routing_area_id *rai, enum sgsn_ra_ran_type ran_type); +struct sgsn_ra *sgsn_ra_get_ra(const struct osmo_routing_area_id *rai); void sgsn_ra_free(struct sgsn_ra *ra); struct sgsn_ra_cell *sgsn_ra_cell_alloc_geran(struct sgsn_ra *ra, uint16_t cell_id, uint16_t nsei, uint16_t bvci); void sgsn_ra_cell_free(struct sgsn_ra_cell *cell); /* GERAN */ /* Called by BSSGP layer to inform about a reset on a PtP BVCI */ -int sgsn_ra_bvc_cell_reset_ind(uint16_t nsei, uint16_t bvci, struct osmo_cell_global_id_ps *cgi_ps); +int sgsn_ra_geran_bvc_cell_reset_ind(uint16_t nsei, uint16_t bvci, struct osmo_cell_global_id_ps *cgi_ps); /* Called by BSSGP layer to inform about a reset on a Signal BVCI */ -void sgsn_ra_bvc_sign_reset_ind(uint16_t nsei); +void sgsn_ra_geran_bvc_sign_reset_ind(uint16_t nsei); /* FIXME: handle BVC BLOCK/UNBLOCK/UNAVAILABLE */ /* Called by NS-VC layer to inform about an unavailable NSEI (and all BVCI on them) */ -int sgsn_ra_nsei_failure_ind(uint16_t nsei); +int sgsn_ra_geran_nsei_failure_ind(uint16_t nsei); -struct sgsn_ra_cell *sgsn_ra_get_cell_by_cgi_ps(const struct osmo_cell_global_id_ps *cgi_ps); -struct sgsn_ra_cell *sgsn_ra_get_cell_by_lai(const struct osmo_location_area_id *lai, uint16_t cell_id); -struct sgsn_ra_cell *sgsn_ra_get_cell_by_cgi(const struct osmo_cell_global_id *cgi); -struct sgsn_ra_cell *sgsn_ra_get_cell_by_ra(const struct sgsn_ra *ra, uint16_t cell_id); -struct sgsn_ra_cell *sgsn_ra_get_cell_by_gb(uint16_t nsei, uint16_t bvci); -struct sgsn_ra *sgsn_ra_get_ra(const struct osmo_routing_area_id *rai); -struct sgsn_ra *sgsn_ra_get_ra_geran(const struct osmo_routing_area_id *rai); +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_cgi_ps(const struct osmo_cell_global_id_ps *cgi_ps); +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_lai(const struct osmo_location_area_id *lai, uint16_t cell_id); +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_cgi(const struct osmo_cell_global_id *cgi); +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_ra(const struct sgsn_ra *ra, uint16_t cell_id); +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_gb(uint16_t nsei, uint16_t bvci); +struct sgsn_ra *sgsn_ra_geran_get_ra(const struct osmo_routing_area_id *rai); +/* Page the whole routing area for this mmctx */ +int sgsn_ra_geran_page_ra(const struct osmo_routing_area_id *rai, struct sgsn_mm_ctx *mmctx); /* * return value for callbacks. @@ -123,6 +125,3 @@ typedef int (sgsn_ra_cb_t)(struct sgsn_ra_cell *ra_cell, void *cb_data); int sgsn_ra_foreach_cell(struct sgsn_ra *ra, sgsn_ra_cb_t *cb, void *cb_data); int sgsn_ra_foreach_cell2(struct osmo_routing_area_id *rai, sgsn_ra_cb_t *cb, void *cb_data); - -/* Page the whole routing area for this mmctx */ -int sgsn_ra_geran_page_ra(const struct osmo_routing_area_id *rai, struct sgsn_mm_ctx *mmctx); diff --git a/src/sgsn/gprs_bssgp.c b/src/sgsn/gprs_bssgp.c index 42cd073..c64e790 100644 --- a/src/sgsn/gprs_bssgp.c +++ b/src/sgsn/gprs_bssgp.c @@ -44,7 +44,7 @@ * PtP BVCI: BVCI != 0, CGI-PS */ if (bp->bvci == 0) { - sgsn_ra_bvc_sign_reset_ind(bp->nsei); + sgsn_ra_geran_bvc_sign_reset_ind(bp->nsei); return 0; } @@ -55,7 +55,7 @@ return -EINVAL; bssgp_parse_cell_id2(&cgi_ps.rai, &cgi_ps.cell_identity, TLVP_VAL(bp->tp, BSSGP_IE_CELL_ID), 8); - return sgsn_ra_bvc_cell_reset_ind(bp->nsei, bp->bvci, &cgi_ps); + return sgsn_ra_geran_bvc_cell_reset_ind(bp->nsei, bp->bvci, &cgi_ps); } /* call-back function for the BSSGP protocol */ diff --git a/src/sgsn/gprs_ns.c b/src/sgsn/gprs_ns.c index 3968128..d38de37 100644 --- a/src/sgsn/gprs_ns.c +++ b/src/sgsn/gprs_ns.c @@ -53,7 +53,7 @@ break; case GPRS_NS2_AFF_CAUSE_FAILURE: LOGP(DGPRS, LOGL_NOTICE, "NS-E %d became unavailable\n", nsp->nsei); - sgsn_ra_nsei_failure_ind(nsp->nsei); + sgsn_ra_geran_nsei_failure_ind(nsp->nsei); break; default: LOGP(DGPRS, LOGL_NOTICE, "NS: %s Unknown prim %d from NS\n", diff --git a/src/sgsn/gprs_routing_area.c b/src/sgsn/gprs_routing_area.c index dae18cd..721f0c9 100644 --- a/src/sgsn/gprs_routing_area.c +++ b/src/sgsn/gprs_routing_area.c @@ -143,7 +143,7 @@ return NULL; } -struct sgsn_ra *sgsn_ra_get_ra_geran(const struct osmo_routing_area_id *rai) +struct sgsn_ra *sgsn_ra_geran_get_ra(const struct osmo_routing_area_id *rai) { struct sgsn_ra *ra = sgsn_ra_get_ra(rai); @@ -156,7 +156,7 @@ return NULL; } -struct sgsn_ra_cell *sgsn_ra_get_cell_by_gb(uint16_t nsei, uint16_t bvci) +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_gb(uint16_t nsei, uint16_t bvci) { struct sgsn_ra *ra; struct sgsn_ra_cell *cell; @@ -219,7 +219,7 @@ } /* valid for GERAN */ -struct sgsn_ra_cell *sgsn_ra_get_cell_by_ra(const struct sgsn_ra *ra, uint16_t cell_id) +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_ra(const struct sgsn_ra *ra, uint16_t cell_id) { struct sgsn_ra_cell *cell; @@ -238,7 +238,7 @@ } /* valid for GERAN */ -struct sgsn_ra_cell *sgsn_ra_get_cell_by_lai(const struct osmo_location_area_id *lai, uint16_t cell_id) +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_lai(const struct osmo_location_area_id *lai, uint16_t cell_id) { struct sgsn_ra *ra; struct sgsn_ra_cell *cell; @@ -269,24 +269,24 @@ * \param cgi_ps * \return the cell or NULL if not found */ -struct sgsn_ra_cell *sgsn_ra_get_cell_by_cgi_ps(const struct osmo_cell_global_id_ps *cgi_ps) +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_cgi_ps(const struct osmo_cell_global_id_ps *cgi_ps) { struct sgsn_ra *ra; OSMO_ASSERT(cgi_ps); - ra = sgsn_ra_get_ra_geran(&cgi_ps->rai); + ra = sgsn_ra_geran_get_ra(&cgi_ps->rai); if (!ra) return NULL; - return sgsn_ra_get_cell_by_ra(ra, cgi_ps->cell_identity); + return sgsn_ra_geran_get_cell_by_ra(ra, cgi_ps->cell_identity); } -struct sgsn_ra_cell *sgsn_ra_get_cell_by_cgi(const struct osmo_cell_global_id *cgi) +struct sgsn_ra_cell *sgsn_ra_geran_get_cell_by_cgi(const struct osmo_cell_global_id *cgi) { OSMO_ASSERT(cgi); - return sgsn_ra_get_cell_by_lai(&cgi->lai, cgi->cell_identity); + return sgsn_ra_geran_get_cell_by_lai(&cgi->lai, cgi->cell_identity); } /*! Callback from the BSSGP layer on NM RESET IND for a cell (PtP BVCI). @@ -296,7 +296,7 @@ * \param cgi_ps * \return 0 on success or -ENOMEM */ -int sgsn_ra_bvc_cell_reset_ind(uint16_t nsei, uint16_t bvci, struct osmo_cell_global_id_ps *cgi_ps) +int sgsn_ra_geran_bvc_cell_reset_ind(uint16_t nsei, uint16_t bvci, struct osmo_cell_global_id_ps *cgi_ps) { struct sgsn_ra *ra; struct sgsn_ra_cell *cell; @@ -304,7 +304,7 @@ OSMO_ASSERT(cgi_ps); /* TODO: do we have to move all MS to GMM IDLE state when this happens for a alive cell which got reseted? */ - ra = sgsn_ra_get_ra_geran(&cgi_ps->rai); + ra = sgsn_ra_geran_get_ra(&cgi_ps->rai); if (!ra) { /* TODO: check for UTRAN rai when introducing UTRAN support */ ra = sgsn_ra_find_or_create(&cgi_ps->rai, RA_TYPE_GERAN_Gb); @@ -314,7 +314,7 @@ } if (!ra_created) { - cell = sgsn_ra_get_cell_by_ra(ra, cgi_ps->cell_identity); + cell = sgsn_ra_geran_get_cell_by_ra(ra, cgi_ps->cell_identity); if (cell && cell->ran_type == RA_TYPE_GERAN_Gb) { /* Cell already exist, update NSEI/BVCI */ if (cell->u.geran.bvci != bvci || cell->u.geran.nsei != nsei) { @@ -338,7 +338,7 @@ char new_ra[32]; /* check for the same cell id within the location area. The cell id is also unique for the cell within the LAC * This should only happen when a Cell is changing routing areas */ - cell = sgsn_ra_get_cell_by_lai(&cgi_ps->rai.lac, cgi_ps->cell_identity); + cell = sgsn_ra_geran_get_cell_by_lai(&cgi_ps->rai.lac, cgi_ps->cell_identity); if (cell) { LOGRAI(LOGL_INFO, &cgi_ps->rai, "CGI %s: changed Routing Area. Old: %s, New: %s\n", osmo_cgi_ps_name(cgi_ps), @@ -364,7 +364,7 @@ } /* FIXME: call it on BSSGP BLOCK + unavailable with BVCI */ -int sgsn_ra_nsei_failure_ind(uint16_t nsei) +int sgsn_ra_geran_nsei_failure_ind(uint16_t nsei) { struct sgsn_ra *ra, *ra2; struct sgsn_ra_cell *cell, *cell2; @@ -391,9 +391,9 @@ return found ? 0 : -ENOENT; } -void sgsn_ra_bvc_sign_reset_ind(uint16_t nsei) +void sgsn_ra_geran_bvc_sign_reset_ind(uint16_t nsei) { - sgsn_ra_nsei_failure_ind(nsei); + sgsn_ra_geran_nsei_failure_ind(nsei); } int sgsn_ra_geran_page_ra(const struct osmo_routing_area_id *rai, struct sgsn_mm_ctx *mmctx) @@ -404,7 +404,7 @@ rate_ctr_inc(rate_ctr_group_get_ctr(mmctx->ctrg, GMM_CTR_PAGING_PS)); - ra = sgsn_ra_get_ra_geran(rai); + ra = sgsn_ra_geran_get_ra(rai); if (!ra) return -ENOENT; diff --git a/tests/gprs_routing_area/gprs_routing_area_test.c b/tests/gprs_routing_area/gprs_routing_area_test.c index d8ff07f..b9840b9 100644 --- a/tests/gprs_routing_area/gprs_routing_area_test.c +++ b/tests/gprs_routing_area/gprs_routing_area_test.c @@ -171,19 +171,19 @@ OSMO_ASSERT(cell_a); OSMO_ASSERT(llist_count(&sgsn->routing_area->ra_list) == 1); - cell_b = sgsn_ra_get_cell_by_cgi_ps(&cgi_ps); + cell_b = sgsn_ra_geran_get_cell_by_cgi_ps(&cgi_ps); OSMO_ASSERT(cell_b); OSMO_ASSERT(cell_b == cell_a); - cell_b = sgsn_ra_get_cell_by_ra(ra_a, cgi.cell_identity); + cell_b = sgsn_ra_geran_get_cell_by_ra(ra_a, cgi.cell_identity); OSMO_ASSERT(cell_b); OSMO_ASSERT(cell_b == cell_a); - cell_b = sgsn_ra_get_cell_by_cgi(&cgi); + cell_b = sgsn_ra_geran_get_cell_by_cgi(&cgi); OSMO_ASSERT(cell_b); OSMO_ASSERT(cell_b == cell_a); - cell_b = sgsn_ra_get_cell_by_lai(&cgi.lai, cgi.cell_identity); + cell_b = sgsn_ra_geran_get_cell_by_lai(&cgi.lai, cgi.cell_identity); OSMO_ASSERT(cell_b); OSMO_ASSERT(cell_b == cell_a); @@ -202,23 +202,23 @@ OSMO_ASSERT(cell_a); OSMO_ASSERT(llist_count(&sgsn->routing_area->ra_list) == 1); - cell_b = sgsn_ra_get_cell_by_cgi_ps(&cgi_ps); + cell_b = sgsn_ra_geran_get_cell_by_cgi_ps(&cgi_ps); OSMO_ASSERT(!cell_b); - cell_b = sgsn_ra_get_cell_by_ra(ra_a, cgi_ps.cell_identity); + cell_b = sgsn_ra_geran_get_cell_by_ra(ra_a, cgi_ps.cell_identity); OSMO_ASSERT(!cell_b); - cell_b = sgsn_ra_get_cell_by_cgi(&cgi); + cell_b = sgsn_ra_geran_get_cell_by_cgi(&cgi); OSMO_ASSERT(!cell_b); - cell_b = sgsn_ra_get_cell_by_lai(&cgi.lai, cgi.cell_identity); + cell_b = sgsn_ra_geran_get_cell_by_lai(&cgi.lai, cgi.cell_identity); OSMO_ASSERT(!cell_b); /* try to find for a different RAC */ cgi_ps.rai.rac = 45; rai.rac = 46; - cell_b = sgsn_ra_get_cell_by_cgi_ps(&cgi_ps); + cell_b = sgsn_ra_geran_get_cell_by_cgi_ps(&cgi_ps); OSMO_ASSERT(!cell_b); ra_b = sgsn_ra_get_ra(&rai); @@ -226,7 +226,7 @@ /* try to find for different LAC */ cgi.lai.lac = 46; - cell_b = sgsn_ra_get_cell_by_cgi(&cgi); + cell_b = sgsn_ra_geran_get_cell_by_cgi(&cgi); OSMO_ASSERT(!cell_b); sgsn_ra_free(ra_a); @@ -268,24 +268,24 @@ OSMO_ASSERT(llist_count(&sgsn->routing_area->ra_list) == 1); OSMO_ASSERT(llist_count(&ra_a->cells_alive_list) == 0); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); OSMO_ASSERT(rc == 0); OSMO_ASSERT(llist_count(&ra_a->cells_alive_list) == 1); - cell_a = sgsn_ra_get_cell_by_cgi(&cgi); + cell_a = sgsn_ra_geran_get_cell_by_cgi(&cgi); OSMO_ASSERT(cell_a); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); OSMO_ASSERT(rc == 0); - cell_b = sgsn_ra_get_cell_by_cgi(&cgi); + cell_b = sgsn_ra_geran_get_cell_by_cgi(&cgi); OSMO_ASSERT(cell_b); OSMO_ASSERT(cell_a == cell_b); sgsn_ra_free(ra_a); OSMO_ASSERT(llist_empty(&sgsn->routing_area->ra_list)); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); OSMO_ASSERT(rc == 0); OSMO_ASSERT(llist_count(&sgsn->routing_area->ra_list) == 1); @@ -320,17 +320,17 @@ sgsn = sgsn_instance_alloc(tall_sgsn_ctx); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); OSMO_ASSERT(rc == 0); ra_a = sgsn_ra_get_ra(&cgi_ps.rai); OSMO_ASSERT(llist_count(&ra_a->cells_alive_list) == 1); - rc = sgsn_ra_nsei_failure_ind(nsei); + rc = sgsn_ra_geran_nsei_failure_ind(nsei); OSMO_ASSERT(rc == 0); OSMO_ASSERT(llist_empty(&sgsn->routing_area->ra_list)); - rc = sgsn_ra_nsei_failure_ind(nsei); + rc = sgsn_ra_geran_nsei_failure_ind(nsei); OSMO_ASSERT(rc == -ENOENT); OSMO_ASSERT(llist_empty(&sgsn->routing_area->ra_list)); @@ -402,11 +402,11 @@ g_paging[0].valid = true; g_paging[0].paged = false; - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); OSMO_ASSERT(rc == 0); cgi_ps.cell_identity++; - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci+1, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci+1, &cgi_ps); OSMO_ASSERT(rc == 0); g_paging[1].bvci = bvci+1; @@ -450,13 +450,13 @@ printf("Testing Routing Area GERAN BVCI Signalling Reset Ind\n"); printf(" Registering GERAN RA/cell via BVCI 5/BVC Reset Ind\n"); - sgsn_ra_bvc_sign_reset_ind(nsei); + sgsn_ra_geran_bvc_sign_reset_ind(nsei); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci, &cgi_ps); OSMO_ASSERT(rc == 0); printf(" Checking cell on BVCI 5\n"); - cell = sgsn_ra_get_cell_by_cgi_ps(&cgi_ps); + cell = sgsn_ra_geran_get_cell_by_cgi_ps(&cgi_ps); OSMO_ASSERT(cell); OSMO_ASSERT(cell->ran_type == RA_TYPE_GERAN_Gb); OSMO_ASSERT(cell->u.geran.bvci == bvci); @@ -468,7 +468,7 @@ OSMO_ASSERT(llist_count(&cell->ra->cells_alive_list) == 1); printf(" Drop all cells via BVC Reset Ind on Signalling BVCI\n"); - sgsn_ra_bvc_sign_reset_ind(nsei); + sgsn_ra_geran_bvc_sign_reset_ind(nsei); printf(" Ensure only 0 RAs are present\n"); OSMO_ASSERT(llist_count(&sgsn->routing_area->ra_list) == 0); @@ -503,11 +503,11 @@ printf("Testing Routing Area GERAN to GERAN (BVCI change)\n"); printf(" Registering GERAN RA/cell via BVCI A/BVC Reset Ind\n"); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci_a, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci_a, &cgi_ps); OSMO_ASSERT(rc == 0); printf(" Checking cell on BVCI A\n"); - cell_a = sgsn_ra_get_cell_by_cgi_ps(&cgi_ps); + cell_a = sgsn_ra_geran_get_cell_by_cgi_ps(&cgi_ps); OSMO_ASSERT(cell_a); OSMO_ASSERT(cell_a->ran_type == RA_TYPE_GERAN_Gb); OSMO_ASSERT(cell_a->u.geran.bvci == bvci_a); @@ -519,11 +519,11 @@ OSMO_ASSERT(llist_count(&cell_a->ra->cells_alive_list) == 1); printf(" Registering GERAN RA/cell via BVCI B/BVC Reset Ind\n"); - rc = sgsn_ra_bvc_cell_reset_ind(nsei, bvci_b, &cgi_ps); + rc = sgsn_ra_geran_bvc_cell_reset_ind(nsei, bvci_b, &cgi_ps); OSMO_ASSERT(rc == 0); printf(" Checking cell on BVCI B\n"); - cell_b = sgsn_ra_get_cell_by_cgi_ps(&cgi_ps); + cell_b = sgsn_ra_geran_get_cell_by_cgi_ps(&cgi_ps); OSMO_ASSERT(cell_b); OSMO_ASSERT(cell_b->ran_type == RA_TYPE_GERAN_Gb); OSMO_ASSERT(cell_b->u.geran.bvci == bvci_b); -- To view, visit https://gerrit.osmocom.org/c/osmo-sgsn/+/40811?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Change-Id: Ic616bd8f9afe6cd3702cd4af08706b7b36987f42 Gerrit-Change-Number: 40811 Gerrit-PatchSet: 2 Gerrit-Owner: lynxis lazus <lyn...@fe80.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-Reviewer: pespin <pes...@sysmocom.de>