NR specific mac_rlc_data_req function
This commit is contained in:
@@ -37,7 +37,7 @@
|
|||||||
#include "NR_MAC_COMMON/nr_mac.h"
|
#include "NR_MAC_COMMON/nr_mac.h"
|
||||||
#include "LAYER2/NR_MAC_UE/mac_proto.h"
|
#include "LAYER2/NR_MAC_UE/mac_proto.h"
|
||||||
#include <executables/softmodem-common.h>
|
#include <executables/softmodem-common.h>
|
||||||
#include "openair2/LAYER2/RLC/rlc.h"
|
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
|
||||||
|
|
||||||
int16_t get_prach_tx_power(NR_UE_MAC_INST_t *mac)
|
int16_t get_prach_tx_power(NR_UE_MAC_INST_t *mac)
|
||||||
{
|
{
|
||||||
@@ -1105,17 +1105,12 @@ static uint8_t *fill_msg3_pdu_from_rlc(NR_UE_MAC_INST_t *mac, uint8_t *pdu, int
|
|||||||
// regular Msg3/MsgA_PUSCH with PDU coming from higher layers
|
// regular Msg3/MsgA_PUSCH with PDU coming from higher layers
|
||||||
*(NR_MAC_SUBHEADER_FIXED *)pdu = (NR_MAC_SUBHEADER_FIXED){.LCID = UL_SCH_LCID_CCCH_48_BITS};
|
*(NR_MAC_SUBHEADER_FIXED *)pdu = (NR_MAC_SUBHEADER_FIXED){.LCID = UL_SCH_LCID_CCCH_48_BITS};
|
||||||
pdu += sizeof(NR_MAC_SUBHEADER_FIXED);
|
pdu += sizeof(NR_MAC_SUBHEADER_FIXED);
|
||||||
tbs_size_t len = mac_rlc_data_req(mac->ue_id,
|
tbs_size_t len = nr_mac_rlc_data_req(mac->ue_id,
|
||||||
mac->ue_id,
|
mac->ue_id,
|
||||||
0,
|
false,
|
||||||
0,
|
|
||||||
ENB_FLAG_NO,
|
|
||||||
MBMS_FLAG_NO,
|
|
||||||
0, // SRB0 for messages sent in MSG3
|
0, // SRB0 for messages sent in MSG3
|
||||||
TBS_max - sizeof(NR_MAC_SUBHEADER_FIXED), /* size of mac_ce above */
|
TBS_max - sizeof(NR_MAC_SUBHEADER_FIXED), /* size of mac_ce above */
|
||||||
(char *)pdu,
|
(char *)pdu);
|
||||||
0,
|
|
||||||
0);
|
|
||||||
AssertFatal(len > 0, "no data for Msg3/MsgA_PUSCH\n");
|
AssertFatal(len > 0, "no data for Msg3/MsgA_PUSCH\n");
|
||||||
// UE Contention Resolution Identity
|
// UE Contention Resolution Identity
|
||||||
// Store the first 48 bits belonging to the uplink CCCH SDU within Msg3 to determine whether or not the
|
// Store the first 48 bits belonging to the uplink CCCH SDU within Msg3 to determine whether or not the
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
|
|
||||||
#include <executables/softmodem-common.h>
|
#include <executables/softmodem-common.h>
|
||||||
#include "LAYER2/RLC/rlc.h"
|
#include "LAYER2/RLC/rlc.h"
|
||||||
|
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
|
||||||
#include "RRC/NR_UE/L2_interface_ue.h"
|
#include "RRC/NR_UE/L2_interface_ue.h"
|
||||||
|
|
||||||
//#define SRS_DEBUG
|
//#define SRS_DEBUG
|
||||||
@@ -2589,17 +2590,12 @@ static bool fill_mac_sdu(NR_UE_MAC_INST_t *mac,
|
|||||||
&target);
|
&target);
|
||||||
header_sz = bytes_requested < 256 ? sizeof(NR_MAC_SUBHEADER_SHORT) : sizeof(NR_MAC_SUBHEADER_LONG);
|
header_sz = bytes_requested < 256 ? sizeof(NR_MAC_SUBHEADER_SHORT) : sizeof(NR_MAC_SUBHEADER_LONG);
|
||||||
|
|
||||||
uint16_t sdu_length = mac_rlc_data_req(mac->ue_id,
|
uint16_t sdu_length = nr_mac_rlc_data_req(mac->ue_id,
|
||||||
mac->ue_id,
|
mac->ue_id,
|
||||||
gNB_index,
|
false,
|
||||||
frame,
|
|
||||||
ENB_FLAG_NO,
|
|
||||||
MBMS_FLAG_NO,
|
|
||||||
lcid,
|
lcid,
|
||||||
bytes_requested,
|
bytes_requested,
|
||||||
(char *)mac_ce_p->cur_ptr + header_sz,
|
(char *)mac_ce_p->cur_ptr + header_sz);
|
||||||
0,
|
|
||||||
0);
|
|
||||||
|
|
||||||
AssertFatal(bytes_requested >= sdu_length,
|
AssertFatal(bytes_requested >= sdu_length,
|
||||||
"LCID = 0x%02x RLC has segmented %d bytes but MAC has max %li remaining bytes\n",
|
"LCID = 0x%02x RLC has segmented %d bytes but MAC has max %li remaining bytes\n",
|
||||||
|
|||||||
@@ -35,17 +35,12 @@ void nr_mac_rrc_ra_ind(const module_id_t mod_id, bool success)
|
|||||||
void nr_mac_rrc_msg3_ind(const module_id_t mod_id, const int rnti, bool prepare_payload)
|
void nr_mac_rrc_msg3_ind(const module_id_t mod_id, const int rnti, bool prepare_payload)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
tbs_size_t mac_rlc_data_req(const module_id_t module_idP,
|
tbs_size_t nr_mac_rlc_data_req(const module_id_t module_idP,
|
||||||
const rnti_t rntiP,
|
const uint16_t ue_id,
|
||||||
const eNB_index_t eNB_index,
|
const bool gnb_flagP,
|
||||||
const frame_t frameP,
|
|
||||||
const eNB_flag_t enb_flagP,
|
|
||||||
const MBMS_flag_t MBMS_flagP,
|
|
||||||
const logical_chan_id_t channel_idP,
|
const logical_chan_id_t channel_idP,
|
||||||
const tb_size_t tb_sizeP,
|
const tb_size_t tb_sizeP,
|
||||||
char *buffer_pP,
|
char *buffer_pP)
|
||||||
const uint32_t sourceL2Id,
|
|
||||||
const uint32_t destinationL2Id)
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2051,17 +2051,7 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
|
|||||||
uint8_t buffer[CCCH_SDU_SIZE];
|
uint8_t buffer[CCCH_SDU_SIZE];
|
||||||
uint8_t mac_subheader_len = sizeof(NR_MAC_SUBHEADER_SHORT);
|
uint8_t mac_subheader_len = sizeof(NR_MAC_SUBHEADER_SHORT);
|
||||||
// Get RLC data on the SRB (RRCSetup, RRCReestablishment)
|
// Get RLC data on the SRB (RRCSetup, RRCReestablishment)
|
||||||
mac_sdu_length = mac_rlc_data_req(module_idP,
|
mac_sdu_length = nr_mac_rlc_data_req(module_idP, ra->rnti, true, lcid, CCCH_SDU_SIZE, (char *)buffer);
|
||||||
ra->rnti,
|
|
||||||
module_idP,
|
|
||||||
frameP,
|
|
||||||
ENB_FLAG_YES,
|
|
||||||
MBMS_FLAG_NO,
|
|
||||||
lcid,
|
|
||||||
CCCH_SDU_SIZE,
|
|
||||||
(char *)buffer,
|
|
||||||
0,
|
|
||||||
0);
|
|
||||||
|
|
||||||
if (mac_sdu_length < 256) {
|
if (mac_sdu_length < 256) {
|
||||||
((NR_MAC_SUBHEADER_SHORT *)&buf[mac_pdu_length])->R = 0;
|
((NR_MAC_SUBHEADER_SHORT *)&buf[mac_pdu_length])->R = 0;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
#include "NR_MAC_COMMON/nr_mac.h"
|
#include "NR_MAC_COMMON/nr_mac.h"
|
||||||
#include "NR_MAC_gNB/nr_mac_gNB.h"
|
#include "NR_MAC_gNB/nr_mac_gNB.h"
|
||||||
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
|
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
|
||||||
|
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
|
||||||
#include "LAYER2/RLC/rlc.h"
|
#include "LAYER2/RLC/rlc.h"
|
||||||
|
|
||||||
/*TAG*/
|
/*TAG*/
|
||||||
@@ -1300,17 +1301,12 @@ void nr_schedule_ue_spec(module_id_t module_id,
|
|||||||
* such that TBS is full */
|
* such that TBS is full */
|
||||||
const rlc_buffer_occupancy_t ndata = min(sched_ctrl->rlc_status[lcid].bytes_in_buffer,
|
const rlc_buffer_occupancy_t ndata = min(sched_ctrl->rlc_status[lcid].bytes_in_buffer,
|
||||||
bufEnd-buf-sizeof(NR_MAC_SUBHEADER_LONG));
|
bufEnd-buf-sizeof(NR_MAC_SUBHEADER_LONG));
|
||||||
tbs_size_t len = mac_rlc_data_req(module_id,
|
tbs_size_t len = nr_mac_rlc_data_req(module_id,
|
||||||
rnti,
|
rnti,
|
||||||
module_id,
|
true,
|
||||||
frame,
|
|
||||||
ENB_FLAG_YES,
|
|
||||||
MBMS_FLAG_NO,
|
|
||||||
lcid,
|
lcid,
|
||||||
ndata,
|
ndata,
|
||||||
(char *)buf+sizeof(NR_MAC_SUBHEADER_LONG),
|
(char *)buf+sizeof(NR_MAC_SUBHEADER_LONG));
|
||||||
0,
|
|
||||||
0);
|
|
||||||
LOG_D(NR_MAC,
|
LOG_D(NR_MAC,
|
||||||
"%4d.%2d RNTI %04x: %d bytes from %s %d (ndata %d, remaining size %ld)\n",
|
"%4d.%2d RNTI %04x: %d bytes from %s %d (ndata %d, remaining size %ld)\n",
|
||||||
frame,
|
frame,
|
||||||
|
|||||||
@@ -192,17 +192,12 @@ void nr_mac_rlc_data_ind(const module_id_t module_idP,
|
|||||||
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
tbs_size_t mac_rlc_data_req(const module_id_t module_idP,
|
tbs_size_t nr_mac_rlc_data_req(const module_id_t module_idP,
|
||||||
const uint16_t ue_id,
|
const uint16_t ue_id,
|
||||||
const eNB_index_t eNB_index,
|
const bool gnb_flagP,
|
||||||
const frame_t frameP,
|
|
||||||
const eNB_flag_t enb_flagP,
|
|
||||||
const MBMS_flag_t MBMS_flagP,
|
|
||||||
const logical_chan_id_t channel_idP,
|
const logical_chan_id_t channel_idP,
|
||||||
const tb_size_t tb_sizeP,
|
const tb_size_t tb_sizeP,
|
||||||
char *buffer_pP,
|
char *buffer_pP)
|
||||||
const uint32_t sourceL2Id,
|
|
||||||
const uint32_t destinationL2Id)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int maxsize;
|
int maxsize;
|
||||||
@@ -223,7 +218,7 @@ tbs_size_t mac_rlc_data_req(const module_id_t module_idP,
|
|||||||
|
|
||||||
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
||||||
|
|
||||||
if (enb_flagP)
|
if (gnb_flagP)
|
||||||
T(T_ENB_RLC_MAC_DL, T_INT(module_idP), T_INT(ue_id),
|
T(T_ENB_RLC_MAC_DL, T_INT(module_idP), T_INT(ue_id),
|
||||||
T_INT(channel_idP), T_INT(ret));
|
T_INT(channel_idP), T_INT(ret));
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,12 @@ void nr_mac_rlc_data_ind(const module_id_t module_idP,
|
|||||||
const logical_chan_id_t channel_idP,
|
const logical_chan_id_t channel_idP,
|
||||||
char *buffer_pP,
|
char *buffer_pP,
|
||||||
const tb_size_t tb_sizeP);
|
const tb_size_t tb_sizeP);
|
||||||
|
tbs_size_t nr_mac_rlc_data_req(const module_id_t module_idP,
|
||||||
|
const uint16_t ue_id,
|
||||||
|
const bool gnb_flagP,
|
||||||
|
const logical_chan_id_t channel_idP,
|
||||||
|
const tb_size_t tb_sizeP,
|
||||||
|
char *buffer_pP);
|
||||||
|
|
||||||
void nr_rlc_add_srb(int ue_id, int srb_id, const NR_RLC_BearerConfig_t *rlc_BearerConfig);
|
void nr_rlc_add_srb(int ue_id, int srb_id, const NR_RLC_BearerConfig_t *rlc_BearerConfig);
|
||||||
void nr_rlc_add_drb(int ue_id, int drb_id, const NR_RLC_BearerConfig_t *rlc_BearerConfig);
|
void nr_rlc_add_drb(int ue_id, int drb_id, const NR_RLC_BearerConfig_t *rlc_BearerConfig);
|
||||||
|
|||||||
Reference in New Issue
Block a user