aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-05-18 22:43:23 +0200
committerfixeria <vyanitskiy@sysmocom.de>2021-05-23 12:10:38 +0000
commit97193ced54da7435e87d692285d77abbec9865ca (patch)
tree7e4a522c4bffa955c80498b4bc4bbb678da3674a /include
parentbdc50953687d1177327dda8782a11b779fda8a54 (diff)
[VAMOS] osmo-bts-trx: rework and split up bts_sched_fn()
Currently, in bts_sched_fn() we send a Downlink burst to the PHY immediately after calling the associated logical channel handler. Together with the obvious performance advantages, this approach imposes some serious limitations. The code has already become quite complex with the introduction of the baseband frequency hopping, and now it's not possible anymore to extend it further. TRXD PDU batching, which is essential for VAMOS implementation, requires us to make the scheduler more flexible at the expense of increased memory consumption and additional CPU cycles. This patch splits up Downlink burst scheduling into 3 main steps: 1. bts_sched_init_buffers(): initialization of per-TRX Downlink burst buffers allocated by phy_instance_create(). For C0/TRX0 all timeslots are pre-initialized with dummy burst. 2. bts_sched_fn(): generating burst bits for all active lchans. 3. bts_sched_flush_buffers(): sending everything to the PHY. This approach allows us to a) get rid of the ugly tail in bts_sched_fn() that was responsible for sending dummy bursts on C0/TRX0; b) implement the PDU batching and have several variants of bts_sched_flush_buffers() providing the alternative batching approaches later on; c) implement PDU merging for the upcoming shadow transceivers. Change-Id: Iec78989517865b3275a9784d1042a5ebd1d2815f Related: SYS#4895, OS#4941
Diffstat (limited to 'include')
-rw-r--r--include/osmo-bts/phy_link.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/osmo-bts/phy_link.h b/include/osmo-bts/phy_link.h
index bd1a0c33..4b8a8633 100644
--- a/include/osmo-bts/phy_link.h
+++ b/include/osmo-bts/phy_link.h
@@ -113,6 +113,7 @@ struct phy_instance {
struct {
struct trx_l1h *hdl;
bool sw_act_reported;
+ struct trx_dl_burst_req br[TRX_NR_TS];
} osmotrx;
struct {
/* logical transceiver number within one PHY */