pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/libosmo-gprs/+/33846 )

Change subject: rlcmac: tbf_ul: Free TBF if submitting RACH.req fails
......................................................................

rlcmac: tbf_ul: Free TBF if submitting RACH.req fails

Change-Id: I63d68e524629a90931497d1181f134830b4819f9
---
M include/osmocom/gprs/rlcmac/tbf_ul_fsm.h
M src/rlcmac/tbf_ul_ass_fsm.c
M src/rlcmac/tbf_ul_fsm.c
3 files changed, 23 insertions(+), 2 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved




diff --git a/include/osmocom/gprs/rlcmac/tbf_ul_fsm.h 
b/include/osmocom/gprs/rlcmac/tbf_ul_fsm.h
index b1f82e3..059dad4 100644
--- a/include/osmocom/gprs/rlcmac/tbf_ul_fsm.h
+++ b/include/osmocom/gprs/rlcmac/tbf_ul_fsm.h
@@ -34,6 +34,7 @@
 enum tbf_ul_fsm_event {
        GPRS_RLCMAC_TBF_UL_EV_UL_ASS_START,
        GPRS_RLCMAC_TBF_UL_EV_UL_ASS_COMPL,
+       GPRS_RLCMAC_TBF_UL_EV_UL_ASS_REJ,
        GPRS_RLCMAC_TBF_UL_EV_FIRST_UL_DATA_SENT,
        GPRS_RLCMAC_TBF_UL_EV_N3104_MAX,
        GPRS_RLCMAC_TBF_UL_EV_RX_UL_ACK_NACK, /* data: struct 
tbf_ul_ass_ev_rx_ul_ack_nack* */
diff --git a/src/rlcmac/tbf_ul_ass_fsm.c b/src/rlcmac/tbf_ul_ass_fsm.c
index da6e7a7..35b6ca7 100644
--- a/src/rlcmac/tbf_ul_ass_fsm.c
+++ b/src/rlcmac/tbf_ul_ass_fsm.c
@@ -262,12 +262,18 @@
 static void st_idle(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
        struct gprs_rlcmac_tbf_ul_ass_fsm_ctx *ctx = (struct 
gprs_rlcmac_tbf_ul_ass_fsm_ctx *)fi->priv;
+       int rc;
+
        switch (event) {
        case GPRS_RLCMAC_TBF_UL_ASS_EV_START:
                /* Inform the main TBF state about the assignment starting: */
                osmo_fsm_inst_dispatch(ctx->ul_tbf->state_fsm.fi, 
GPRS_RLCMAC_TBF_UL_EV_UL_ASS_START, NULL);
                ctx->ass_type = *(enum gprs_rlcmac_tbf_ul_ass_type *)data;
-               submit_rach_req(ctx);
+               rc = submit_rach_req(ctx);
+               if (rc < 0) {
+                       osmo_fsm_inst_dispatch(ctx->ul_tbf->state_fsm.fi, 
GPRS_RLCMAC_TBF_UL_EV_UL_ASS_REJ, NULL);
+                       break;
+               }
                tbf_ul_ass_fsm_state_chg(fi, 
GPRS_RLCMAC_TBF_UL_ASS_ST_WAIT_CCCH_IMM_ASS);
                break;
        case GPRS_RLCMAC_TBF_UL_ASS_EV_START_DIRECT_2PHASE:
diff --git a/src/rlcmac/tbf_ul_fsm.c b/src/rlcmac/tbf_ul_fsm.c
index 37d2e4a..2265aa4 100644
--- a/src/rlcmac/tbf_ul_fsm.c
+++ b/src/rlcmac/tbf_ul_fsm.c
@@ -33,6 +33,7 @@
 static const struct value_string tbf_ul_fsm_event_names[] = {
        { GPRS_RLCMAC_TBF_UL_EV_UL_ASS_START,                   "UL_ASS_START" 
},
        { GPRS_RLCMAC_TBF_UL_EV_UL_ASS_COMPL,                   "UL_ASS_COMPL" 
},
+       { GPRS_RLCMAC_TBF_UL_EV_UL_ASS_REJ,                     "UL_ASS_REJ" },
        { GPRS_RLCMAC_TBF_UL_EV_FIRST_UL_DATA_SENT,             
"FIRST_UL_DATA_SENT" },
        { GPRS_RLCMAC_TBF_UL_EV_N3104_MAX,                      "N3104_MAX" },
        { GPRS_RLCMAC_TBF_UL_EV_RX_UL_ACK_NACK,                 
"RX_UL_ACK_NACK" },
@@ -164,6 +165,9 @@
                configure_ul_tbf(ctx);
                tbf_ul_fsm_state_chg(fi, GPRS_RLCMAC_TBF_UL_ST_FLOW);
                break;
+       case GPRS_RLCMAC_TBF_UL_EV_UL_ASS_REJ:
+               gprs_rlcmac_ul_tbf_free(ctx->ul_tbf);
+               break;
        default:
                OSMO_ASSERT(0);
        }
@@ -282,7 +286,8 @@
        },
        [GPRS_RLCMAC_TBF_UL_ST_WAIT_ASSIGN] = {
                .in_event_mask =
-                       X(GPRS_RLCMAC_TBF_UL_EV_UL_ASS_COMPL),
+                       X(GPRS_RLCMAC_TBF_UL_EV_UL_ASS_COMPL) |
+                       X(GPRS_RLCMAC_TBF_UL_EV_UL_ASS_REJ),
                .out_state_mask =
                        X(GPRS_RLCMAC_TBF_UL_ST_FLOW),
                .name = "ASSIGN",

--
To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33846
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-gprs
Gerrit-Branch: master
Gerrit-Change-Id: I63d68e524629a90931497d1181f134830b4819f9
Gerrit-Change-Number: 33846
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to