This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/19731 ) Change subject: encoding: do not encode out of range Timing Advance values ...................................................................... encoding: do not encode out of range Timing Advance values According to 3GPP TS 44.060, section 12.12 "Packet Timing Advance", the 'TIMING_ADVANCE_VALUE' field is optional, and takes 6 bits if present. This means that a value that fits in range 0..63 (inclusive) can be encoded (0b111111 == 63). It's possible that tbf->ta() returns GSM48_TA_INVALID == 220, so the bitvec API would encode only 6 LSBs of it: 220 & 0b111111 == 28 Let's ensure that the 'TIMING_ADVANCE_VALUE' is present iff tbf->ta() returns a correct (0 <= x <= 63), and absent otherwise. Change-Id: I342288ea4ef1e218e5744e9be6a8e528d4e697fa --- M src/encoding.cpp 1 file changed, 8 insertions(+), 3 deletions(-) Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/src/encoding.cpp b/src/encoding.cpp index 5d2434b..2025a0f 100644 --- a/src/encoding.cpp +++ b/src/encoding.cpp @@ -145,7 +145,7 @@ /* { 0 | 1 < TIMING_ADVANCE_VALUE : bit (6) > } */ static inline void write_ta(bitvec *dest, unsigned& wp, uint8_t ta) { - if (ta >= GSM48_TA_INVALID) /* No TIMING_ADVANCE_VALUE: */ + if (ta > 63) /* No TIMING_ADVANCE_VALUE: */ bitvec_write_field(dest, &wp, 0, 1); else { /* TIMING_ADVANCE_VALUE: */ bitvec_write_field(dest, &wp, 1, 1); @@ -667,8 +667,13 @@ block->u.Packet_Downlink_Assignment.TIMESLOT_ALLOCATION |= 0x80 >> tn; // timeslot(s) } - block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.Exist_TIMING_ADVANCE_VALUE = 0x1; // TIMING_ADVANCE_VALUE = on - block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.TIMING_ADVANCE_VALUE = tbf->ta(); // TIMING_ADVANCE_VALUE + if (tbf->ta() > 63) { /* { 0 | 1 < TIMING_ADVANCE_VALUE : bit (6) > } */ + block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.Exist_TIMING_ADVANCE_VALUE = 0x0; // TIMING_ADVANCE_VALUE = off + } else { + block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.Exist_TIMING_ADVANCE_VALUE = 0x1; // TIMING_ADVANCE_VALUE = on + block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.TIMING_ADVANCE_VALUE = tbf->ta(); // TIMING_ADVANCE_VALUE + } + if (ta_idx < 0) { block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.Exist_IndexAndtimeSlot = 0x0; // TIMING_ADVANCE_INDEX = off } else { -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/19731 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: I342288ea4ef1e218e5744e9be6a8e528d4e697fa Gerrit-Change-Number: 19731 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de> Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200824/d2d8e737/attachment.htm>