aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs_ms.cpp
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-08-14 12:50:54 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-08-14 16:35:29 +0200
commitac289050825f23320ee60d9bfae87ee3a25fb2c5 (patch)
tree0a8b1a84d20274bd80386e1b3c65a59525c1bd42 /src/gprs_ms.cpp
parent04e72d34f5cf885a4d6e2e6b2f2575ad09d0c007 (diff)
tbf: Handle TLLI change on DL
When doing an RA Update the network can request to change the TLLI. In this case, there can be 2 MS objects with different TLLI for a single real MS. The first is associated with the old TLLI and the IMSI, while the second is associated with the new TLLI and no IMSI if it had been created for the uplink TBF. When the first message with the new TLLI and the IMSI arrives from the network, the PCU is able to detect this. Currently this is not handled properly. The TBFs of the old MS object are not cleaned up properly, keeping the old MS from being deleted. This patch modifies gprs_rlcmac_dl_tbf::handle to check for this and if neccessary to move an existing DL TBF and to clean up the old MS object to ensure its deletion. Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/gprs_ms.cpp')
-rw-r--r--src/gprs_ms.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp
index e0023e3d..82f17848 100644
--- a/src/gprs_ms.cpp
+++ b/src/gprs_ms.cpp
@@ -297,6 +297,20 @@ void GprsMs::update_status()
}
}
+void GprsMs::reset()
+{
+ LOGP(DRLCMAC, LOGL_INFO,
+ "Clearing MS object, TLLI: 0x%08x, IMSI: '%s'\n",
+ tlli(), imsi());
+
+ stop_timer();
+
+ m_tlli = 0;
+ m_new_dl_tlli = 0;
+ m_new_ul_tlli = 0;
+ m_imsi[0] = '\0';
+}
+
void GprsMs::set_tlli(uint32_t tlli)
{
if (tlli == m_tlli || tlli == m_new_ul_tlli)