pespin has uploaded this change for review.
layer23: Store and use SAPI & NSAPI in apn->pdp
Change-Id: If82c94ca9c84a94e63a9a5d642a27a7b4e3ff089
---
M src/host/layer23/include/osmocom/bb/common/apn.h
M src/host/layer23/src/common/apn.c
M src/host/layer23/src/modem/sm.c
M src/host/layer23/src/modem/sndcp.c
4 files changed, 24 insertions(+), 10 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/97/32597/1
diff --git a/src/host/layer23/include/osmocom/bb/common/apn.h b/src/host/layer23/include/osmocom/bb/common/apn.h
index 538b31d..c449530 100644
--- a/src/host/layer23/include/osmocom/bb/common/apn.h
+++ b/src/host/layer23/include/osmocom/bb/common/apn.h
@@ -28,6 +28,11 @@
#define APN_TYPE_IPv6 0x02 /* v6-only */
#define APN_TYPE_IPv4v6 0x04 /* v4v6 dual-stack */
+struct osmobb_pdp_ctx {
+ uint8_t nsapi;
+ uint8_t llc_sapi;
+};
+
struct osmobb_apn {
/* list of APNs inside MS */
struct llist_head list;
@@ -52,6 +57,7 @@
} cfg;
struct osmo_tundev *tun;
struct apn_fsm_ctx fsm;
+ struct osmobb_pdp_ctx pdp;
};
struct osmobb_apn *apn_alloc(struct osmocom_ms *ms, const char *name);
diff --git a/src/host/layer23/src/common/apn.c b/src/host/layer23/src/common/apn.c
index b9b032c..4ea5d3a 100644
--- a/src/host/layer23/src/common/apn.c
+++ b/src/host/layer23/src/common/apn.c
@@ -23,6 +23,8 @@
#include <talloc.h>
+#include <osmocom/gprs/sm/sm.h>
+
#include <osmocom/bb/common/logging.h>
#include <osmocom/bb/common/apn.h>
#include <osmocom/bb/common/ms.h>
@@ -49,6 +51,9 @@
osmo_tundev_set_priv_data(apn->tun, apn);
apn->ms = ms;
+ /* FIXME: may want to configure or pick free one in the future: */
+ apn->pdp.nsapi = 6;
+ apn->pdp.llc_sapi = OSMO_GPRS_SM_LLC_SAPI_SAPI3;
llist_add_tail(&apn->list, &ms->gprs.apn_list);
return apn;
diff --git a/src/host/layer23/src/modem/sm.c b/src/host/layer23/src/modem/sm.c
index aac2b52..03982c6 100644
--- a/src/host/layer23/src/modem/sm.c
+++ b/src/host/layer23/src/modem/sm.c
@@ -229,8 +229,6 @@
struct osmo_gprs_sm_prim *sm_prim;
const struct gsm_subscriber *subscr = &ms->subscr;
enum osmo_gprs_sm_pdp_addr_ietf_type pdp_addr_ietf_type;
- uint8_t nsapi = 6;
- enum osmo_gprs_sm_llc_sapi llc_sapi = OSMO_GPRS_SM_LLC_SAPI_SAPI3;
struct osmo_sockaddr pdp_addr_any = {0};
uint8_t qos[OSMO_GPRS_SM_QOS_MAXLEN] = {0};
uint8_t pco[OSMO_GPRS_SM_QOS_MAXLEN] = {0};
@@ -248,8 +246,8 @@
}
sm_prim = osmo_gprs_sm_prim_alloc_smreg_pdp_act_req();
- sm_prim->smreg.pdp_act_req.nsapi = nsapi;
- sm_prim->smreg.pdp_act_req.llc_sapi = llc_sapi;
+ sm_prim->smreg.pdp_act_req.nsapi = apn->pdp.nsapi;
+ sm_prim->smreg.pdp_act_req.llc_sapi = apn->pdp.llc_sapi;
sm_prim->smreg.pdp_act_req.pdp_addr_ietf_type = pdp_addr_ietf_type;
sm_prim->smreg.pdp_act_req.pdp_addr_v4 = pdp_addr_any;
sm_prim->smreg.pdp_act_req.pdp_addr_v6 = pdp_addr_any;
diff --git a/src/host/layer23/src/modem/sndcp.c b/src/host/layer23/src/modem/sndcp.c
index b4b7761..7814e50 100644
--- a/src/host/layer23/src/modem/sndcp.c
+++ b/src/host/layer23/src/modem/sndcp.c
@@ -181,10 +181,8 @@
/* TODO: look up PDP context IDs from ms once we have GMM layer. */
uint32_t tlli = 0xe1c5d364;
- uint8_t sapi = OSMO_GPRS_LLC_SAPI_SNDCP3;
- uint8_t nsapi = 1;
- sndcp_prim = osmo_gprs_sndcp_prim_alloc_sn_xid_req(tlli, sapi, nsapi);
+ sndcp_prim = osmo_gprs_sndcp_prim_alloc_sn_xid_req(tlli, apn->pdp.llc_sapi, apn->pdp.nsapi);
OSMO_ASSERT(sndcp_prim);
sndcp_prim->sn.xid_req.pcomp_rfc1144.active = set->pcomp_rfc1144.active;
sndcp_prim->sn.xid_req.pcomp_rfc1144.s01 = set->pcomp_rfc1144.s01;
@@ -203,10 +201,8 @@
/* TODO: look up PDP context IDs from apn->ms once we have GMM layer. */
uint32_t tlli = 0xe1c5d364;
- uint8_t sapi = OSMO_GPRS_LLC_SAPI_SNDCP3;
- uint8_t nsapi = 1;
- sndcp_prim = osmo_gprs_sndcp_prim_alloc_sn_unitdata_req(tlli, sapi, nsapi, npdu, npdu_len);
+ sndcp_prim = osmo_gprs_sndcp_prim_alloc_sn_unitdata_req(tlli, apn->pdp.llc_sapi, apn->pdp.nsapi, npdu, npdu_len);
OSMO_ASSERT(sndcp_prim);
rc = osmo_gprs_sndcp_prim_upper_down(sndcp_prim);
return rc;
To view, visit change 32597. To unsubscribe, or for help writing mail filters, visit settings.