diff options
Diffstat (limited to 'src/gprs/gprs_llc.c')
-rw-r--r-- | src/gprs/gprs_llc.c | 18 |
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); |