aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2023-07-27 20:37:51 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2023-07-28 13:49:49 +0200
commit27bbb88d27b3cfde8bec3c3ab1302ba512db757c (patch)
treedc434bf3eec030e79958597162948134be339c87
parent8b1e4cbae663397203d1a38083c5a2ddf9202d10 (diff)
rlcmac: Use enum gprs_rlcmac_radio_priority internally everywhere
This simplifies the array handling in the LLC queue, and moves param checking to the rx rlcmac_prim path instead of deep in the llc_queue enqueuing code. This commit also fixes the RADIO_PRIORITY field in the Channel Request Description section of PKT DL ACK/NCK, since gprs_rlcmac_llc_queue_highest_radio_prio_pending() now returns the enum normalized 0..3 as expected by the field format (before it was returning 1..4). Change-Id: If2d1946522bc4a1c19d65acb23605f1a3f05ab45
-rw-r--r--include/osmocom/gprs/rlcmac/gre.h6
-rw-r--r--include/osmocom/gprs/rlcmac/llc_queue.h17
-rw-r--r--src/rlcmac/gre.c10
-rw-r--r--src/rlcmac/llc_queue.c16
-rw-r--r--src/rlcmac/rlcmac_prim.c16
-rw-r--r--tests/rlcmac/rlcmac_prim_test.c10
-rw-r--r--tests/rlcmac/rlcmac_prim_test.err22
-rw-r--r--tests/rlcmac/rlcmac_prim_test.ok2
8 files changed, 59 insertions, 40 deletions
diff --git a/include/osmocom/gprs/rlcmac/gre.h b/include/osmocom/gprs/rlcmac/gre.h
index befcf05..a7317cd 100644
--- a/include/osmocom/gprs/rlcmac/gre.h
+++ b/include/osmocom/gprs/rlcmac/gre.h
@@ -46,8 +46,10 @@ bool gprs_rlcmac_entity_in_packet_transfer_mode(const struct gprs_rlcmac_entity
bool gprs_rlcmac_entity_have_tx_data_queued(const struct gprs_rlcmac_entity *gre);
int gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(struct gprs_rlcmac_entity *gre);
-int gprs_rlcmac_entity_llc_enqueue(struct gprs_rlcmac_entity *gre, uint8_t *ll_pdu, unsigned int ll_pdu_len,
- enum osmo_gprs_rlcmac_llc_sapi sapi, uint8_t radio_prio);
+int gprs_rlcmac_entity_llc_enqueue(struct gprs_rlcmac_entity *gre,
+ const uint8_t *ll_pdu, unsigned int ll_pdu_len,
+ enum osmo_gprs_rlcmac_llc_sapi sapi,
+ enum gprs_rlcmac_radio_priority radio_prio);
struct msgb *gprs_rlcmac_gre_create_pkt_ctrl_ack(const struct gprs_rlcmac_entity *gre);
diff --git a/include/osmocom/gprs/rlcmac/llc_queue.h b/include/osmocom/gprs/rlcmac/llc_queue.h
index 331f33b..7149f76 100644
--- a/include/osmocom/gprs/rlcmac/llc_queue.h
+++ b/include/osmocom/gprs/rlcmac/llc_queue.h
@@ -9,17 +9,14 @@
#include <osmocom/gprs/rlcmac/codel.h>
#include <osmocom/gprs/rlcmac/rlcmac_prim.h>
-#include <osmocom/gprs/rlcmac/types.h>
+#include <osmocom/gprs/rlcmac/types_private.h>
#include <osmocom/gprs/rlcmac/rlcmac.h>
struct gprs_rlcmac_entity;
/* Highet/Lowest radio priority (biggest number) as per 3GPP TS 24.008 version 16.7.0 Release 16 section 10.5.7.2:
* "All other values are interpreted as priority level 4 by this version of the protocol." */
-#define _GPRS_RLCMAC_RADIO_PRIO_HIGHEST 1
-#define _GPRS_RLCMAC_RADIO_PRIO_LOWEST 4
-/* Normalize 0..N-1 (to be used in arrays): */
-#define RADIO_PRIO_NORM(radio_prio) ((radio_prio) - _GPRS_RLCMAC_RADIO_PRIO_HIGHEST)
+#define _GPRS_RLCMAC_RADIO_NUM_PRIO 4
enum gprs_rlcmac_llc_queue_sapi_prio { /* lowest value has highest prio */
GPRS_RLCMAC_LLC_QUEUE_SAPI_PRIO_GMM = 0, /* SAPI 1 */
@@ -29,7 +26,7 @@ enum gprs_rlcmac_llc_queue_sapi_prio { /* lowest value has highest prio */
};
struct gprs_llc_prio_queue {
- uint8_t radio_prio; /* Radio prio of this queue, range (1..4) */
+ enum gprs_rlcmac_radio_priority radio_prio; /* Radio prio of this queue, range (1..4) */
struct gprs_codel codel_state;
struct llist_head queue; /* queued LLC DL data. See enum gprs_rlcmac_llc_queue_prio. */
};
@@ -40,7 +37,7 @@ struct gprs_rlcmac_llc_queue {
size_t queue_size;
size_t queue_octets;
bool use_codel;
- struct gprs_llc_prio_queue pq[RADIO_PRIO_NORM(_GPRS_RLCMAC_RADIO_PRIO_LOWEST) + 1][_GPRS_RLCMAC_LLC_QUEUE_SAPI_PRIO_SIZE]; /* queued LLC DL data. See enum gprs_rlcmac_llc_queue_prio. */
+ struct gprs_llc_prio_queue pq[_GPRS_RLCMAC_RADIO_NUM_PRIO][_GPRS_RLCMAC_LLC_QUEUE_SAPI_PRIO_SIZE]; /* queued LLC DL data. See enum gprs_rlcmac_llc_queue_prio. */
};
struct gprs_rlcmac_llc_queue *gprs_rlcmac_llc_queue_alloc(struct gprs_rlcmac_entity *gre);
@@ -49,10 +46,10 @@ void gprs_rlcmac_llc_queue_clear(struct gprs_rlcmac_llc_queue *q);
void gprs_rlcmac_llc_queue_set_codel_params(struct gprs_rlcmac_llc_queue *q, bool use, unsigned int interval_msec);
-int gprs_rlcmac_llc_queue_enqueue(struct gprs_rlcmac_llc_queue *q, uint8_t *ll_pdu, unsigned int ll_pdu_len,
- enum osmo_gprs_rlcmac_llc_sapi sapi, uint8_t radio_prio);
+int gprs_rlcmac_llc_queue_enqueue(struct gprs_rlcmac_llc_queue *q, const uint8_t *ll_pdu, unsigned int ll_pdu_len,
+ enum osmo_gprs_rlcmac_llc_sapi sapi, enum gprs_rlcmac_radio_priority radio_prio);
struct msgb *gprs_rlcmac_llc_queue_dequeue(struct gprs_rlcmac_llc_queue *q, bool can_discard);
-uint8_t gprs_rlcmac_llc_queue_highest_radio_prio_pending(struct gprs_rlcmac_llc_queue *q);
+enum gprs_rlcmac_radio_priority gprs_rlcmac_llc_queue_highest_radio_prio_pending(struct gprs_rlcmac_llc_queue *q);
void gprs_rlcmac_llc_queue_merge_prepend(struct gprs_rlcmac_llc_queue *q, struct gprs_rlcmac_llc_queue *old_q);
diff --git a/src/rlcmac/gre.c b/src/rlcmac/gre.c
index 500feed..59cf0f5 100644
--- a/src/rlcmac/gre.c
+++ b/src/rlcmac/gre.c
@@ -216,17 +216,19 @@ int gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(struct gprs_rlcmac_en
return gprs_rlcmac_tbf_ul_ass_start(gre->ul_tbf, GPRS_RLCMAC_TBF_UL_ASS_TYPE_1PHASE);
}
-int gprs_rlcmac_entity_llc_enqueue(struct gprs_rlcmac_entity *gre, uint8_t *ll_pdu, unsigned int ll_pdu_len,
- enum osmo_gprs_rlcmac_llc_sapi sapi, uint8_t radio_prio)
+int gprs_rlcmac_entity_llc_enqueue(struct gprs_rlcmac_entity *gre,
+ const uint8_t *ll_pdu, unsigned int ll_pdu_len,
+ enum osmo_gprs_rlcmac_llc_sapi sapi,
+ enum gprs_rlcmac_radio_priority radio_prio)
{
int rc;
LOGGRE(gre, LOGL_DEBUG, "Enqueueing LLC-PDU len=%u SAPI=%s radio_prio=%u\n",
- ll_pdu_len, get_value_string(osmo_gprs_rlcmac_llc_sapi_names, sapi), radio_prio);
+ ll_pdu_len, get_value_string(osmo_gprs_rlcmac_llc_sapi_names, sapi), radio_prio + 1);
rc = gprs_rlcmac_llc_queue_enqueue(gre->llc_queue, ll_pdu, ll_pdu_len,
sapi, radio_prio);
if (rc < 0) {
LOGGRE(gre, LOGL_NOTICE, "Enqueueing LLC-PDU len=%u SAPI=%s radio_prio=%u failed!\n",
- ll_pdu_len, get_value_string(osmo_gprs_rlcmac_llc_sapi_names, sapi), radio_prio);
+ ll_pdu_len, get_value_string(osmo_gprs_rlcmac_llc_sapi_names, sapi), radio_prio + 1);
return rc;
}
diff --git a/src/rlcmac/llc_queue.c b/src/rlcmac/llc_queue.c
index 066df47..83c926e 100644
--- a/src/rlcmac/llc_queue.c
+++ b/src/rlcmac/llc_queue.c
@@ -46,7 +46,7 @@ struct gprs_rlcmac_llc_queue *gprs_rlcmac_llc_queue_alloc(struct gprs_rlcmac_ent
q->avg_queue_delay = 0;
for (i = 0; i < ARRAY_SIZE(q->pq); i++) {
for (j = 0; j < ARRAY_SIZE(q->pq[i]); j++) {
- q->pq[i][j].radio_prio = i + 1; /* range (1..4) */
+ q->pq[i][j].radio_prio = i; /* enum gprs_rlcmac_radio_priority, range (0..3) */
INIT_LLIST_HEAD(&q->pq[i][j].queue);
gprs_codel_init(&q->pq[i][j].codel_state);
}
@@ -89,19 +89,13 @@ static enum gprs_rlcmac_llc_queue_sapi_prio gprs_rlcmac_llc_sapi2prio(enum osmo_
}
}
-int gprs_rlcmac_llc_queue_enqueue(struct gprs_rlcmac_llc_queue *q, uint8_t *ll_pdu, unsigned int ll_pdu_len,
- enum osmo_gprs_rlcmac_llc_sapi sapi, uint8_t radio_prio)
+int gprs_rlcmac_llc_queue_enqueue(struct gprs_rlcmac_llc_queue *q, const uint8_t *ll_pdu, unsigned int ll_pdu_len,
+ enum osmo_gprs_rlcmac_llc_sapi sapi, enum gprs_rlcmac_radio_priority radio_prio)
{
struct llc_queue_entry_hdr *ehdr;
enum gprs_rlcmac_llc_queue_sapi_prio sapi_prio;
struct msgb *msg;
- /* Trim to expected values 1..4, (3GPP TS 24.008) 10.5.7.2 */
- if (radio_prio < _GPRS_RLCMAC_RADIO_PRIO_HIGHEST)
- radio_prio = _GPRS_RLCMAC_RADIO_PRIO_HIGHEST;
- else if (radio_prio > _GPRS_RLCMAC_RADIO_PRIO_LOWEST)
- radio_prio = _GPRS_RLCMAC_RADIO_PRIO_LOWEST;
-
sapi_prio = gprs_rlcmac_llc_sapi2prio(sapi);
msg = msgb_alloc_headroom(sizeof(*ehdr) + ll_pdu_len, 0, "llc_queue_msg");
@@ -117,7 +111,7 @@ int gprs_rlcmac_llc_queue_enqueue(struct gprs_rlcmac_llc_queue *q, uint8_t *ll_p
msg->l2h = NULL;
}
- msgb_enqueue(&q->pq[RADIO_PRIO_NORM(radio_prio)][sapi_prio].queue, msg);
+ msgb_enqueue(&q->pq[radio_prio][sapi_prio].queue, msg);
q->queue_size += 1;
q->queue_octets += ll_pdu_len;
@@ -221,7 +215,7 @@ struct msgb *gprs_rlcmac_llc_queue_dequeue(struct gprs_rlcmac_llc_queue *q, bool
return msg;
}
-uint8_t gprs_rlcmac_llc_queue_highest_radio_prio_pending(struct gprs_rlcmac_llc_queue *q)
+enum gprs_rlcmac_radio_priority gprs_rlcmac_llc_queue_highest_radio_prio_pending(struct gprs_rlcmac_llc_queue *q)
{
struct gprs_llc_prio_queue *prioq = gprs_rlcmac_llc_queue_find_msg(q);
OSMO_ASSERT(prioq);
diff --git a/src/rlcmac/rlcmac_prim.c b/src/rlcmac/rlcmac_prim.c
index d3df15f..f13ac3d 100644
--- a/src/rlcmac/rlcmac_prim.c
+++ b/src/rlcmac/rlcmac_prim.c
@@ -375,6 +375,7 @@ static int rlcmac_prim_handle_grr_data_req(struct osmo_gprs_rlcmac_prim *rlcmac_
static int rlcmac_prim_handle_grr_unitdata_req(struct osmo_gprs_rlcmac_prim *rlcmac_prim)
{
struct gprs_rlcmac_entity *gre;
+ enum gprs_rlcmac_radio_priority radio_prio;
int rc;
gre = gprs_rlcmac_find_entity_by_tlli(rlcmac_prim->grr.tlli);
@@ -385,11 +386,24 @@ static int rlcmac_prim_handle_grr_unitdata_req(struct osmo_gprs_rlcmac_prim *rlc
}
OSMO_ASSERT(gre);
+ /* Expected values are integers 1..4, trim to known expected radio priorities (3GPP TS 24.008) 10.5.7.2 */
+ if (OSMO_UNLIKELY(rlcmac_prim->grr.unitdata_req.radio_prio < 1)) {
+ LOGGRE(gre, LOGL_NOTICE, "Rx UNITDATA.req with unexpected radio_prio=%u not in range (1..4)\n",
+ rlcmac_prim->grr.unitdata_req.radio_prio);
+ radio_prio = GPRS_RLCMAC_RADIO_PRIORITY_1;
+ } else if (OSMO_UNLIKELY(rlcmac_prim->grr.unitdata_req.radio_prio > 4)) {
+ LOGGRE(gre, LOGL_NOTICE, "Rx UNITDATA.req with unexpected radio_prio=%u not in range (1..4)\n",
+ rlcmac_prim->grr.unitdata_req.radio_prio);
+ radio_prio = GPRS_RLCMAC_RADIO_PRIORITY_4;
+ } else {
+ radio_prio = (enum gprs_rlcmac_radio_priority)(rlcmac_prim->grr.unitdata_req.radio_prio - 1);
+ }
+
rc = gprs_rlcmac_entity_llc_enqueue(gre,
rlcmac_prim->grr.ll_pdu,
rlcmac_prim->grr.ll_pdu_len,
rlcmac_prim->grr.unitdata_req.sapi,
- rlcmac_prim->grr.unitdata_req.radio_prio);
+ radio_prio);
msgb_free(rlcmac_prim->oph.msg);
return rc;
}
diff --git a/tests/rlcmac/rlcmac_prim_test.c b/tests/rlcmac/rlcmac_prim_test.c
index 10f148a..410b266 100644
--- a/tests/rlcmac/rlcmac_prim_test.c
+++ b/tests/rlcmac/rlcmac_prim_test.c
@@ -599,6 +599,7 @@ static void test_ul_tbf_attach(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
sizeof(pdu_llc_gmm_att_req));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
OSMO_ASSERT(sizeof(ccch_imm_ass_pkt_ul_tbf_normal) == GSM_MACBLOCK_LEN);
@@ -662,6 +663,7 @@ static void test_ul_tbf_request_another_ul_tbf(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
14);
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
OSMO_ASSERT(sizeof(ccch_imm_ass_pkt_ul_tbf_normal) == GSM_MACBLOCK_LEN);
@@ -696,6 +698,7 @@ static void test_ul_tbf_request_another_ul_tbf(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
14);
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
/* Trigger transmission of PKT RES REQ: */
@@ -721,6 +724,7 @@ static void test_ul_tbf_t3164_timeout(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
sizeof(pdu_llc_gmm_att_req));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
OSMO_ASSERT(sizeof(ccch_imm_ass_pkt_ul_tbf_normal) == GSM_MACBLOCK_LEN);
@@ -757,6 +761,7 @@ static void test_ul_tbf_t3166_timeout(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
sizeof(pdu_llc_gmm_att_req));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
for (i = 0; i < 4; i++) {
@@ -806,6 +811,7 @@ static void test_ul_tbf_n3104_timeout(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
sizeof(pdu_llc_gmm_att_req));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
OSMO_ASSERT(rc == 0);
}
@@ -853,6 +859,7 @@ static void test_ul_tbf_t3182_timeout(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
sizeof(pdu_llc_gmm_att_req));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
ccch_imm_ass_pkt_ul_tbf_normal[7] = last_rach_req_ra; /* Update RA to match */
@@ -910,6 +917,7 @@ static void test_ul_tbf_last_data_cv0_retrans_max(void)
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req,
sizeof(pdu_llc_gmm_att_req));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
ccch_imm_ass_pkt_ul_tbf_normal[7] = last_rach_req_ra; /* Update RA to match */
@@ -980,6 +988,7 @@ static void test_ul_tbf_countdown_procedure(void)
memset(msgb_data(llc_msg), 0xab, msgb_length(llc_msg));
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, msgb_data(llc_msg), msgb_length(llc_msg));
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_SNDCP3;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 2;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
ccch_imm_ass_pkt_ul_tbf_normal[7] = last_rach_req_ra; /* Update RA to match */
@@ -1111,6 +1120,7 @@ static void test_dl_tbf_ccch_assign_requests_ul_tbf_pacch(void)
/* Submit 14 bytes to fit in 1 RLCMAC block to shorten test and end up in FINISHED state quickly: */
rlcmac_prim = osmo_gprs_rlcmac_prim_alloc_grr_unitdata_req(tlli, pdu_llc_gmm_att_req, 14);
rlcmac_prim->grr.unitdata_req.sapi = OSMO_GPRS_RLCMAC_LLC_SAPI_GMM;
+ rlcmac_prim->grr.unitdata_req.radio_prio = 1;
rc = osmo_gprs_rlcmac_prim_upper_down(rlcmac_prim);
OSMO_ASSERT(rc == 0);
diff --git a/tests/rlcmac/rlcmac_prim_test.err b/tests/rlcmac/rlcmac_prim_test.err
index 6b84f2c..913c9da 100644
--- a/tests/rlcmac/rlcmac_prim_test.err
+++ b/tests/rlcmac/rlcmac_prim_test.err
@@ -1,7 +1,7 @@
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -76,7 +76,7 @@ DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -181,7 +181,7 @@ DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -335,7 +335,7 @@ DLGLOBAL DEBUG Rx SI13 from lower layers
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -345,7 +345,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a
DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request
DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication
DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request
DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS
@@ -511,7 +511,7 @@ DLGLOBAL INFO UL_TBF{FLOW}: Deallocated
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -579,7 +579,7 @@ DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=33 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -693,7 +693,7 @@ DLGLOBAL DEBUG Rx SI13 from lower layers
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=200 SAPI=SNDCP3 radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=200 SAPI=SNDCP3 radio_prio=2
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -803,7 +803,7 @@ DLGLOBAL INFO UL_TBF{FINISHED}: Deallocated
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly
DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=14 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=14 SAPI=GMM radio_prio=1
DLGLOBAL INFO UL_TBF{NEW}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated
DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START
@@ -854,7 +854,7 @@ DLGLOBAL DEBUG UL_TBF{FINISHED}: Final ACK received
DLGLOBAL INFO UL_TBF{FINISHED}: state_chg to RELEASING
DLGLOBAL DEBUG Register POLL (TS=7 FN=17, reason=UL_ACK)
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
-DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=14 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00002342) Enqueueing LLC-PDU len=14 SAPI=GMM radio_prio=1
DLGLOBAL DEBUG Rx from lower layers: L1CTL-PDCH_RTS.indication
DLGLOBAL DEBUG (ts=7,fn=17,usf=0) Tx Pkt Resource Request (UL ACK/NACK poll)
DLGLOBAL INFO UL_TBF{NEW}: Allocated
@@ -947,7 +947,7 @@ DLGLOBAL INFO DL_TBF{FLOW}: Received Event LAST_DL_DATA_RECVD
DLGLOBAL INFO DL_TBF{FLOW}: state_chg to FINISHED
DLGLOBAL DEBUG Register POLL (TS=7 FN=21, reason=DL_ACK)
DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request
-DLGLOBAL DEBUG GRE(00000001) Enqueueing LLC-PDU len=14 SAPI=GMM radio_prio=0
+DLGLOBAL DEBUG GRE(00000001) Enqueueing LLC-PDU len=14 SAPI=GMM radio_prio=1
DLGLOBAL DEBUG Rx from lower layers: L1CTL-PDCH_RTS.indication
DLGLOBAL DEBUG (ts=7,fn=21,usf=0) Tx DL ACK/NACK FinalAck=1
DLGLOBAL DEBUG TBF(DL:NR-0:TLLI-00000001) - SSN 1, V(N): "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIR" R=Received I=Invalid, FINAL_ACK=1
diff --git a/tests/rlcmac/rlcmac_prim_test.ok b/tests/rlcmac/rlcmac_prim_test.ok
index daea0f2..d601794 100644
--- a/tests/rlcmac/rlcmac_prim_test.ok
+++ b/tests/rlcmac/rlcmac_prim_test.ok
@@ -201,7 +201,7 @@ sys={0.000000}, mono={0.000000}: clock_override_set
test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request
test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_DL_TBF.request dl_tbf_nr=0 dl_slotmask=0x80 dl_tfi=0
test_rlcmac_prim_up_cb(): Rx GRR-UNITDATA.indication TLLI=0x00000001 ll=[43 c0 01 2b 2b 2b ]
-test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=21 ts=7 data_len=23 data=[40 08 10 20 00 00 00 00 00 00 00 30 40 00 00 00 00 03 2b 2b 2b 2b 2b ]
+test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=21 ts=7 data_len=23 data=[40 08 10 20 00 00 00 00 00 00 00 30 00 00 00 00 00 03 2b 2b 2b 2b 2b ]
test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0xc0
test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=43 ts=7 data_len=23 data=[40 04 00 00 00 04 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b ]
test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00000001