aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2023-09-25 08:15:35 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2023-09-25 08:25:58 +0200
commitddc15996ddecfdb533d77ae45fa33587c51bb223 (patch)
tree97f73de632252f7abf681dd200a25cda1562b379 /src
parentf5c1cd3889bb52b1166066885e2d65b87692a37e (diff)
Do not prefix UI header to System Information Type 10
System Information Type 10 uses short L2 header that is transmitted as Bter UI frame. The complete frame is sent by BSC, including short L2 header. Only the SACCH layer 1 header is added by the BTS. A switch() statement is used, so other System Information with short L2 header can be added in the future. Change-Id: Ifede42bfd84ea5914b559a20ae68f594d2ee1a5c
Diffstat (limited to 'src')
-rw-r--r--src/common/rsl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/common/rsl.c b/src/common/rsl.c
index f11ec0e0..09723bed 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -993,6 +993,15 @@ static int rsl_rx_osmo_etws_cmd(struct gsm_bts_trx *trx, struct msgb *msg)
* \param[in] len length of \a current in octets */
static inline void lapdm_ui_prefix(uint8_t *buf, uint32_t *valid, const uint8_t *current, uint8_t osmo_si, uint16_t len)
{
+ /* Special case for short header SI. Do not pre-fix the two-byte UI header. */
+ switch (osmo_si) {
+ case SYSINFO_TYPE_10:
+ (*valid) |= (1 << osmo_si);
+ memset(buf, GSM_MACBLOCK_PADDING, sizeof(sysinfo_buf_t));
+ memcpy(buf, current, len);
+ return;
+ }
+
/* We have to pre-fix with the two-byte LAPDM UI header */
if (len > sizeof(sysinfo_buf_t) - 2) {
LOGP(DRSL, LOGL_ERROR, "Truncating received SI%s (%u -> %zu) to prepend LAPDM UI header (2 bytes)\n",