diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-05-02 21:18:05 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-05-04 12:03:52 +0200 |
commit | bb5e13ca23e242dd9b70962065c8c01fbb4c3d7a (patch) | |
tree | 167148282c786788ad9b6471d9e95469ac535157 | |
parent | c16126317d4ec6c7d499f247d8ea836b902cedfb (diff) |
layer23: modem: gmm: Activate PDP Context of APN after GPRS attach
Change-Id: Icb667a6a3359267d2eb20e11a40eb27a8c3f7e2d
-rw-r--r-- | src/host/layer23/src/modem/gmm.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/host/layer23/src/modem/gmm.c b/src/host/layer23/src/modem/gmm.c index 62c6d5e3..f3a936aa 100644 --- a/src/host/layer23/src/modem/gmm.c +++ b/src/host/layer23/src/modem/gmm.c @@ -44,12 +44,14 @@ #include <osmocom/bb/common/apn.h> #include <osmocom/bb/common/ms.h> #include <osmocom/bb/modem/gmm.h> +#include <osmocom/bb/modem/sm.h> #include <osmocom/bb/modem/modem.h> static int modem_gmm_prim_up_cb(struct osmo_gprs_gmm_prim *gmm_prim, void *user_data) { const char *pdu_name = osmo_gprs_gmm_prim_name(gmm_prim); struct osmocom_ms *ms = user_data; + struct osmobb_apn *apn; int rc = 0; switch (gmm_prim->oph.sap) { @@ -61,6 +63,11 @@ static int modem_gmm_prim_up_cb(struct osmo_gprs_gmm_prim *gmm_prim, void *user_ __func__, pdu_name, gmm_prim->gmmreg.attach_cnf.acc.allocated_ptmsi); ms->subscr.ptmsi = gmm_prim->gmmreg.attach_cnf.acc.allocated_ptmsi; app_data.modem_state = MODEM_ST_ATTACHED; + /* Activate APN if not yet already: */ + apn = llist_first_entry_or_null(&ms->gprs.apn_list, struct osmobb_apn, list); + if (!apn || apn->cfg.shutdown) + break; + modem_sm_smreg_pdp_act_req(ms, apn); } else { uint8_t cause = gmm_prim->gmmreg.attach_cnf.rej.cause; LOGP(DGMM, LOGL_ERROR, "%s(): Rx %s: Attach rejected, cause=%u (%s)\n", |