forked from cellular-infrastructure/osmo-pcu
sba: Move freeing a sba into a central place
This commit is contained in:
parent
93e048fe27
commit
b98dd9e240
10
src/bts.cpp
10
src/bts.cpp
|
@ -1052,10 +1052,7 @@ int gprs_rlcmac_pdch::rcv_control_block(
|
|||
} else {
|
||||
ta = sba->ta;
|
||||
bts()->timing_advance()->remember(tlli, ta);
|
||||
#warning "SBA deleted inline.. enforce capsulation"
|
||||
bts()->sba_freed();
|
||||
llist_del(&sba->list);
|
||||
talloc_free(sba);
|
||||
bts()->sba()->free_sba(sba);
|
||||
}
|
||||
if (ul_control_block->u.Packet_Resource_Request.Exist_MS_Radio_Access_capability)
|
||||
ms_class = Decoding::get_ms_class_by_capability(&ul_control_block->u.Packet_Resource_Request.MS_Radio_Access_capability);
|
||||
|
@ -1101,11 +1098,8 @@ int gprs_rlcmac_pdch::rcv_control_block(
|
|||
"block, but there is no resource request "
|
||||
"scheduled!\n");
|
||||
} else {
|
||||
#warning "SBA deleted inline.. enforce capsulation"
|
||||
bts()->timing_advance()->remember(ul_control_block->u.Packet_Measurement_Report.TLLI, sba->ta);
|
||||
bts()->sba_freed();
|
||||
llist_del(&sba->list);
|
||||
talloc_free(sba);
|
||||
bts()->sba()->free_sba(sba);
|
||||
}
|
||||
gprs_rlcmac_meas_rep(&ul_control_block->u.Packet_Measurement_Report);
|
||||
break;
|
||||
|
|
19
src/sba.cpp
19
src/sba.cpp
|
@ -124,14 +124,18 @@ uint32_t SBAController::sched(uint8_t trx, uint8_t ts, uint32_t fn, uint8_t bloc
|
|||
int SBAController::timeout(struct gprs_rlcmac_sba *sba)
|
||||
{
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "Poll timeout for SBA\n");
|
||||
llist_del(&sba->list);
|
||||
m_bts.sba_timedout();
|
||||
m_bts.sba_freed();
|
||||
talloc_free(sba);
|
||||
|
||||
free_sba(sba);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SBAController::free_sba(gprs_rlcmac_sba *sba)
|
||||
{
|
||||
m_bts.sba_freed();
|
||||
llist_del(&sba->list);
|
||||
talloc_free(sba);
|
||||
}
|
||||
|
||||
void SBAController::free_resources(struct gprs_rlcmac_pdch *pdch)
|
||||
{
|
||||
struct gprs_rlcmac_sba *sba, *sba2;
|
||||
|
@ -139,10 +143,7 @@ void SBAController::free_resources(struct gprs_rlcmac_pdch *pdch)
|
|||
const uint8_t ts_no = pdch->ts_no;
|
||||
|
||||
llist_for_each_entry_safe(sba, sba2, &m_sbas, list) {
|
||||
if (sba->trx_no == trx_no && sba->ts_no == ts_no) {
|
||||
llist_del(&sba->list);
|
||||
m_bts.sba_freed();
|
||||
talloc_free(sba);
|
||||
}
|
||||
if (sba->trx_no == trx_no && sba->ts_no == ts_no)
|
||||
free_sba(sba);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue