lapdm: make sure we flush all queues whenever entering IDLE state

this fixes a memory leak where the final UA would always remain
in memory after a LAPDm entity has been disconnected.
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c
index 2679ca0..e496461 100644
--- a/src/gsm/lapdm.c
+++ b/src/gsm/lapdm.c
@@ -594,6 +594,7 @@
 			rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
 			/* flush tx buffers */
 			lapdm_dl_flush_tx(dl);
+			lapdm_dl_flush_send(dl);
 			/* go back to idle state */
 			lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
 			/* NOTE: we must not change any other states or buffers
@@ -893,6 +894,8 @@
 			/* reset Timer T200 */
 			osmo_timer_del(&dl->t200);
 			/* go to idle state */
+			lapdm_dl_flush_tx(dl);
+			lapdm_dl_flush_send(dl);
 			lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
 			rc = send_rll_simple(RSL_MT_REL_CONF, mctx);
 			msgb_free(msg);
@@ -1024,6 +1027,8 @@
 		/* reset Timer T200 */
 		osmo_timer_del(&dl->t200);
 		/* enter idle state */
+		lapdm_dl_flush_tx(dl);
+		lapdm_dl_flush_send(dl);
 		lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
 		/* send notification to L3 */
 		rc = send_rll_simple(rsl_msg, mctx);
@@ -1074,6 +1079,8 @@
 			/* reset Timer T200 */
 			osmo_timer_del(&dl->t200);
 			/* go to idle state */
+			lapdm_dl_flush_tx(dl);
+			lapdm_dl_flush_send(dl);
 			lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
 			rc = send_rll_simple(RSL_MT_REL_CONF, mctx);
 			msgb_free(msg);
@@ -1096,6 +1103,8 @@
 				rc = send_rll_simple(RSL_MT_REL_IND, mctx);
 				msgb_free(msg);
 				/* go to idle state */
+				lapdm_dl_flush_tx(dl);
+				lapdm_dl_flush_send(dl);
 				lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
 				return 0;
 			}
@@ -1108,6 +1117,8 @@
 				rc = send_rll_simple(RSL_MT_REL_IND, mctx);
 				msgb_free(msg);
 				/* go to idle state */
+				lapdm_dl_flush_tx(dl);
+				lapdm_dl_flush_send(dl);
 				lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
 				return 0;
 			}