bugfix: fix realtime issues with RRC (race condition)
When testing x2 handover, we found a race issue between the RRC thread and the phy/mac thread (which is calling rrc_rx_tx). The UE context was updated by the RRC thread but in the middle of the update (which consists of several function calls and variables' updates) the context was accessed by rrc_rx_tx. At this point, the context was in an inconsistent state. The solution is to access RRC data in the RRC thread only. The function rrc_rx_tx now just sends an ITTI message to the RRC thread. When receiving this message, the RRC thread does the processing that was done by the function rrc_rx_tx (in the new function rrc_subframe_process). This way, the race condition disappears. However we now send an ITTI message from the phy/mac thread to the RRC thread at each subframe. That might increase the processing time of the eNB. So maybe it's not the best solution. It may also improve the realtime performance because less work is done by the phy/mac realtime thread. To be checked somehow. Also, it may be possible that some other RRC functions are still called by the phy/mac thread, which should also be checked and replaced by ITTI messages (if this solution is considered to be correct).
Showing
Please register or sign in to comment