pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmocom-bb/+/32643 )
Change subject: layer23: modem: pass pco & qos from apn
......................................................................
layer23: modem: pass pco & qos from apn
Change-Id: I4088e3e96a58bd667627023f144a05137415dd32
---
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
3 files changed, 25 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/43/32643/1
diff --git a/src/host/layer23/include/osmocom/bb/common/apn.h
b/src/host/layer23/include/osmocom/bb/common/apn.h
index c449530..7378221 100644
--- a/src/host/layer23/include/osmocom/bb/common/apn.h
+++ b/src/host/layer23/include/osmocom/bb/common/apn.h
@@ -20,6 +20,9 @@
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/select.h>
#include <osmocom/core/tun.h>
+
+#include <osmocom/gprs/sm/sm.h>
+
#include <osmocom/bb/common/apn_fsm.h>
struct osmocom_ms;
@@ -31,6 +34,10 @@
struct osmobb_pdp_ctx {
uint8_t nsapi;
uint8_t llc_sapi;
+ uint8_t qos[OSMO_GPRS_SM_QOS_MAXLEN];
+ uint8_t qos_len;
+ uint8_t pco[OSMO_GPRS_SM_PCO_MAXLEN];
+ uint8_t pco_len;
};
struct osmobb_apn {
diff --git a/src/host/layer23/src/common/apn.c b/src/host/layer23/src/common/apn.c
index 4ea5d3a..f69014a 100644
--- a/src/host/layer23/src/common/apn.c
+++ b/src/host/layer23/src/common/apn.c
@@ -54,6 +54,11 @@
/* 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;
+
+ /* QoS zeroed to 14 bytes is a valid QoS seen sent by some phones. Use
+ * that as default for now. */
+ apn->pdp.qos_len = 14;
+
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 63f922a..e4b8de6 100644
--- a/src/host/layer23/src/modem/sm.c
+++ b/src/host/layer23/src/modem/sm.c
@@ -233,8 +233,6 @@
const struct gsm_subscriber *subscr = &ms->subscr;
enum osmo_gprs_sm_pdp_addr_ietf_type pdp_addr_ietf_type;
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};
int rc;
if (apn->cfg.apn_type_mask & APN_TYPE_IPv4v6) {
@@ -254,10 +252,10 @@
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;
- memcpy(sm_prim->smreg.pdp_act_req.qos, qos, sizeof(qos));
- sm_prim->smreg.pdp_act_req.qos_len = 1;
- memcpy(sm_prim->smreg.pdp_act_req.pco, pco, sizeof(pco));
- sm_prim->smreg.pdp_act_req.pco_len = 1;
+ memcpy(sm_prim->smreg.pdp_act_req.qos, apn->pdp.qos, apn->pdp.qos_len);
+ sm_prim->smreg.pdp_act_req.qos_len = apn->pdp.qos_len;
+ memcpy(sm_prim->smreg.pdp_act_req.pco, apn->pdp.pco, apn->pdp.pco_len);
+ sm_prim->smreg.pdp_act_req.pco_len = apn->pdp.pco_len;
OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.apn, apn->cfg.name);
sm_prim->smreg.pdp_act_req.gmm.ptmsi = subscr->ptmsi;
OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imsi, subscr->imsi);
--
To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/32643
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I4088e3e96a58bd667627023f144a05137415dd32
Gerrit-Change-Number: 32643
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newchange