forked from cellular-infrastructure/osmo-pcu
tbf: Move pending LLC frames when merging MS objects
Currently the pending LLC packets are lost in some cases when MS objects are merged, for instance after a RACH when there were 2 MS object for the same MS (they get merged, when the TLLI is known for both objects). This patch modifies GprsMs::merge_old_ms to move all pending LLC packets (if there are any) to the current MS object. Sponsored-by: On-Waves ehf
This commit is contained in:
parent
257b630216
commit
e0b21f41c2
|
@ -322,6 +322,8 @@ void GprsMs::merge_old_ms(GprsMs *old_ms)
|
||||||
if (!ms_class() && old_ms->ms_class())
|
if (!ms_class() && old_ms->ms_class())
|
||||||
set_ms_class(old_ms->ms_class());
|
set_ms_class(old_ms->ms_class());
|
||||||
|
|
||||||
|
m_llc_queue.move_and_merge(&old_ms->m_llc_queue);
|
||||||
|
|
||||||
old_ms->reset();
|
old_ms->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -936,7 +936,7 @@ static void test_tbf_dl_flow_and_rach_single_phase()
|
||||||
OSMO_ASSERT(ms->dl_tbf() == dl_tbf);
|
OSMO_ASSERT(ms->dl_tbf() == dl_tbf);
|
||||||
|
|
||||||
/* No queued packets should be lost */
|
/* No queued packets should be lost */
|
||||||
/* OSMO_ASSERT(ms->llc_queue()->size() == 2); */
|
OSMO_ASSERT(ms->llc_queue()->size() == 2);
|
||||||
|
|
||||||
printf("=== end %s ===\n", __func__);
|
printf("=== end %s ===\n", __func__);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1932,4 +1932,4 @@ No bctx
|
||||||
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes state from FLOW to FINISHED
|
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes state from FLOW to FINISHED
|
||||||
- Scheduling Ack/Nack, because TLLI is included.
|
- Scheduling Ack/Nack, because TLLI is included.
|
||||||
- Scheduling Ack/Nack, because last block has CV==0.
|
- Scheduling Ack/Nack, because last block has CV==0.
|
||||||
New MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 0
|
New MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2
|
||||||
|
|
Loading…
Reference in New Issue