laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-tetra/+/29388 )
Change subject: Support parsing of multiple mac resources in the same timeslot
......................................................................
Support parsing of multiple mac resources in the same timeslot
Change-Id: Ic2956a5f10cffe296b76a290a0d16f45461eb2e7
---
M src/lower_mac/tetra_lower_mac.c
M src/tetra_gsmtap.c
M src/tetra_upper_mac.c
3 files changed, 29 insertions(+), 15 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/src/lower_mac/tetra_lower_mac.c b/src/lower_mac/tetra_lower_mac.c
index bf0896b..2a2cbbe 100644
--- a/src/lower_mac/tetra_lower_mac.c
+++ b/src/lower_mac/tetra_lower_mac.c
@@ -307,10 +307,32 @@
/* FIXME: do something */
break;
}
- /* send Rx time along with the TMV-UNITDATA.ind primitive */
- memcpy(&tup->tdma_time, &tcd->time, sizeof(tup->tdma_time));
- upper_mac_prim_recv(&ttp->oph, tms);
+ int pdu_bits = 0;
+ uint32_t offset = 0;
+ uint8_t *orig_head = msg->head;
+ uint8_t *orig_tail = msg->tail;
+ while (offset < tbp->type1_bits - 16) {
+ /* send Rx time along with the TMV-UNITDATA.ind primitive */
+ memcpy(&tup->tdma_time, &tcd->time, sizeof(tup->tdma_time));
+ pdu_bits = upper_mac_prim_recv(&ttp->oph, tms);
+
+ if (pdu_bits < 0) {
+ /* -1 is returned when pdu fills slot or length could not be determined */
+ break;
+ }
+
+ /* Increment head and l1h ptrs and reset tail to end of msg (may be altered by removing
FCS) */
+ offset += pdu_bits;
+ msg->head = orig_head + offset;
+ msg->tail = orig_tail;
+ msg->len = msg->tail - msg->head;
+ msg->l1h = msg->head;
+ msg->l2h = 0;
+ msg->l3h = 0;
+ msg->l4h = 0;
+ }
+
+ talloc_free(msg);
+ talloc_free(ttp);
}
-
-
diff --git a/src/tetra_gsmtap.c b/src/tetra_gsmtap.c
index 3f872c5..3e06223 100644
--- a/src/tetra_gsmtap.c
+++ b/src/tetra_gsmtap.c
@@ -64,16 +64,11 @@
int tetra_gsmtap_sendmsg(struct msgb *msg)
{
- int rc;
-
if (g_gti) {
- rc = gsmtap_sendmsg_free(g_gti, msg);
+ return gsmtap_sendmsg(g_gti, msg);
} else {
- msgb_free(msg);
- rc = 0;
+ return 0;
}
-
- return rc;
}
int tetra_gsmtap_init(const char *host, uint16_t port)
diff --git a/src/tetra_upper_mac.c b/src/tetra_upper_mac.c
index 033e13a..86c4439 100644
--- a/src/tetra_upper_mac.c
+++ b/src/tetra_upper_mac.c
@@ -559,8 +559,5 @@
break;
}
- talloc_free(op->msg);
- talloc_free(op);
-
return pdu_bits;
}
5 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit
https://gerrit.osmocom.org/c/osmo-tetra/+/29388
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-tetra
Gerrit-Branch: master
Gerrit-Change-Id: Ic2956a5f10cffe296b76a290a0d16f45461eb2e7
Gerrit-Change-Number: 29388
Gerrit-PatchSet: 7
Gerrit-Owner: wbokslag <w.bokslag(a)midnightblue.nl>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged