arehbein has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bsc/+/30602 )


Change subject: WIP: vty: Add check against sensible default value for ny1
......................................................................

WIP: vty: Add check against sensible default value for ny1

Related: OS#5475
Change-Id: If3f96a6bd4f9ae32b6421de43c1c5a5d64482089
---
M include/osmocom/bsc/bts.h
M src/osmo-bsc/bts.c
M src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c
3 files changed, 38 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/02/30602/1

diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index 1a84a0e..2167d6e 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -777,6 +777,7 @@
 /* return the gsm_lchan for the CBCH (if it exists at all) */
 struct gsm_lchan *gsm_bts_get_cbch(struct gsm_bts *bts);

+unsigned long gsm_bts_check_ny1(struct gsm_bts *bts, unsigned long *ny1_out);
 int gsm_set_bts_model(struct gsm_bts *bts, struct gsm_bts_model *model);
 int gsm_set_bts_type(struct gsm_bts *bts, enum gsm_bts_type type);

diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 9be2454..eeef776 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -532,6 +532,16 @@
                }
        }

+       unsigned long ny1;
+       unsigned long check_ny1_r = gsm_bts_check_ny1(bts, &ny1);
+       bool ny1_inappropriate = check_ny1_r != 0;
+       if (ny1_inappropriate) {
+               unsigned long ny1 = osmo_tdef_get_entry(bts->network->T_defs, 
-3105)->val;
+               LOGP(DNM, LOGL_ERROR, "ny1 value (%lu) too low! Lowest 
recommendation: "
+                                     "%lu\n", ny1, check_ny1_r);
+               return -EINVAL;
+       }
+
        return 0;
 }

@@ -640,6 +650,24 @@
        return NULL;
 }

+/* Return 0 iff ny1 satisfies network requirements, otherwise return a 
suggestion for ny1 */
+unsigned long gsm_bts_check_ny1(struct gsm_bts *bts, unsigned long *ny1_out)
+{
+       struct gsm_lchan *gl = gsm_bts_get_cbch(bts);
+       /* TS 44.018 specifies these values for T3124 (ms) depending on the 
channel type */
+       unsigned long T3124;
+       if (gl) {
+               T3124 = (gl->type == GSM_LCHAN_SDCCH) ? GSM_T3124_SDCCH : 
GSM_T3124_OTHER_CH;
+       } else {
+               /* Take the higher lower bound to be safe */
+               T3124 = GSM_T3124_SDCCH;
+       }
+       unsigned long T3105 = osmo_tdef_get_entry(bts->network->T_defs, 
3105)->val;
+       OSMO_ASSERT(T3105 > 0);
+       *ny1_out = osmo_tdef_get_entry(bts->network->T_defs, -3105)->val;
+       return (T3105 * *ny1_out > T3124) ? 0 : T3124/T3105 + 1;
+}
+
 int gsm_set_bts_model(struct gsm_bts *bts, struct gsm_bts_model *model)
 {
        bts->model = model;
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c 
b/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c
index 72abe23..47304c3 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c
@@ -21,6 +21,7 @@

 #include <arpa/inet.h>
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/logging.h>
 #include <osmocom/bsc/gsm_data.h>
 #include <osmocom/bsc/abis_nm.h>
 #include <osmocom/bsc/bts.h>
@@ -92,6 +93,14 @@
        msgb_tv_put(msgb, NM_ATT_BTS_AIR_TIMER, 
osmo_tdef_get(bts->network->T_defs, 3105, OSMO_TDEF_MS, -1)/10);
 
        /* NY1 (3GPP TS 12.21 sec 9.4.37), number of retransmissions of 
physical config */
+       unsigned long ny1;
+       unsigned long check_ny1_r = gsm_bts_check_ny1(bts, &ny1);
+       bool ny1_inappropriate = check_ny1_r != 0;
+       if (ny1_inappropriate) {
+               unsigned long ny1 = osmo_tdef_get_entry(bts->network->T_defs, 
-3105)->val;
+               LOGP(DNM, LOGL_NOTICE, "ny1 value (%lu) should be higher. 
Lowest recommendation: "
+                                     "%lu\n", ny1, GSM_NY1_DEFAULT);
+       }
        msgb_tv_put(msgb, NM_ATT_NY1, osmo_tdef_get(bts->network->T_defs, 
-3105, OSMO_TDEF_CUSTOM, GSM_NY1_DEFAULT));

        /* BCCH ARFCN (3GPP TS 12.21 sec 9.4.8) */

--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/30602
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: If3f96a6bd4f9ae32b6421de43c1c5a5d64482089
Gerrit-Change-Number: 30602
Gerrit-PatchSet: 1
Gerrit-Owner: arehbein <[email protected]>
Gerrit-MessageType: newchange

Reply via email to