diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2016-04-19 20:05:18 +0200 |
---|---|---|
committer | Daniel Willmann <dwillmann@sysmocom.de> | 2016-04-19 20:05:18 +0200 |
commit | 8fe0feb21bbc7b031ff2b73377535de093ffbf41 (patch) | |
tree | 889afd239f5d878d152cc2cbd4bee0985fecfa50 /openbsc | |
parent | 444a516f18a7a2073b26f9d01e754853015c178e (diff) |
gprs: Activate RABs from RoutingArea update request as well
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/src/gprs/gprs_gmm.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c index 05d66e4d2..b054a936d 100644 --- a/openbsc/src/gprs/gprs_gmm.c +++ b/openbsc/src/gprs/gprs_gmm.c @@ -706,13 +706,11 @@ static int gsm48_tx_gmm_ra_upd_ack(struct sgsn_mm_ctx *mm); void activate_pdp_rabs(struct sgsn_mm_ctx *ctx) { /* Send RAB activation requests for all PDP contexts */ - if (ctx->iu.service.type == 1) { - struct sgsn_pdp_ctx *pdp; - uint8_t rab_id; - llist_for_each_entry(pdp, &ctx->pdp_list, list) { - rab_id = rab_id_from_mm_ctx(ctx); - iu_rab_act_ps(rab_id, pdp); - } + struct sgsn_pdp_ctx *pdp; + uint8_t rab_id; + llist_for_each_entry(pdp, &ctx->pdp_list, list) { + rab_id = rab_id_from_mm_ctx(ctx); + iu_rab_act_ps(rab_id, pdp); } } @@ -807,7 +805,9 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx) rc = gsm48_tx_gmm_service_ack(ctx); - activate_pdp_rabs(ctx); + if (ctx->iu.service.type == 1) { + activate_pdp_rabs(ctx); + } return rc; case GSM48_MT_GMM_RA_UPD_REQ: @@ -1734,6 +1734,7 @@ static int gsm0408_rcv_gmm(struct sgsn_mm_ctx *mmctx, struct msgb *msg, GPRS_ALGO_GEA0, NULL); } mmctx->mm_state = GMM_REGISTERED_NORMAL; + activate_pdp_rabs(mmctx); rc = 0; memset(&sig_data, 0, sizeof(sig_data)); |