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

Change subject: Move call to bts_snd_dl_ass() from tbf_dl.cpp to tbf_dl_fsm.c
......................................................................

Move call to bts_snd_dl_ass() from tbf_dl.cpp to tbf_dl_fsm.c

It makes more sense to have it there, where it is transmitted with more
control depending on current state. Furthermore, it's
counterpart/continuation TBF_EV_ASSIGN_PCUIF_CNF logic is already there,
so it makes sense to have the whole logic together.

Change-Id: I8af39d3087ccf197321f0c71cb29b67adbe1f36e
---
M src/tbf_dl.cpp
M src/tbf_dl_fsm.c
2 files changed, 26 insertions(+), 10 deletions(-)

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




diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 17d2934..40442c3 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -485,9 +485,6 @@

        /* change state */
        osmo_fsm_inst_dispatch(tbf->state_fi, TBF_EV_ASSIGN_ADD_CCCH, NULL);
-
-       /* send immediate assignment */
-       bts_snd_dl_ass(ms->bts, tbf);
 }

 int dl_tbf_upgrade_to_multislot(struct gprs_rlcmac_dl_tbf *dl_tbf)
diff --git a/src/tbf_dl_fsm.c b/src/tbf_dl_fsm.c
index a977507..02e1ff5 100644
--- a/src/tbf_dl_fsm.c
+++ b/src/tbf_dl_fsm.c
@@ -104,6 +104,7 @@
 static void st_assign_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
 {
        struct tbf_dl_fsm_ctx *ctx = (struct tbf_dl_fsm_ctx *)fi->priv;
+       struct GprsMs *ms = tbf_ms(ctx->tbf);
        unsigned long val;
        unsigned int sec, micro;

@@ -125,20 +126,29 @@
                          sec, micro);
                osmo_timer_schedule(&fi->timer, sec, micro);
        } else {
-                /* GPRS_RLCMAC_FLAG_CCCH is set, so here we submitted an DL Ass
+                /* GPRS_RLCMAC_FLAG_CCCH is set, so here we submit a DL Ass
                  * through PCUIF on CCCH */
+               OSMO_ASSERT(ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH));
+               /* Send CCCH (PCH) Immediate Assignment over PCUIF: */
+               bts_snd_dl_ass(ms->bts, ctx->dl_tbf);
        }
 }

 static void st_assign(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
        struct tbf_dl_fsm_ctx *ctx = (struct tbf_dl_fsm_ctx *)fi->priv;
+       struct GprsMs *ms;
        unsigned long val;
        unsigned int sec, micro;

        switch (event) {
        case TBF_EV_ASSIGN_ADD_CCCH:
+               /* Note: This code path is not really used nowadays, since 
ADD_CCCH is
+                * only dispatched during dl_tbf allocation (st=NEW) */
+               ms = tbf_ms(ctx->tbf);
                mod_ass_type(ctx, GPRS_RLCMAC_FLAG_CCCH, true);
+               /* Re-send CCCH (PCH) Immediate Assignment over PCUIF: */
+               bts_snd_dl_ass(ms->bts, ctx->dl_tbf);
                break;
        case TBF_EV_ASSIGN_ADD_PACCH:
                mod_ass_type(ctx, GPRS_RLCMAC_FLAG_PACCH, true);
@@ -210,13 +220,8 @@
                 * from continuing and start assignment on CCCH again */
                if ((ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)) &&
                    !dl_tbf_first_dl_ack_rcvd(ctx->dl_tbf)) {
-                       struct GprsMs *ms = tbf_ms(ctx->tbf);
-                       LOGPTBFDL(ctx->dl_tbf, LOGL_DEBUG,
-                                 "Re-send downlink assignment on PCH 
(IMSI=%s)\n",
-                                 ms_imsi_is_valid(ms) ? ms_imsi(ms) : "");
+                       LOGPTBFDL(ctx->dl_tbf, LOGL_DEBUG, "Retransmit 
ImmAss[PktDlAss] on PCH\n");
                        tbf_dl_fsm_state_chg(fi, TBF_ST_ASSIGN);
-                       /* send immediate assignment */
-                       bts_snd_dl_ass(ms->bts, ctx->dl_tbf);
                }
                break;
        case TBF_EV_LAST_DL_DATA_SENT:

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I8af39d3087ccf197321f0c71cb29b67adbe1f36e
Gerrit-Change-Number: 33280
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to