summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-08-29 13:14:24 +0200
committerMax <msuraev@sysmocom.de>2017-08-30 08:26:12 +0000
commit5932ff04a1c7c3c831dae366d394d7ef0f8d1ffd (patch)
treef5faa9ea3f34b4d72bbc651725115fcb81053ebd
parente747a9b9231e286f4bc72848e039aaa9d76b269d (diff)
SI13: drop PBCCH-related bits
According to 3GPP TS 44.018 ยง1.8 the "network shall never enable PBCCH and PCCCH". Change-Id: I319e71a4b0c682361529e9c21377398a826b934b Related: OS#2400
-rw-r--r--openbsc/include/openbsc/rest_octets.h29
-rw-r--r--openbsc/src/libbsc/rest_octets.c43
-rw-r--r--openbsc/src/libbsc/system_information.c17
3 files changed, 20 insertions, 69 deletions
diff --git a/openbsc/include/openbsc/rest_octets.h b/openbsc/include/openbsc/rest_octets.h
index 49a231296..ca7b57c95 100644
--- a/openbsc/include/openbsc/rest_octets.h
+++ b/openbsc/include/openbsc/rest_octets.h
@@ -62,12 +62,6 @@ int rest_octets_si3(uint8_t *data, const struct gsm48_si_ro_info *si3);
/* Generate SI4 Rest Octets (Chapter 10.5.2.35) */
int rest_octets_si4(uint8_t *data, const struct gsm48_si_ro_info *si4, int len);
-enum pbcch_carrier_type {
- PBCCH_BCCH,
- PBCCH_ARFCN,
- PBCCH_MAIO
-};
-
/* TS 03.60 Chapter 6.3.3.1: Network Mode of Operation */
enum gprs_nmo {
GPRS_NMO_I = 0, /* CS pagin on GPRS paging or traffic channel */
@@ -112,25 +106,10 @@ struct gsm48_si13_info {
struct gprs_power_ctrl_pars pwr_ctrl_pars;
uint8_t bcch_change_mark;
uint8_t si_change_field;
- uint8_t pbcch_present;
-
- union {
- struct {
- uint8_t rac;
- uint8_t spgc_ccch_sup;
- uint8_t net_ctrl_ord;
- uint8_t prio_acc_thr;
- } no_pbcch;
- struct {
- uint8_t psi1_rep_per;
- uint8_t pb;
- uint8_t tsc;
- uint8_t tn;
- enum pbcch_carrier_type carrier_type;
- uint16_t arfcn;
- uint8_t maio;
- } pbcch;
- };
+ uint8_t rac;
+ uint8_t spgc_ccch_sup;
+ uint8_t net_ctrl_ord;
+ uint8_t prio_acc_thr;
};
/* Generate SI13 Rest Octests (Chapter 10.5.2.37b) */
diff --git a/openbsc/src/libbsc/rest_octets.c b/openbsc/src/libbsc/rest_octets.c
index fdab70a0c..78e7413a8 100644
--- a/openbsc/src/libbsc/rest_octets.c
+++ b/openbsc/src/libbsc/rest_octets.c
@@ -816,39 +816,16 @@ int rest_octets_si13(uint8_t *data, const struct gsm48_si13_info *si13)
bitvec_set_uint(&bv, si13->bcch_change_mark, 2);
append_gprs_mobile_alloc(&bv);
}
- if (!si13->pbcch_present) {
- /* PBCCH not present in cell */
- bitvec_set_bit(&bv, 0);
- bitvec_set_uint(&bv, si13->no_pbcch.rac, 8);
- bitvec_set_bit(&bv, si13->no_pbcch.spgc_ccch_sup);
- bitvec_set_uint(&bv, si13->no_pbcch.prio_acc_thr, 3);
- bitvec_set_uint(&bv, si13->no_pbcch.net_ctrl_ord, 2);
- append_gprs_cell_opt(&bv, &si13->cell_opts);
- append_gprs_pwr_ctrl_pars(&bv, &si13->pwr_ctrl_pars);
- } else {
- /* PBCCH present in cell */
- bitvec_set_bit(&bv, 1);
- bitvec_set_uint(&bv, si13->pbcch.psi1_rep_per, 4);
- /* PBCCH Descripiton */
- bitvec_set_uint(&bv, si13->pbcch.pb, 4);
- bitvec_set_uint(&bv, si13->pbcch.tsc, 3);
- bitvec_set_uint(&bv, si13->pbcch.tn, 3);
- switch (si13->pbcch.carrier_type) {
- case PBCCH_BCCH:
- bitvec_set_bit(&bv, 0);
- bitvec_set_bit(&bv, 0);
- break;
- case PBCCH_ARFCN:
- bitvec_set_bit(&bv, 0);
- bitvec_set_bit(&bv, 1);
- bitvec_set_uint(&bv, si13->pbcch.arfcn, 10);
- break;
- case PBCCH_MAIO:
- bitvec_set_bit(&bv, 1);
- bitvec_set_uint(&bv, si13->pbcch.maio, 6);
- break;
- }
- }
+ /* PBCCH not present in cell:
+ it shall never be indicated according to 3GPP TS 44.018 Table 10.5.2.37b.1 */
+ bitvec_set_bit(&bv, 0);
+ bitvec_set_uint(&bv, si13->rac, 8);
+ bitvec_set_bit(&bv, si13->spgc_ccch_sup);
+ bitvec_set_uint(&bv, si13->prio_acc_thr, 3);
+ bitvec_set_uint(&bv, si13->net_ctrl_ord, 2);
+ append_gprs_cell_opt(&bv, &si13->cell_opts);
+ append_gprs_pwr_ctrl_pars(&bv, &si13->pwr_ctrl_pars);
+
/* 3GPP TS 44.018 Release 6 / 10.5.2.37b */
bitvec_set_bit(&bv, H); /* added Release 99 */
/* claim our SGSN is compatible with Release 99, as EDGE and EGPRS
diff --git a/openbsc/src/libbsc/system_information.c b/openbsc/src/libbsc/system_information.c
index dcabbbdd1..2bc87693e 100644
--- a/openbsc/src/libbsc/system_information.c
+++ b/openbsc/src/libbsc/system_information.c
@@ -1079,15 +1079,10 @@ static struct gsm48_si13_info si13_default = {
},
.bcch_change_mark = 1,
.si_change_field = 0,
- .pbcch_present = 0,
- {
- .no_pbcch = {
- .rac = 0, /* needs to be patched */
- .spgc_ccch_sup = 0,
- .net_ctrl_ord = 0,
- .prio_acc_thr = 6,
- },
- },
+ .rac = 0, /* needs to be patched */
+ .spgc_ccch_sup = 0,
+ .net_ctrl_ord = 0,
+ .prio_acc_thr = 6,
};
static int generate_si13(enum osmo_sysinfo_type t, struct gsm_bts *bts)
@@ -1102,8 +1097,8 @@ static int generate_si13(enum osmo_sysinfo_type t, struct gsm_bts *bts)
si13->header.skip_indicator = 0;
si13->header.system_information = GSM48_MT_RR_SYSINFO_13;
- si13_default.no_pbcch.rac = bts->gprs.rac;
- si13_default.no_pbcch.net_ctrl_ord = bts->gprs.net_ctrl_ord;
+ si13_default.rac = bts->gprs.rac;
+ si13_default.net_ctrl_ord = bts->gprs.net_ctrl_ord;
si13_default.cell_opts.ctrl_ack_type_use_block =
bts->gprs.ctrl_ack_type_use_block;