aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcu_l1_if.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pcu_l1_if.cpp')
-rw-r--r--src/pcu_l1_if.cpp40
1 files changed, 7 insertions, 33 deletions
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 438bfa86..49c91477 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -295,28 +295,6 @@ static int pcu_rx_rach_ind(struct gsm_pcu_if_rach_ind *rach_ind)
return rc;
}
-int flush_pdch(struct gprs_rlcmac_pdch *pdch, uint8_t trx, uint8_t ts)
-{
- struct gprs_rlcmac_paging *pag;
- struct gprs_rlcmac_sba *sba, *sba2;
-
- /* kick all TBF on slot */
- gprs_rlcmac_tbf::free_all(pdch);
-
- /* flush all pending paging messages */
- while ((pag = gprs_rlcmac_dequeue_paging(pdch)))
- talloc_free(pag);
-
- llist_for_each_entry_safe(sba, sba2, &gprs_rlcmac_sbas, list) {
- if (sba->trx == trx && sba->ts == ts) {
- llist_del(&sba->list);
- talloc_free(sba);
- }
- }
-
- return 0;
-}
-
static int pcu_rx_info_ind(struct gsm_pcu_if_info_ind *info_ind)
{
struct gprs_rlcmac_bts *bts = bts_main_data();
@@ -342,11 +320,8 @@ bssgp_failed:
/* free all TBF */
for (trx = 0; trx < 8; trx++) {
bts->trx[trx].arfcn = info_ind->trx[trx].arfcn;
- for (ts = 0; ts < 8; ts++) {
- if (bts->trx[trx].pdch[ts].enable)
- flush_pdch(&bts->trx[trx].pdch[ts],
- trx, ts);
- }
+ for (ts = 0; ts < 8; ts++)
+ bts->trx[trx].pdch[ts].free_resources(trx, ts);
}
gprs_bssgp_destroy_or_exit();
return 0;
@@ -465,7 +440,7 @@ bssgp_failed:
pdch = &bts->trx[trx].pdch[ts];
if ((info_ind->trx[trx].pdch_mask & (1 << ts))) {
/* FIXME: activate dynamically at RLCMAC */
- if (!pdch->enable) {
+ if (!pdch->is_enabled()) {
#ifdef ENABLE_SYSMODSP
if ((info_ind->flags &
PCU_IF_FLAG_SYSMO))
@@ -473,17 +448,16 @@ bssgp_failed:
bts->trx[trx].fl1h, ts);
#endif
pcu_tx_act_req(trx, ts, 1);
- INIT_LLIST_HEAD(&pdch->paging_list);
- pdch->enable = 1;
+ pdch->enable();
}
pdch->tsc = info_ind->trx[trx].tsc[ts];
LOGP(DL1IF, LOGL_INFO, "PDCH: trx=%d ts=%d\n",
trx, ts);
} else {
- if (pdch->enable) {
+ if (pdch->is_enabled()) {
pcu_tx_act_req(trx, ts, 0);
- pdch->enable = 0;
- flush_pdch(pdch, trx, ts);
+ pdch->free_resources(trx, ts);
+ pdch->disable();
}
}
}