fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/29956 )


Change subject: trxcon: compose struct l1ctl_info_dl in l1ctl_tx_dt_ind()
......................................................................

trxcon: compose struct l1ctl_info_dl in l1ctl_tx_dt_ind()

The trxcon_fsm should not be dealing with the L1CTL protocol, so
let's better hand over the trxcon_param_rx_traffic_data_ind to
l1ctl_tx_dt_ind() and compose the l1ctl_info_dl there.

Change-Id: Ie57d86ffd9ea7c44187aafba0df1f519d1c523fb
Related: OS#5599
---
M src/host/trxcon/include/osmocom/bb/trxcon/l1ctl.h
M src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
M src/host/trxcon/src/l1ctl.c
M src/host/trxcon/src/trxcon.c
M src/host/trxcon/src/trxcon_fsm.c
5 files changed, 22 insertions(+), 41 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/56/29956/1

diff --git a/src/host/trxcon/include/osmocom/bb/trxcon/l1ctl.h 
b/src/host/trxcon/include/osmocom/bb/trxcon/l1ctl.h
index 9518bb9..70d804f 100644
--- a/src/host/trxcon/include/osmocom/bb/trxcon/l1ctl.h
+++ b/src/host/trxcon/include/osmocom/bb/trxcon/l1ctl.h
@@ -17,10 +17,8 @@
 int l1ctl_tx_reset_conf(struct l1ctl_client *l1c, uint8_t type);
 int l1ctl_tx_reset_ind(struct l1ctl_client *l1c, uint8_t type);

