diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
index 18cd8ebde4fb91d5ad78e13dfe7f71e40528b665..f1ad5817e9ede328ac42987b428662bcde818475 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
@@ -1102,18 +1102,12 @@ void nr_schedule_ue_spec(module_id_t module_id,
       if (sched_ctrl->num_total_bytes > 0) {
         tbs_size_t len = 0;
         while (size > 3) {
-
-          // Reserve space for short or long header.
-          // Check if data from RLC is equal or longer than 256B or not.
-          // Data from RLC was checked before, in function nr_store_dlsch_buffer
-          uint8_t *header = buf;
-          if (sched_ctrl->num_total_bytes >= 256) {
-            buf += sizeof(NR_MAC_SUBHEADER_LONG);
-            size -= sizeof(NR_MAC_SUBHEADER_LONG);
-          } else {
-            buf += sizeof(NR_MAC_SUBHEADER_SHORT);
-            size -= sizeof(NR_MAC_SUBHEADER_SHORT);
-          }
+          // we do not know how much data we will get from RLC, i.e., whether it
+          // will be longer than 256B or not. Therefore, reserve space for long header, then
+          // fetch data, then fill real length
+          NR_MAC_SUBHEADER_LONG *header = (NR_MAC_SUBHEADER_LONG *) buf;
+          buf += 3;
+          size -= 3;
 
           /* limit requested number of bytes to what preprocessor specified, or
            * such that TBS is full */
@@ -1143,32 +1137,19 @@ void nr_schedule_ue_spec(module_id_t module_id,
           if (len == 0)
             break;
 
-          if (sched_ctrl->num_total_bytes >= 256) {
-            ((NR_MAC_SUBHEADER_LONG *) header)->R = 0;
-            ((NR_MAC_SUBHEADER_LONG *) header)->F = 1;
-            ((NR_MAC_SUBHEADER_LONG *) header)->LCID = lcid;
-            ((NR_MAC_SUBHEADER_LONG *) header)->L1 = (len >> 8) & 0xff;
-            ((NR_MAC_SUBHEADER_LONG *) header)->L2 = len & 0xff;
-          } else {
-            ((NR_MAC_SUBHEADER_SHORT *) header)->R = 0;
-            ((NR_MAC_SUBHEADER_SHORT *) header)->F = 0;
-            ((NR_MAC_SUBHEADER_SHORT *) header)->LCID = lcid;
-            ((NR_MAC_SUBHEADER_SHORT *) header)->L = len & 0xff;
-          }
-
+          header->R = 0;
+          header->F = 1;
+          header->LCID = lcid;
+          header->L1 = (len >> 8) & 0xff;
+          header->L2 = len & 0xff;
           size -= len;
           buf += len;
           dlsch_total_bytes += len;
         }
         if (len == 0) {
           /* RLC did not have data anymore, mark buffer as unused */
-          if (sched_ctrl->num_total_bytes >= 256) {
-            buf -= sizeof(NR_MAC_SUBHEADER_LONG);
-            size += sizeof(NR_MAC_SUBHEADER_LONG);
-          } else {
-            buf -= sizeof(NR_MAC_SUBHEADER_SHORT);
-            size += sizeof(NR_MAC_SUBHEADER_SHORT);
-          }
+          buf -= 3;
+          size += 3;
         }
       }
       else if (get_softmodem_params()->phy_test || get_softmodem_params()->do_ra || get_softmodem_params()->sa) {