Change in osmo-pcu[master]: Abort scheduling of pending Pkt Ul Ass if tbf goes into RELEASE step

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Thu Oct 14 21:21:08 UTC 2021


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/25799 )

Change subject: Abort scheduling of pending Pkt Ul Ass if tbf goes into RELEASE step
......................................................................

Abort scheduling of pending Pkt Ul Ass if tbf goes into RELEASE step

Change-Id: I20bab79070274b1d8f6b4e1867b30de61983ab54
---
M src/tbf_fsm.c
M src/tbf_ul_ass_fsm.c
M src/tbf_ul_ass_fsm.h
3 files changed, 31 insertions(+), 4 deletions(-)

Approvals:
  osmith: Looks good to me, but someone else must approve
  fixeria: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/tbf_fsm.c b/src/tbf_fsm.c
index 36981e6..fb947b2 100644
--- a/src/tbf_fsm.c
+++ b/src/tbf_fsm.c
@@ -190,6 +190,8 @@
 		tbf_fsm_state_chg(fi, TBF_ST_FLOW);
 		break;
 	case TBF_EV_MAX_N3105:
+		/* We are going to release, so abort any Pkt Ul Ass pending to be scheduled: */
+		osmo_fsm_inst_dispatch(tbf_ul_ass_fi(ctx->tbf), TBF_UL_ASS_EV_ABORT, NULL);
 		ctx->T_release = 3195;
 		tbf_fsm_state_chg(fi, TBF_ST_RELEASING);
 		break;
diff --git a/src/tbf_ul_ass_fsm.c b/src/tbf_ul_ass_fsm.c
index bf70a14..ab23fbd 100644
--- a/src/tbf_ul_ass_fsm.c
+++ b/src/tbf_ul_ass_fsm.c
@@ -48,6 +48,7 @@
 	{ TBF_UL_ASS_EV_CREATE_RLCMAC_MSG, "CREATE_RLCMAC_MSG" },
 	{ TBF_UL_ASS_EV_RX_ASS_CTRL_ACK, "RX_ASS_CTRL_ACK" },
 	{ TBF_UL_ASS_EV_ASS_POLL_TIMEOUT, "ASS_POLL_TIMEOUT" },
+	{ TBF_UL_ASS_EV_ABORT, "ABORT" },
 	{ 0, NULL }
 };
 
@@ -169,6 +170,9 @@
 	case TBF_UL_ASS_EV_SCHED_ASS_REJ:
 		tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_SEND_ASS_REJ);
 		break;
+	case TBF_UL_ASS_EV_ABORT:
+		/* Nothing to do, we are already in proper state */
+		break;
 	default:
 		OSMO_ASSERT(0);
 	}
@@ -187,6 +191,10 @@
 			return;
 		tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_WAIT_ACK);
 		break;
+	case TBF_UL_ASS_EV_ABORT:
+		/* Cancel pending schedule for Pkt Ul Ass: */
+		tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);
+		break;
 	default:
 		OSMO_ASSERT(0);
 	}
@@ -205,6 +213,10 @@
 			return;
 		tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);
 		break;
+	case TBF_UL_ASS_EV_ABORT:
+		/* Cancel pending schedule for Pkt Ul Ass Rej: */
+		tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);
+		break;
 	default:
 		OSMO_ASSERT(0);
 	}
@@ -230,6 +242,12 @@
 			tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);
 		}
 		break;
+	case TBF_UL_ASS_EV_ABORT:
+		/* There's nothing we can do here, we already transmitted and
+		 * hence we must keep the POLL since the MS is already expected
+		 * to transmit there. Whenever we receive event CTRL_ACK or
+		 * TIMEOUT above, it will move back to ST_NONE autoamtically */
+		break;
 	default:
 		OSMO_ASSERT(0);
 	}
@@ -252,7 +270,8 @@
 	[TBF_UL_ASS_NONE] = {
 		.in_event_mask =
 			X(TBF_UL_ASS_EV_SCHED_ASS) |
-			X(TBF_UL_ASS_EV_SCHED_ASS_REJ),
+			X(TBF_UL_ASS_EV_SCHED_ASS_REJ) |
+			X(TBF_UL_ASS_EV_ABORT),
 		.out_state_mask =
 			X(TBF_UL_ASS_SEND_ASS) |
 			X(TBF_UL_ASS_SEND_ASS_REJ),
@@ -261,7 +280,9 @@
 		.onenter = st_none_on_enter,
 	},
 	[TBF_UL_ASS_SEND_ASS] = {
-		.in_event_mask = X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG),
+		.in_event_mask =
+			X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG) |
+			X(TBF_UL_ASS_EV_ABORT),
 		.out_state_mask =
 			X(TBF_UL_ASS_WAIT_ACK) |
 			X(TBF_UL_ASS_NONE),
@@ -269,7 +290,9 @@
 		.action = st_send_ass,
 	},
 	[TBF_UL_ASS_SEND_ASS_REJ] = {
-		.in_event_mask = X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG),
+		.in_event_mask =
+			X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG) |
+			X(TBF_UL_ASS_EV_ABORT),
 		.out_state_mask = X(TBF_UL_ASS_NONE),
 		.name = "SEND_ASS_REJ",
 		.action = st_send_ass_rej,
@@ -277,7 +300,8 @@
 	[TBF_UL_ASS_WAIT_ACK] = {
 		.in_event_mask =
 			X(TBF_UL_ASS_EV_RX_ASS_CTRL_ACK) |
-			X(TBF_UL_ASS_EV_ASS_POLL_TIMEOUT),
+			X(TBF_UL_ASS_EV_ASS_POLL_TIMEOUT) |
+			X(TBF_UL_ASS_EV_ABORT),
 		.out_state_mask =
 			X(TBF_UL_ASS_NONE) |
 			X(TBF_UL_ASS_SEND_ASS),
diff --git a/src/tbf_ul_ass_fsm.h b/src/tbf_ul_ass_fsm.h
index 67bb2f4..34b81a7 100644
--- a/src/tbf_ul_ass_fsm.h
+++ b/src/tbf_ul_ass_fsm.h
@@ -32,6 +32,7 @@
 	TBF_UL_ASS_EV_CREATE_RLCMAC_MSG, /* Scheduler wants to gen+Tx the Ass (rej): data=tbf_ul_ass_ev_create_rlcmac_msg_ctx */
 	TBF_UL_ASS_EV_RX_ASS_CTRL_ACK, /* Received CTRL ACK answering poll set on Pkt Ul Ass */
 	TBF_UL_ASS_EV_ASS_POLL_TIMEOUT, /* Pdch Ul Controller signals timeout for poll set on Pkt Ul Ass */
+	TBF_UL_ASS_EV_ABORT, /* TBF is starting to be RELEASED, drop in progress assignment */
 };
 
 enum tbf_ul_ass_fsm_states {

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/25799
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I20bab79070274b1d8f6b4e1867b30de61983ab54
Gerrit-Change-Number: 25799
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211014/6bc500ab/attachment.htm>


More information about the gerrit-log mailing list