aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2023-10-05 11:54:57 +0200
committerOliver Smith <osmith@sysmocom.de>2023-12-12 16:43:19 +0100
commit6a6a176a32579c1d51dafc3b5ad8fa8cf61a8299 (patch)
tree305a473b3b2f0c952e9f784e7b93b30935f96337
parent12a23c167785255bf7b60c1ce2b6754c7d45b076 (diff)
pcuif_proto: signal BTS model via PCUIF
At the moment the PCU has no way of knowing with which BTS model it is used with. However, some BTS models may require slightly different behaviour by the PCU, depending on which BTS model is used. So, lets add an additional bts_model field to struct gsm_pcu_if_info_ind in order to convey the exact BTS model to the PCU. Related: OS#6191 Depends: osmo-pcu.git I48eb75f65ab54fdec41ef913e24c1f18cd4a4047 Change-Id: Ib51238a0e09d4484a539a7f822864189872698b6 (cherry picked from commit 4a6a2fdf7ef3f2fd197c1d76fa32d6b6cf231fce)
-rw-r--r--include/osmo-bts/pcuif_proto.h14
-rw-r--r--src/common/pcu_sock.c21
2 files changed, 34 insertions, 1 deletions
diff --git a/include/osmo-bts/pcuif_proto.h b/include/osmo-bts/pcuif_proto.h
index 15e3e203..04936af0 100644
--- a/include/osmo-bts/pcuif_proto.h
+++ b/include/osmo-bts/pcuif_proto.h
@@ -7,7 +7,7 @@
#define PCU_SOCK_DEFAULT "/tmp/pcu_bts"
-#define PCU_IF_VERSION 0x0b
+#define PCU_IF_VERSION 0x0c
#define TXT_MAX_LEN 128
/* msg_type */
@@ -57,6 +57,17 @@
#define PCU_IF_ADDR_TYPE_IPV4 0x04 /* IPv4 address */
#define PCU_IF_ADDR_TYPE_IPV6 0x29 /* IPv6 address */
+/* BTS model */
+enum gsm_pcuif_bts_model {
+ PCU_IF_BTS_MODEL_UNSPEC,
+ PCU_IF_BTS_MODEL_LC15,
+ PCU_IF_BTS_MODEL_OC2G,
+ PCU_IF_BTS_MODEL_OCTPHY,
+ PCU_IF_BTS_MODEL_SYSMO,
+ PCU_IF_BTS_MODEL_TRX,
+ PCU_IF_BTS_MODEL_RBS,
+};
+
#define PCU_IF_NUM_NSVC 2
#define PCU_IF_NUM_TRX 8
@@ -170,6 +181,7 @@ struct gsm_pcu_if_info_ind {
struct in_addr v4;
struct in6_addr v6;
} remote_ip[PCU_IF_NUM_NSVC];
+ uint8_t bts_model; /* enum gsm_pcuif_bts_model */
} __attribute__ ((packed));
struct gsm_pcu_if_act_req {
diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c
index 6116c9ef..048e7668 100644
--- a/src/common/pcu_sock.c
+++ b/src/common/pcu_sock.c
@@ -230,6 +230,25 @@ static void info_ind_fill_trx(struct gsm_pcu_if_info_trx *trx_info,
}
}
+static enum gsm_pcuif_bts_model bts_model_from_variant(enum gsm_bts_type_variant variant)
+{
+ switch (variant) {
+ case BTS_OSMO_LITECELL15:
+ return PCU_IF_BTS_MODEL_LC15;
+ case BTS_OSMO_OC2G:
+ return PCU_IF_BTS_MODEL_OC2G;
+ case BTS_OSMO_OCTPHY:
+ return PCU_IF_BTS_MODEL_OCTPHY;
+ case BTS_OSMO_SYSMO:
+ return PCU_IF_BTS_MODEL_SYSMO;
+ case BTS_OSMO_TRX:
+ case BTS_OSMO_VIRTUAL:
+ return PCU_IF_BTS_MODEL_TRX;
+ default:
+ return PCU_IF_BTS_MODEL_UNSPEC;
+ }
+}
+
int pcu_tx_info_ind(void)
{
struct msgb *msg;
@@ -358,6 +377,8 @@ int pcu_tx_info_ind(void)
info_ind_fill_trx(&info_ind->trx[trx->nr], trx);
}
+ info_ind->bts_model = bts_model_from_variant(bts->variant);
+
return pcu_sock_send(msg);
}