summaryrefslogtreecommitdiffstats
path: root/src/host/trxcon/src/sched_lchan_tchf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/host/trxcon/src/sched_lchan_tchf.c')
-rw-r--r--src/host/trxcon/src/sched_lchan_tchf.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/src/host/trxcon/src/sched_lchan_tchf.c b/src/host/trxcon/src/sched_lchan_tchf.c
index 6d48fc77..a87efafe 100644
--- a/src/host/trxcon/src/sched_lchan_tchf.c
+++ b/src/host/trxcon/src/sched_lchan_tchf.c
@@ -215,26 +215,20 @@ bfi:
static struct msgb *prim_dequeue_tchf(struct l1sched_lchan_state *lchan)
{
- struct msgb *facch;
- struct msgb *tch;
-
- /* Attempt to find a pair of FACCH/F and TCH/F frames */
- facch = l1sched_lchan_prim_dequeue_tch(lchan, true);
- tch = l1sched_lchan_prim_dequeue_tch(lchan, false);
-
- /* Prioritize FACCH/F, if found */
- if (facch) {
- /* One TCH/F prim is replaced */
- if (tch)
- msgb_free(tch);
- return facch;
- } else if (tch) {
- /* Only TCH/F prim was found */
- return tch;
- } else {
- /* Nothing was found */
- return NULL;
+ struct msgb *msg_facch;
+ struct msgb *msg_tch;
+
+ /* dequeue a pair of TCH and FACCH frames */
+ msg_tch = l1sched_lchan_prim_dequeue_tch(lchan, false);
+ msg_facch = l1sched_lchan_prim_dequeue_tch(lchan, true);
+
+ /* prioritize FACCH over TCH */
+ if (msg_facch != NULL) {
+ msgb_free(msg_tch); /* drop one TCH/FS block */
+ return msg_facch;
}
+
+ return msg_tch;
}
int tx_tchf_fn(struct l1sched_lchan_state *lchan,