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#2400changes/55/3955/1
parent
75e046b278
commit
72fbc95c55
|
@ -63,12 +63,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 */
|
||||
|
@ -113,25 +107,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) */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1081,15 +1081,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)
|
||||
|
@ -1104,8 +1099,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;
|
||||
|
|
Loading…
Reference in New Issue