gsm_bts: add version and variant details
* add version string to gsm_bts * add PCU version string to gsm_bts * rename GSM_BTS_TYPE_OSMO_SYSMO -> GSM_BTS_OSMOBTS to avoid confusion between BTS model and variant * add variant enum to gsm_bts_model using enum with variants for each hw vendor of OsmoBTS * show connected PCU version (if available) in vty via 'show bts' This will come in handy when logging details regarding particular BTS reported via OML, see: Related: OS#1614 Change-Id: I6710d53115f34634a7b70969cc05fd5c72ff8ab2
This commit is contained in:
parent
689e7e5562
commit
f9685c1461
|
@ -469,7 +469,7 @@ static inline int is_ipaccess_bts(struct gsm_bts *bts)
|
|||
{
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
|
@ -480,7 +480,7 @@ static inline int is_ipaccess_bts(struct gsm_bts *bts)
|
|||
static inline int is_sysmobts_v2(struct gsm_bts *bts)
|
||||
{
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -64,6 +64,8 @@ enum gsm_chreq_reason_t {
|
|||
#define HARDCODED_BTS1_TS 6
|
||||
#define HARDCODED_BTS2_TS 11
|
||||
|
||||
#define MAX_VERSION_LENGTH 64
|
||||
|
||||
enum gsm_hooks {
|
||||
GSM_HOOK_NM_SWLOAD,
|
||||
GSM_HOOK_RR_PAGING,
|
||||
|
@ -489,16 +491,26 @@ enum gsm_bts_type {
|
|||
GSM_BTS_TYPE_NANOBTS,
|
||||
GSM_BTS_TYPE_RBS2000,
|
||||
GSM_BTS_TYPE_NOKIA_SITE,
|
||||
GSM_BTS_TYPE_OSMO_SYSMO,
|
||||
GSM_BTS_TYPE_OSMOBTS,
|
||||
_NUM_GSM_BTS_TYPE
|
||||
};
|
||||
|
||||
enum gsm_bts_type_variant {
|
||||
BTS_UNKNOWN,
|
||||
BTS_OSMO_LITECELL15,
|
||||
BTS_OSMO_OCTPHY,
|
||||
BTS_OSMO_SYSMO,
|
||||
BTS_OSMO_TRX,
|
||||
_NUM_BTS_VARIANT
|
||||
};
|
||||
|
||||
struct vty;
|
||||
|
||||
struct gsm_bts_model {
|
||||
struct llist_head list;
|
||||
|
||||
enum gsm_bts_type type;
|
||||
enum gsm_bts_type_variant variant;
|
||||
const char *name;
|
||||
|
||||
bool started;
|
||||
|
@ -653,6 +665,11 @@ struct gsm_bts {
|
|||
enum gsm_bts_type type;
|
||||
struct gsm_bts_model *model;
|
||||
enum gsm_band band;
|
||||
char version[MAX_VERSION_LENGTH];
|
||||
|
||||
/* Connected PCU version (if any) */
|
||||
char pcu_version[MAX_VERSION_LENGTH];
|
||||
|
||||
/* maximum Tx power that the MS is permitted to use in this cell */
|
||||
int ms_max_power;
|
||||
|
||||
|
|
|
@ -738,7 +738,7 @@ static int abis_nm_rcvmsg_manuf(struct msgb *mb)
|
|||
|
||||
switch (bts_type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
rc = abis_nm_rx_ipacc(mb);
|
||||
abis_nm_queue_send_next(sign_link->trx->bts);
|
||||
break;
|
||||
|
@ -1723,7 +1723,7 @@ static int verify_chan_comb(struct gsm_bts_trx_ts *ts, uint8_t chan_comb,
|
|||
}
|
||||
*reason = "Unknown combination";
|
||||
return -EINVAL;
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
/* no known restrictions */
|
||||
return 0;
|
||||
default:
|
||||
|
|
|
@ -245,6 +245,9 @@ static void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
|
|||
bts->num_trx, VTY_NEWLINE);
|
||||
vty_out(vty, "Description: %s%s",
|
||||
bts->description ? bts->description : "(null)", VTY_NEWLINE);
|
||||
if (strnlen(bts->pcu_version, MAX_VERSION_LENGTH))
|
||||
vty_out(vty, "PCU version %s connected%s", bts->pcu_version,
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, "MS Max power: %u dBm%s", bts->ms_max_power, VTY_NEWLINE);
|
||||
vty_out(vty, "Minimum Rx Level for Access: %i dBm%s",
|
||||
rxlev2dbm(bts->si_common.cell_sel_par.rxlev_acc_min),
|
||||
|
@ -649,7 +652,7 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
|
|||
bts->early_classmark_allowed ? "allowed" : "forbidden", VTY_NEWLINE);
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
vty_out(vty, " ip.access unit_id %u %u%s",
|
||||
bts->ip_access.site_id, bts->ip_access.bts_id, VTY_NEWLINE);
|
||||
if (bts->ip_access.rsl_ip) {
|
||||
|
|
|
@ -46,7 +46,7 @@ int bts_model_sysmobts_init(void)
|
|||
{
|
||||
model_sysmobts = bts_model_nanobts;
|
||||
model_sysmobts.name = "sysmobts";
|
||||
model_sysmobts.type = GSM_BTS_TYPE_OSMO_SYSMO;
|
||||
model_sysmobts.type = GSM_BTS_TYPE_OSMOBTS;
|
||||
|
||||
model_sysmobts.features.data = &model_sysmobts._features_data[0];
|
||||
model_sysmobts.features.data_len =
|
||||
|
|
|
@ -179,7 +179,7 @@ int e1_reconfig_bts(struct gsm_bts *bts)
|
|||
|
||||
/* skip signal link initialization, this is done later for these BTS. */
|
||||
if (bts->type == GSM_BTS_TYPE_NANOBTS ||
|
||||
bts->type == GSM_BTS_TYPE_OSMO_SYSMO)
|
||||
bts->type == GSM_BTS_TYPE_OSMOBTS)
|
||||
return e1inp_line_update(line);
|
||||
|
||||
/* OML link */
|
||||
|
|
|
@ -830,7 +830,7 @@ static int generate_si5(uint8_t *output, struct gsm_bts *bts)
|
|||
/* ip.access nanoBTS needs l2_plen!! */
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
*output++ = GSM48_LEN2PLEN(l2_plen);
|
||||
l2_plen++;
|
||||
break;
|
||||
|
@ -865,7 +865,7 @@ static int generate_si5bis(uint8_t *output, struct gsm_bts *bts)
|
|||
/* ip.access nanoBTS needs l2_plen!! */
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
*output++ = GSM48_LEN2PLEN(l2_plen);
|
||||
l2_plen++;
|
||||
break;
|
||||
|
@ -909,7 +909,7 @@ static int generate_si5ter(uint8_t *output, struct gsm_bts *bts)
|
|||
/* ip.access nanoBTS needs l2_plen!! */
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
*output++ = GSM48_LEN2PLEN(l2_plen);
|
||||
l2_plen++;
|
||||
break;
|
||||
|
@ -946,7 +946,7 @@ static int generate_si6(uint8_t *output, struct gsm_bts *bts)
|
|||
/* ip.access nanoBTS needs l2_plen!! */
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
*output++ = GSM48_LEN2PLEN(l2_plen);
|
||||
l2_plen++;
|
||||
break;
|
||||
|
|
|
@ -96,7 +96,7 @@ const struct value_string bts_type_names[_NUM_GSM_BTS_TYPE+1] = {
|
|||
{ GSM_BTS_TYPE_NANOBTS, "nanobts" },
|
||||
{ GSM_BTS_TYPE_RBS2000, "rbs2000" },
|
||||
{ GSM_BTS_TYPE_NOKIA_SITE, "nokia_site" },
|
||||
{ GSM_BTS_TYPE_OSMO_SYSMO, "sysmobts" },
|
||||
{ GSM_BTS_TYPE_OSMOBTS, "sysmobts" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
|
@ -106,7 +106,7 @@ const struct value_string bts_type_descs[_NUM_GSM_BTS_TYPE+1] = {
|
|||
{ GSM_BTS_TYPE_NANOBTS, "ip.access nanoBTS or compatible" },
|
||||
{ GSM_BTS_TYPE_RBS2000, "Ericsson RBS2000 Series" },
|
||||
{ GSM_BTS_TYPE_NOKIA_SITE, "Nokia {Metro,Ultra,In}Site" },
|
||||
{ GSM_BTS_TYPE_OSMO_SYSMO, "sysmocom sysmoBTS" },
|
||||
{ GSM_BTS_TYPE_OSMOBTS, "sysmocom sysmoBTS" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
|
@ -274,7 +274,7 @@ int gsm_set_bts_type(struct gsm_bts *bts, enum gsm_bts_type type)
|
|||
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
/* Set the default OML Stream ID to 0xff */
|
||||
bts->oml_tei = 0xff;
|
||||
bts->c0->nominal_power = 23;
|
||||
|
|
|
@ -1962,7 +1962,7 @@ static int tch_map(struct gsm_lchan *lchan, struct gsm_lchan *remote_lchan)
|
|||
// todo: map between different bts types
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
if (!ipacc_rtp_direct) {
|
||||
if (!lchan->abis_ip.rtp_socket) {
|
||||
LOGP(DHO, LOGL_ERROR, "no RTP socket for "
|
||||
|
@ -2053,7 +2053,7 @@ static int tch_recv_mncc(struct gsm_network *net, uint32_t callref, int enable)
|
|||
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
if (ipacc_rtp_direct) {
|
||||
LOGP(DCC, LOGL_ERROR, "Error: RTP proxy is disabled\n");
|
||||
return -EINVAL;
|
||||
|
@ -3633,7 +3633,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
|
|||
bts = trans->conn->lchan->ts->trx->bts;
|
||||
switch (bts->type) {
|
||||
case GSM_BTS_TYPE_NANOBTS:
|
||||
case GSM_BTS_TYPE_OSMO_SYSMO:
|
||||
case GSM_BTS_TYPE_OSMOBTS:
|
||||
if (!trans->conn->lchan->abis_ip.rtp_socket) {
|
||||
DEBUGP(DMNCC, "TCH frame to lchan without RTP connection\n");
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue