Review at  https://gerrit.osmocom.org/6811

trxcon/scheduler: preprocess UL bursts before sending

Having a possibility to preprocess UL burst before sending to
transceiver is required for the further ciphering support
integration and probably some other tasks.

Change-Id: Ia6eead5d4f51d7c0bf277b9d5ebb0a74676df567
---
M src/host/trxcon/sched_lchan_rach.c
M src/host/trxcon/sched_lchan_tchf.c
M src/host/trxcon/sched_lchan_xcch.c
M src/host/trxcon/sched_trx.c
M src/host/trxcon/sched_trx.h
5 files changed, 27 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/11/6811/1

diff --git a/src/host/trxcon/sched_lchan_rach.c 
b/src/host/trxcon/sched_lchan_rach.c
index b26e279..2a09a37 100644
--- a/src/host/trxcon/sched_lchan_rach.c
+++ b/src/host/trxcon/sched_lchan_rach.c
@@ -86,11 +86,9 @@
 
        LOGP(DSCHD, LOGL_DEBUG, "Transmitting RACH fn=%u\n", fn);
 
-       /* Send burst to transceiver */
-       rc = trx_if_tx_burst(trx, ts->index, fn, trx->tx_power, burst);
+       /* Forward burst to scheduler */
+       rc = sched_trx_handle_tx_burst(trx, ts, lchan, fn, burst);
        if (rc) {
-               LOGP(DSCHD, LOGL_ERROR, "Could not send burst to 
transceiver\n");
-
                /* Forget this primitive */
                sched_prim_drop(lchan);
 
diff --git a/src/host/trxcon/sched_lchan_tchf.c 
b/src/host/trxcon/sched_lchan_tchf.c
index e562a49..45fa1c2 100644
--- a/src/host/trxcon/sched_lchan_tchf.c
+++ b/src/host/trxcon/sched_lchan_tchf.c
@@ -258,11 +258,9 @@
        LOGP(DSCHD, LOGL_DEBUG, "Transmitting %s fn=%u ts=%u burst=%u\n",
                lchan_desc->name, fn, ts->index, bid);
 
-       /* Send burst to transceiver */
-       rc = trx_if_tx_burst(trx, ts->index, fn, trx->tx_power, burst);
+       /* Forward burst to scheduler */
+       rc = sched_trx_handle_tx_burst(trx, ts, lchan, fn, burst);
        if (rc) {
-               LOGP(DSCHD, LOGL_ERROR, "Could not send burst to 
transceiver\n");
-
                /* Forget this primitive */
                sched_prim_drop(lchan);
 
diff --git a/src/host/trxcon/sched_lchan_xcch.c 
b/src/host/trxcon/sched_lchan_xcch.c
index d395b1d..c71b10f 100644
--- a/src/host/trxcon/sched_lchan_xcch.c
+++ b/src/host/trxcon/sched_lchan_xcch.c
@@ -170,11 +170,9 @@
        LOGP(DSCHD, LOGL_DEBUG, "Transmitting %s fn=%u ts=%u burst=%u\n",
                lchan_desc->name, fn, ts->index, bid);
 
-       /* Send burst to transceiver */
-       rc = trx_if_tx_burst(trx, ts->index, fn, trx->tx_power, burst);
+       /* Forward burst to scheduler */
+       rc = sched_trx_handle_tx_burst(trx, ts, lchan, fn, burst);
        if (rc) {
-               LOGP(DSCHD, LOGL_ERROR, "Could not send burst to 
transceiver\n");
-
                /* Forget this primitive */
                sched_prim_drop(lchan);
 
diff --git a/src/host/trxcon/sched_trx.c b/src/host/trxcon/sched_trx.c
index ee62e70..fba9ee4 100644
--- a/src/host/trxcon/sched_trx.c
+++ b/src/host/trxcon/sched_trx.c
@@ -531,3 +531,21 @@
 
        return 0;
 }
+
+int sched_trx_handle_tx_burst(struct trx_instance *trx,
+       struct trx_ts *ts, struct trx_lchan_state *lchan,
+       uint32_t fn, ubit_t *bits)
+{
+       int rc;
+
+       /* TODO: perform A5/X burst encryption if required */
+
+       /* Forward burst to transceiver */
+       rc = trx_if_tx_burst(trx, ts->index, fn, trx->tx_power, bits);
+       if (rc) {
+               LOGP(DSCHD, LOGL_ERROR, "Could not send burst to 
transceiver\n");
+               return rc;
+       }
+
+       return 0;
+}
diff --git a/src/host/trxcon/sched_trx.h b/src/host/trxcon/sched_trx.h
index c857601..54dbc85 100644
--- a/src/host/trxcon/sched_trx.h
+++ b/src/host/trxcon/sched_trx.h
@@ -279,6 +279,9 @@
 
 int sched_trx_handle_rx_burst(struct trx_instance *trx, uint8_t tn,
        uint32_t burst_fn, sbit_t *bits, uint16_t nbits, int8_t rssi, float 
toa);
+int sched_trx_handle_tx_burst(struct trx_instance *trx,
+       struct trx_ts *ts, struct trx_lchan_state *lchan,
+       uint32_t fn, ubit_t *bits);
 
 /* Shared declarations for lchan handlers */
 extern const uint8_t sched_nb_training_bits[8][26];

-- 
To view, visit https://gerrit.osmocom.org/6811
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia6eead5d4f51d7c0bf277b9d5ebb0a74676df567
Gerrit-PatchSet: 1
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>

Reply via email to