fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/41901?usp=email )

Change subject: trxcon/l1sched: add API for reading/updating UL SACCH cache
......................................................................

trxcon/l1sched: add API for reading/updating UL SACCH cache

Change-Id: Ica42dbc28cfdd7af2e1becdcc5d45337b70da8a7
Related: 15877ba05 ("trxcon: allow populating global SACCH cache via L1CTL")
---
M src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h
M src/host/trxcon/src/sched_prim.c
M src/host/trxcon/src/sched_trx.c
M src/host/trxcon/src/trxcon_fsm.c
4 files changed, 20 insertions(+), 8 deletions(-)

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




diff --git a/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h 
b/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h
index 39400cf..283f388 100644
--- a/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h
+++ b/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h
@@ -337,6 +337,9 @@
 void l1sched_reset(struct l1sched_state *sched, bool reset_clock);
 void l1sched_free(struct l1sched_state *sched);

+void l1sched_sacch_cache_read(struct l1sched_state *sched, uint8_t *out);
+void l1sched_sacch_cache_update(struct l1sched_state *sched, const uint8_t 
*in);
+
 /* Timeslot management functions */
 struct l1sched_ts *l1sched_add_ts(struct l1sched_state *sched, int tn);
 void l1sched_del_ts(struct l1sched_state *sched, int tn);
diff --git a/src/host/trxcon/src/sched_prim.c b/src/host/trxcon/src/sched_prim.c
index 4974557..fa46d91 100644
--- a/src/host/trxcon/src/sched_prim.c
+++ b/src/host/trxcon/src/sched_prim.c
@@ -102,11 +102,8 @@
        cached = (lchan->sacch.mr_cache[2] != 0x00
                && lchan->sacch.mr_cache[3] != 0x00
                && lchan->sacch.mr_cache[4] != 0x00);
-       if (!cached) {
-               memcpy(&lchan->sacch.mr_cache[0],
-                      &lchan->ts->sched->sacch_cache[0],
-                      sizeof(lchan->sacch.mr_cache));
-       }
+       if (!cached) /* populate from the global UL SACCH cache (if needed) */
+               l1sched_sacch_cache_read(lchan->ts->sched, 
lchan->sacch.mr_cache);

        /* Compose a new Measurement Report primitive */
        memcpy(msgb_put(msg, GSM_MACBLOCK_LEN),
diff --git a/src/host/trxcon/src/sched_trx.c b/src/host/trxcon/src/sched_trx.c
index f412400..237daca 100644
--- a/src/host/trxcon/src/sched_trx.c
+++ b/src/host/trxcon/src/sched_trx.c
@@ -153,7 +153,8 @@
                .priv = priv,
        };

-       memcpy(&sched->sacch_cache[0], &meas_rep_dummy[0], 
sizeof(meas_rep_dummy));
+       /* Populate UL SACCH cache */
+       l1sched_sacch_cache_update(sched, meas_rep_dummy);

        if (cfg->log_prefix == NULL)
                sched->log_prefix = talloc_asprintf(sched, "l1sched[0x%p]: ", 
sched);
@@ -193,7 +194,18 @@
        for (tn = 0; tn < ARRAY_SIZE(sched->ts); tn++)
                l1sched_del_ts(sched, tn);

-       memcpy(&sched->sacch_cache[0], &meas_rep_dummy[0], 
sizeof(meas_rep_dummy));
+       /* Reset UL SACCH cache */
+       l1sched_sacch_cache_update(sched, meas_rep_dummy);
+}
+
+void l1sched_sacch_cache_read(struct l1sched_state *sched, uint8_t *out)
+{
+       memcpy(out, sched->sacch_cache, sizeof(sched->sacch_cache));
+}
+
+void l1sched_sacch_cache_update(struct l1sched_state *sched, const uint8_t *in)
+{
+       memcpy(sched->sacch_cache, in, sizeof(sched->sacch_cache));
 }

 struct l1sched_ts *l1sched_add_ts(struct l1sched_state *sched, int tn)
diff --git a/src/host/trxcon/src/trxcon_fsm.c b/src/host/trxcon/src/trxcon_fsm.c
index 9545883..ce3c0dd 100644
--- a/src/host/trxcon/src/trxcon_fsm.c
+++ b/src/host/trxcon/src/trxcon_fsm.c
@@ -108,7 +108,7 @@
                        break;
                }

-               memcpy(&trxcon->sched->sacch_cache[0], req->data, 
req->data_len);
+               l1sched_sacch_cache_update(trxcon->sched, req->data);
                break;
        }
        default:

--
To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/41901?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: Ica42dbc28cfdd7af2e1becdcc5d45337b70da8a7
Gerrit-Change-Number: 41901
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to