vty: Add check against sensible default value for Ny1

Related: OS#5475
Change-Id: If3f96a6bd4f9ae32b6421de43c1c5a5d64482089
This commit is contained in:
arehbein 2022-12-16 23:28:41 +01:00 committed by pespin
parent 9ff26123b3
commit fd6b81a042
3 changed files with 23 additions and 0 deletions

View File

@ -829,3 +829,5 @@ const char *btsatttr2str(enum bts_attribute v);
enum gsm_bts_type_variant str2btsvariant(const char *arg);
const char *btsvariant2str(enum gsm_bts_type_variant v);
bool gsm_bts_check_ny1(const struct gsm_bts *bts);

View File

@ -532,6 +532,9 @@ __attribute__((weak)) int gsm_bts_check_cfg(struct gsm_bts *bts)
}
}
if (!gsm_bts_check_ny1(bts))
return -EINVAL;
return 0;
}
@ -1717,3 +1720,20 @@ const struct osmo_stat_item_group_desc bts_statg_desc = {
.num_items = ARRAY_SIZE(bts_stat_desc),
.item_desc = bts_stat_desc,
};
/* Return 'true' if and only if Ny1 satisfies network requirements */
bool gsm_bts_check_ny1(const struct gsm_bts *bts)
{
unsigned long T3105, ny1, ny1_recommended;
T3105 = osmo_tdef_get(bts->network->T_defs, 3105, OSMO_TDEF_MS, -1);
ny1 = osmo_tdef_get(bts->network->T_defs, -3105, OSMO_TDEF_CUSTOM, -1);
if (!(T3105 * ny1 > GSM_T3124_MAX + GSM_NY1_REQ_DELTA)) {
/* See comment for GSM_NY1_DEFAULT */
ny1_recommended = (GSM_T3124_MAX + GSM_NY1_REQ_DELTA)/T3105 + 1;
LOGP(DNM, LOGL_ERROR, "Value of Ny1 should be higher. "
"Is: %lu, lowest recommendation: %lu\n",
ny1, ny1_recommended);
return false;
}
return true;
}

View File

@ -92,6 +92,7 @@ struct msgb *nanobts_gen_set_bts_attr(struct gsm_bts *bts)
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 */
gsm_bts_check_ny1(bts);
msgb_tv_put(msgb, NM_ATT_NY1, osmo_tdef_get(bts->network->T_defs, -3105, OSMO_TDEF_CUSTOM, -1));
/* BCCH ARFCN (3GPP TS 12.21 sec 9.4.8) */