-int l1ctl_tx_dt_ind(struct l1ctl_client *l1c,
-                   const struct l1ctl_info_dl *dl_info,
-                   const uint8_t *l2, size_t l2_len,
-                   bool traffic);
+int l1ctl_tx_dt_ind(struct l1ctl_client *l1c, bool traffic,
+                   const struct trxcon_param_rx_traffic_data_ind *ind);
 int l1ctl_tx_dt_conf(struct l1ctl_client *l1c,
        struct l1ctl_info_dl *data, bool traffic);
 int l1ctl_tx_rach_conf(struct l1ctl_client *l1c,
diff --git a/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h 
b/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
index 9aa5e55..37e3f14 100644
--- a/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
+++ b/src/host/trxcon/include/osmocom/bb/trxcon/trxcon.h
@@ -96,6 +96,7 @@
 struct trxcon_param_rx_traffic_data_ind {
        uint8_t chan_nr;
        uint8_t link_id;
+       uint16_t band_arfcn;
        uint32_t frame_nr;
        int16_t toa256;
        int8_t rssi;
diff --git a/src/host/trxcon/src/l1ctl.c b/src/host/trxcon/src/l1ctl.c
index 87bfe74..5baac1f 100644
--- a/src/host/trxcon/src/l1ctl.c
+++ b/src/host/trxcon/src/l1ctl.c
@@ -232,26 +232,32 @@
 /**
  * Handles both L1CTL_DATA_IND and L1CTL_TRAFFIC_IND.
  */
-int l1ctl_tx_dt_ind(struct l1ctl_client *l1c,
-                   const struct l1ctl_info_dl *dl_info,
-                   const uint8_t *l2, size_t l2_len,
-                   bool traffic)
+int l1ctl_tx_dt_ind(struct l1ctl_client *l1c, bool traffic,
+                   const struct trxcon_param_rx_traffic_data_ind *ind)
 {
        struct msgb *msg;
-       uint8_t *msg_l2;

        msg = l1ctl_alloc_msg(traffic ?
                L1CTL_TRAFFIC_IND : L1CTL_DATA_IND);
        if (msg == NULL)
                return -ENOMEM;

-       put_dl_info_hdr(msg, dl_info);
+       const struct l1ctl_info_dl dl_hdr = {
+               .chan_nr = ind->chan_nr,
+               .link_id = ind->link_id,
+               .frame_nr = htonl(ind->frame_nr),
+               .band_arfcn = htons(ind->band_arfcn),
+               .fire_crc = ind->data_len > 0 ? 0 : 2,
+               .rx_level = dbm2rxlev(ind->rssi),
+               .num_biterr = ind->n_errors,
+               /* TODO: set proper .snr */
+       };
+
+       put_dl_info_hdr(msg, &dl_hdr);

        /* Copy the L2 payload if preset */
-       if (l2 && l2_len > 0) {
-               msg_l2 = (uint8_t *) msgb_put(msg, l2_len);
-               memcpy(msg_l2, l2, l2_len);
-       }
+       if (ind->data && ind->data_len > 0)
+               memcpy(msgb_put(msg, ind->data_len), ind->data, ind->data_len);

        /* Put message to upper layers */
        return l1ctl_client_send(l1c, msg);
diff --git a/src/host/trxcon/src/trxcon.c b/src/host/trxcon/src/trxcon.c
index 764f717..0bbb602 100644
--- a/src/host/trxcon/src/trxcon.c
+++ b/src/host/trxcon/src/trxcon.c
@@ -200,6 +200,7 @@
        struct trxcon_param_rx_traffic_data_ind ind = {
                .chan_nr = lchan_desc->chan_nr | lchan->ts->index,
                .link_id = lchan_desc->link_id,
+               .band_arfcn = trxcon->l1p.band_arfcn,
                .frame_nr = meas->fn,
                .toa256 = meas->toa256,
                .rssi = meas->rssi,
diff --git a/src/host/trxcon/src/trxcon_fsm.c b/src/host/trxcon/src/trxcon_fsm.c
index 58a749e..0e005a3 100644
--- a/src/host/trxcon/src/trxcon_fsm.c
+++ b/src/host/trxcon/src/trxcon_fsm.c
@@ -23,8 +23,6 @@
 #include <string.h>
 #include <errno.h>

-#include <arpa/inet.h>
-
 #include <osmocom/core/fsm.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/core/talloc.h>
@@ -34,7 +32,6 @@
 #include <osmocom/bb/trxcon/logging.h>
 #include <osmocom/bb/trxcon/l1ctl.h>
 #include <osmocom/bb/trxcon/l1ctl_server.h>
-#include <osmocom/bb/trxcon/l1ctl_proto.h>
 #include <osmocom/bb/l1sched/l1sched.h>
 #include <osmocom/bb/l1sched/logging.h>

@@ -345,18 +342,8 @@
        case TRXCON_EV_RX_DATA_IND:
        {
                const struct trxcon_param_rx_traffic_data_ind *ind = data;
-               const struct l1ctl_info_dl dl_hdr = {
-                       .chan_nr = ind->chan_nr,
-                       .link_id = ind->link_id,
-                       .frame_nr = htonl(ind->frame_nr),
-                       .band_arfcn = htons(trxcon->l1p.band_arfcn),
-                       .fire_crc = ind->data_len > 0 ? 0 : 2,
-                       .rx_level = dbm2rxlev(ind->rssi),
-                       .num_biterr = ind->n_errors,
-                       /* TODO: set proper .snr */
-               };

-               l1ctl_tx_dt_ind(trxcon->l2if, &dl_hdr, ind->data, 
ind->data_len, false);
+               l1ctl_tx_dt_ind(trxcon->l2if, false, ind);
                break;
        }
        default:
@@ -465,20 +452,8 @@
        case TRXCON_EV_RX_DATA_IND:
        {
                const struct trxcon_param_rx_traffic_data_ind *ind = data;
-               const struct l1ctl_info_dl dl_hdr = {
-                       .chan_nr = ind->chan_nr,
-                       .link_id = ind->link_id,
-                       .frame_nr = htonl(ind->frame_nr),
-                       .band_arfcn = htons(trxcon->l1p.band_arfcn),
-                       .fire_crc = ind->data_len > 0 ? 0 : 2,
-                       .rx_level = dbm2rxlev(ind->rssi),
-                       .num_biterr = ind->n_errors,
-                       /* TODO: set proper .snr */
-               };

-               l1ctl_tx_dt_ind(trxcon->l2if, &dl_hdr,
-                               ind->data, ind->data_len,
-                               event == TRXCON_EV_RX_TRAFFIC_IND);
+               l1ctl_tx_dt_ind(trxcon->l2if, event == 
TRXCON_EV_RX_TRAFFIC_IND, ind);
                break;
        }
        default:

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

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: Ie57d86ffd9ea7c44187aafba0df1f519d1c523fb
Gerrit-Change-Number: 29956
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to