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 <[email protected]>
Gerrit-MessageType: newchange

Reply via email to