aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs/gprs_llc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gprs/gprs_llc.c')
-rw-r--r--src/gprs/gprs_llc.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gprs/gprs_llc.c b/src/gprs/gprs_llc.c
index 37bd8804f..0b4a5de94 100644
--- a/src/gprs/gprs_llc.c
+++ b/src/gprs/gprs_llc.c
@@ -350,6 +350,12 @@ int gprs_llc_tx_ui(struct msgb *msg, uint8_t sapi, int command,
return -EFBIG;
}
+ if ((sapi != GPRS_SAPI_GMM) && lle->llme->suspended) {
+ LOGP(DLLC, LOGL_DEBUG, "LLC TX: suspended TLLI 0x08x, "
+ "dropping UI frame\n", msgb_tlli(msg));
+ return 0;
+ }
+
/* Update LLE's (BVCI, NSEI) tuple */
lle->llme->bvci = msgb_bvci(msg);
lle->llme->nsei = msgb_nsei(msg);
@@ -846,6 +852,18 @@ int gprs_llgmm_assign(struct gprs_llc_llme *llme,
return 0;
}
+int gprs_llgmm_suspend(struct gprs_llc_llme* llme)
+{
+ llme->suspended = 1;
+ return 0;
+}
+
+int gprs_llgmm_resume(struct gprs_llc_llme* llme)
+{
+ llme->suspended = 0;
+ return 0;
+}
+
int gprs_llc_init(const char *cipher_plugin_path)
{
return gprs_cipher_load(cipher_plugin_path);