aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-04-19 20:05:18 +0200
committerDaniel Willmann <dwillmann@sysmocom.de>2016-04-19 20:05:18 +0200
commit8fe0feb21bbc7b031ff2b73377535de093ffbf41 (patch)
tree889afd239f5d878d152cc2cbd4bee0985fecfa50 /openbsc
parent444a516f18a7a2073b26f9d01e754853015c178e (diff)
gprs: Activate RABs from RoutingArea update request as well
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/gprs/gprs_gmm.c17
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));