summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2023-05-02 21:18:05 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2023-05-04 12:03:52 +0200
commitbb5e13ca23e242dd9b70962065c8c01fbb4c3d7a (patch)
tree167148282c786788ad9b6471d9e95469ac535157
parentc16126317d4ec6c7d499f247d8ea836b902cedfb (diff)
layer23: modem: gmm: Activate PDP Context of APN after GPRS attach
-rw-r--r--src/host/layer23/src/modem/gmm.c7
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",