diff --git a/src/osmo-bsc/abis_nm.c b/src/osmo-bsc/abis_nm.c index 95cb85811..5aaf06982 100644 --- a/src/osmo-bsc/abis_nm.c +++ b/src/osmo-bsc/abis_nm.c @@ -573,7 +573,7 @@ static int parse_attr_resp_info_attr(struct gsm_bts *bts, const struct gsm_bts_t struct abis_nm_sw_desc sw_descr[MAX_BTS_ATTR]; /* Parse Attribute Response Info content for 3GPP TS 52.021 §9.4.30 Manufacturer Id */ - if (TLVP_PRES_LEN(tp, NM_ATT_MANUF_ID, 2)) { + if (bts->type == GSM_BTS_TYPE_OSMOBTS && TLVP_PRES_LEN(tp, NM_ATT_MANUF_ID, 2)) { len = TLVP_LEN(tp, NM_ATT_MANUF_ID); /* log potential BTS feature vector overflow */ @@ -606,19 +606,6 @@ static int parse_attr_resp_info_attr(struct gsm_bts *bts, const struct gsm_bts_t " supported\n", osmo_bts_features_name(i)); } - /* Add features from the BTS model: nanobts may support more - * features than it reports, since we extend the enum of - * features for osmo-bts. */ - if (bts->type == GSM_BTS_TYPE_NANOBTS) { - for (i = 0; i < _NUM_BTS_FEAT; i++) { - if (osmo_bts_has_feature(&bts->model->features, i) /* intentional check against bts model */ - && !osmo_bts_has_feature(&bts->features, i)) { - LOGPMO(&bts->mo, DNM, LOGL_NOTICE, "Get Attributes Response: feature '%s' is" - " assumed to be supported\n", osmo_bts_features_name(i)); - osmo_bts_set_feature(&bts->features, i); - } - } - } } /* Parse Attribute Response Info content for 3GPP TS 52.021 §9.4.28 Manufacturer Dependent State */ diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c index 83c8097df..57a47b076 100644 --- a/src/osmo-bsc/bts_ipaccess_nanobts.c +++ b/src/osmo-bsc/bts_ipaccess_nanobts.c @@ -131,7 +131,7 @@ struct gsm_bts_model bts_model_nanobts = { [NM_ATT_IPACC_REVOC_DATE] = { TLV_TYPE_TL16V }, }, }, - .features_get_reported = true, + .features_get_reported = false, }; @@ -638,9 +638,11 @@ void ipaccess_drop_oml(struct gsm_bts *bts, const char *reason) bts->ip_access.flags = 0; - /* Reset the feature vector */ - memset(bts->_features_data, 0, sizeof(bts->_features_data)); - bts->features_known = false; + if (bts->model->features_get_reported) { + /* Reset the feature vector */ + memset(bts->_features_data, 0, sizeof(bts->_features_data)); + bts->features_known = false; + } /* * Go through the list and see if we are the depndency of a BTS diff --git a/src/osmo-bsc/bts_osmobts.c b/src/osmo-bsc/bts_osmobts.c index ea0405b3a..92c3340ce 100644 --- a/src/osmo-bsc/bts_osmobts.c +++ b/src/osmo-bsc/bts_osmobts.c @@ -188,6 +188,7 @@ int bts_model_osmobts_init(void) model_osmobts = bts_model_nanobts; model_osmobts.name = "osmo-bts"; model_osmobts.type = GSM_BTS_TYPE_OSMOBTS; + model_osmobts.features_get_reported = true; /* Unlike nanoBTS, osmo-bts does support SI2bis and SI2ter fine */ model_osmobts.force_combined_si = false;