arehbein has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31882 )
Change subject: Make BSSGP timers configurable ......................................................................
Make BSSGP timers configurable
Required change (libosmocore): I1ec2e52ad7fa625c08fe9df04d4a4f5323bf609c
Related: OS#5335 Change-Id: Id4779f033b5eb1742462d4efc28a0398645acfe6 --- M include/osmocom/bsc/bts.h M src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c M src/osmo-bsc/net_init.c M tests/nanobts_omlattr/nanobts_omlattr_test.c M tests/timer.vty 5 files changed, 65 insertions(+), 12 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/82/31882/1
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index 94fb5fc..2c54f29 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -331,6 +331,12 @@ #define GSM_BTS_TDEF_ID_TNS_ALIVE_RETRIES_NEG34 (-34) #define GSM_BTS_TDEF_ID_TSNS_PROV_NEG_35 (-35)
+#define GSM_BTS_TDEF_ID_BSSGP_T1_1001 1001 +#define GSM_BTS_TDEF_ID_BSSGP_T2_1002 1002 +#define GSM_BTS_TDEF_ID_BSSGP_T3_1003 1003 +#define GSM_BTS_TDEF_ID_BSSGP_T4_1004 1004 +#define GSM_BTS_TDEF_ID_BSSGP_T5_1005 1005 + #define GSM_BTS_TDEF_ID_N3101_NEG3169 (-3169) #define GSM_BTS_TDEF_ID_N3103_NEG3170 (-3170) #define GSM_BTS_TDEF_ID_N3105_NEG3171 (-3171) diff --git a/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c b/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c index d7f459d..a61748d 100644 --- a/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c +++ b/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c @@ -25,6 +25,7 @@ #include <osmocom/bsc/abis_nm.h> #include <osmocom/bsc/bts.h> #include <osmocom/gsm/bts_features.h> +#include <osmocom/gsm/protocol/gsm_12_21.h>
/* 3GPP TS 52.021 section 8.6.1 Set BTS Attributes */ struct msgb *nanobts_gen_set_bts_attr(struct gsm_bts *bts) @@ -145,18 +146,22 @@ osmo_tdef_get(tdefs, GSM_BTS_TDEF_ID_TSNS_PROV_NEG_35, OSMO_TDEF_S, -1); msgb_tl16v_put(msgb, NM_ATT_IPACC_NS_CFG, _NUM_PCU_IF_NSE_TIMER_OFFSETS, buf);
- /* all timers in seconds */ - buf[0] = 3; /* blockimg timer (T1) */ - buf[1] = 3; /* blocking retries */ - buf[2] = 3; /* unblocking retries */ - buf[3] = 3; /* reset timer (T2) */ - buf[4] = 3; /* reset retries */ - buf[5] = 10; /* suspend timer (T3) in 100ms */ - buf[6] = 3; /* suspend retries */ - buf[7] = 10; /* resume timer (T4) in 100ms */ - buf[8] = 3; /* resume retries */ - buf[9] = 10; /* capability update timer (T5) */ - buf[10] = 3; /* capability update retries */ + buf[NM_BSSGP_T1_OFFSET] = + osmo_tdef_get(tdefs, GSM_BTS_TDEF_ID_BSSGP_T1_1001, OSMO_TDEF_S, -1); + buf[NM_BSSGP_BLOCK_RETRIES_OFFSET] = NM_PAR_BLOCK_RETRIES; + buf[NM_BSSGP_UNBLOCK_RETRIES_OFFSET] = NM_PAR_UNBLOCK_RETRIES; + buf[NM_BSSGP_T2_OFFSET] = + osmo_tdef_get(tdefs, GSM_BTS_TDEF_ID_BSSGP_T2_1002, OSMO_TDEF_S, -1); + buf[NM_BSSGP_RESET_RETRIES_OFFSET] = NM_PAR_RESET_RETRIES; + buf[NM_BSSGP_T3_OFFSET] = + osmo_tdef_get(tdefs, GSM_BTS_TDEF_ID_BSSGP_T3_1003, OSMO_TDEF_MS, -1)/100; + buf[NM_BSSGP_SUSPEND_RETRIES_OFFSET] = NM_PAR_SUSPEND_RETRIES; + buf[NM_BSSGP_T4_OFFSET] = + osmo_tdef_get(tdefs, GSM_BTS_TDEF_ID_BSSGP_T4_1004, OSMO_TDEF_MS, -1)/100; + buf[NM_BSSGP_RESUME_RETRIES_OFFSET] = NM_PAR_RESUME_RETRIES; + buf[NM_BSSGP_T5_OFFSET] = + osmo_tdef_get(tdefs, GSM_BTS_TDEF_ID_BSSGP_T5_1005, OSMO_TDEF_S, -1); + buf[NM_BSSGP_RA_CAPABILITY_UPDATE_RETRIES_OFFSET] = NM_PAR_RA_CAP_UPDATE_RETRIES;
OSMO_ASSERT(ARRAY_SIZE(bts->gprs.cell.timer) < sizeof(buf)); memcpy(buf, bts->gprs.cell.timer, ARRAY_SIZE(bts->gprs.cell.timer)); diff --git a/src/osmo-bsc/net_init.c b/src/osmo-bsc/net_init.c index 2e69a8e..9fa8ac4 100644 --- a/src/osmo-bsc/net_init.c +++ b/src/osmo-bsc/net_init.c @@ -36,6 +36,16 @@ { .T = 8, .default_val = 10, .desc = "inter-BSC/MSC Handover outgoing, BSSMAP HO Command to final Clear timeout" }, { .T = 10, .default_val = 6, .desc = "RR Assignment" }, { .T = 101, .default_val = 10, .desc = "inter-BSC/MSC Handover incoming, BSSMAP HO Request to HO Accept" }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T1_1001, .default_val = 3, .min_val = 2, + .max_val = 29, .desc = "T1 (3GPP TS 48.018): Guards the (un)blocking procedures" }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T2_1002, .default_val = 3, .min_val = 2, + .max_val = 119, .desc = "T2 (3GPP TS 48.018): Guards the reset procedure"}, + { .T = GSM_BTS_TDEF_ID_BSSGP_T3_1003, .default_val = 1000, .min_val = 101, + .max_val = 9999, .desc = "T3 (3GPP TS 48.018): Guards the suspend procedure", .unit = OSMO_TDEF_MS }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T4_1004, .default_val = 1000, .min_val = 101, + .max_val = 9999, .desc = "T4 (3GPP TS 48.018): Guards the resume procedure", .unit = OSMO_TDEF_MS }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T5_1005, .default_val = 10, .min_val = 2, .max_val = 29, + .desc = "T5 (3GPP TS 48.018): Guards the Radio Access Capability Update procedure", .unit = OSMO_TDEF_CUSTOM }, { .T = 3101, .default_val = 3, .desc = "RR Immediate Assignment" }, { .T = 3103, .default_val = 5, .desc = "Handover" }, { .T = 3105, .default_val = GSM_T3105_DEFAULT, .unit = OSMO_TDEF_MS, .desc = "Physical Information" }, diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.c b/tests/nanobts_omlattr/nanobts_omlattr_test.c index 658705e..e751eca 100644 --- a/tests/nanobts_omlattr/nanobts_omlattr_test.c +++ b/tests/nanobts_omlattr/nanobts_omlattr_test.c @@ -126,6 +126,16 @@ };
static struct osmo_tdef gsm_network_T_defs[] = { + { .T = GSM_BTS_TDEF_ID_BSSGP_T1_1001, .default_val = 3, .min_val = 2, + .max_val = 29, .desc = "T1 (3GPP TS 48.018): Guards the (un)blocking procedures" }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T2_1002, .default_val = 3, .min_val = 2, + .max_val = 119, .desc = "T2 (3GPP TS 48.018): Guards the reset procedure"}, + { .T = GSM_BTS_TDEF_ID_BSSGP_T3_1003, .default_val = 1000, .min_val = 101, + .max_val = 9999, .desc = "T3 (3GPP TS 48.018): Guards the suspend procedure", .unit = OSMO_TDEF_MS }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T4_1004, .default_val = 1000, .min_val = 101, + .max_val = 9999, .desc = "T4 (3GPP TS 48.018): Guards the resume procedure", .unit = OSMO_TDEF_MS }, + { .T = GSM_BTS_TDEF_ID_BSSGP_T5_1005, .default_val = 10, .min_val = 2, .max_val = 29, + .desc = "T5 (3GPP TS 48.018): Guards the Radio Access Capability Update procedure", .unit = OSMO_TDEF_CUSTOM }, { .T = 3105, .default_val = GSM_T3105_DEFAULT, .val = GSM_T3105_DEFAULT, .min_val = 0, .max_val = UINT8_MAX, .unit = OSMO_TDEF_MS, .desc = "Physical Information" }, { .T = 3212, .default_val = 5, .unit = OSMO_TDEF_CUSTOM, .min_val = 0, .max_val = UINT8_MAX, .desc = "Periodic Location Update timer, sent to MS (1 = 6 minutes)" }, diff --git a/tests/timer.vty b/tests/timer.vty index 774404b..aa36463 100644 --- a/tests/timer.vty +++ b/tests/timer.vty @@ -6,6 +6,11 @@ net: T8 = 10 s inter-BSC/MSC Handover outgoing, BSSMAP HO Command to final Clear timeout (default: 10 s) net: T10 = 6 s RR Assignment (default: 6 s) net: T101 = 10 s inter-BSC/MSC Handover incoming, BSSMAP HO Request to HO Accept (default: 10 s) +net: T1001 = 3 s T1 (3GPP TS 48.018): Guards the (un)blocking procedures (default: 3 s, range: [2 .. 29]) +net: T1002 = 3 s T2 (3GPP TS 48.018): Guards the reset procedure (default: 3 s, range: [2 .. 119]) +net: T1003 = 1000 ms T3 (3GPP TS 48.018): Guards the suspend procedure (default: 1000 ms, range: [101 .. 9999]) +net: T1004 = 1000 ms T4 (3GPP TS 48.018): Guards the resume procedure (default: 1000 ms, range: [101 .. 9999]) +net: T1005 = 10 T5 (3GPP TS 48.018): Guards the Radio Access Capability Update procedure (default: 10, range: [2 .. 29]) net: T3101 = 3 s RR Immediate Assignment (default: 3 s) net: T3103 = 5 s Handover (default: 5 s) net: T3105 = 100 ms Physical Information (default: 100 ms) @@ -80,6 +85,11 @@ net: T8 = 10 s inter-BSC/MSC Handover outgoing, BSSMAP HO Command to final Clear timeout (default: 10 s) net: T10 = 6 s RR Assignment (default: 6 s) net: T101 = 10 s inter-BSC/MSC Handover incoming, BSSMAP HO Request to HO Accept (default: 10 s) +net: T1001 = 3 s T1 (3GPP TS 48.018): Guards the (un)blocking procedures (default: 3 s, range: [2 .. 29]) +net: T1002 = 3 s T2 (3GPP TS 48.018): Guards the reset procedure (default: 3 s, range: [2 .. 119]) +net: T1003 = 1000 ms T3 (3GPP TS 48.018): Guards the suspend procedure (default: 1000 ms, range: [101 .. 9999]) +net: T1004 = 1000 ms T4 (3GPP TS 48.018): Guards the resume procedure (default: 1000 ms, range: [101 .. 9999]) +net: T1005 = 10 T5 (3GPP TS 48.018): Guards the Radio Access Capability Update procedure (default: 10, range: [2 .. 29]) net: T3101 = 3 s RR Immediate Assignment (default: 3 s) net: T3103 = 5 s Handover (default: 5 s) net: T3105 = 100 ms Physical Information (default: 100 ms)