fixed incorrect wiresahrk SFN/SF for UL/DL data
This commit is contained in:
@@ -3684,12 +3684,14 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
|
|||||||
|
|
||||||
if (ue->mac_enabled==1) {
|
if (ue->mac_enabled==1) {
|
||||||
if (slot==0) {
|
if (slot==0) {
|
||||||
ret = mac_xface->ue_scheduler(ue->Mod_id,
|
ret = mac_xface->ue_scheduler(ue->Mod_id,
|
||||||
frame_tx,
|
frame_rx,
|
||||||
subframe_rx,
|
subframe_rx,
|
||||||
subframe_select(&ue->frame_parms,subframe_tx),
|
frame_tx,
|
||||||
eNB_id,
|
subframe_tx,
|
||||||
0/*FIXME CC_id*/);
|
subframe_select(&ue->frame_parms,subframe_tx),
|
||||||
|
eNB_id,
|
||||||
|
0/*FIXME CC_id*/);
|
||||||
|
|
||||||
if (ret == CONNECTION_LOST) {
|
if (ret == CONNECTION_LOST) {
|
||||||
LOG_E(PHY,"[UE %d] Frame %d, subframe %d RRC Connection lost, returning to PRACH\n",ue->Mod_id,
|
LOG_E(PHY,"[UE %d] Frame %d, subframe %d RRC Connection lost, returning to PRACH\n",ue->Mod_id,
|
||||||
|
|||||||
@@ -995,10 +995,14 @@ typedef struct {
|
|||||||
/*!\brief Top level UE MAC structure */
|
/*!\brief Top level UE MAC structure */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint16_t Node_id;
|
uint16_t Node_id;
|
||||||
/// frame counter
|
/// RX frame counter
|
||||||
frame_t frame;
|
frame_t rxFrame;
|
||||||
/// subframe counter
|
/// RX subframe counter
|
||||||
sub_frame_t subframe;
|
sub_frame_t rxSubframe;
|
||||||
|
/// TX frame counter
|
||||||
|
frame_t txFrame;
|
||||||
|
/// TX subframe counter
|
||||||
|
sub_frame_t txSubframe;
|
||||||
/// C-RNTI of UE
|
/// C-RNTI of UE
|
||||||
uint16_t crnti;
|
uint16_t crnti;
|
||||||
/// C-RNTI of UE before HO
|
/// C-RNTI of UE before HO
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ int openair2_stats_read(char *buffer, char **my_buffer, off_t off, int length)
|
|||||||
// mod_id used for PDCP and RLC
|
// mod_id used for PDCP and RLC
|
||||||
Mod_id = NB_eNB_INST + ue_id ;
|
Mod_id = NB_eNB_INST + ue_id ;
|
||||||
|
|
||||||
len+=sprintf(&buffer[len],"UE TTI: %d\n",UE_mac_inst[ue_id].frame);
|
len+=sprintf(&buffer[len],"UE RX TTI: %d\n",UE_mac_inst[ue_id].rxFrame);
|
||||||
|
|
||||||
for (enb_id= 0; enb_id <NB_SIG_CNX_UE; enb_id++) {
|
for (enb_id= 0; enb_id <NB_SIG_CNX_UE; enb_id++) {
|
||||||
|
|
||||||
|
|||||||
@@ -515,15 +515,20 @@ void adjust_bsr_info(int buffer_occupancy, uint16_t TBS, UE_TEMPLATE *UE_templat
|
|||||||
/*! \fn UE_L2_state_t ue_scheduler(const module_id_t module_idP,const frame_t frameP, const sub_frame_t subframe, const lte_subframe_t direction,const uint8_t eNB_index)
|
/*! \fn UE_L2_state_t ue_scheduler(const module_id_t module_idP,const frame_t frameP, const sub_frame_t subframe, const lte_subframe_t direction,const uint8_t eNB_index)
|
||||||
\brief UE scheduler where all the ue background tasks are done. This function performs the following: 1) Trigger PDCP every 5ms 2) Call RRC for link status return to PHY3) Perform SR/BSR procedures for scheduling feedback 4) Perform PHR procedures.
|
\brief UE scheduler where all the ue background tasks are done. This function performs the following: 1) Trigger PDCP every 5ms 2) Call RRC for link status return to PHY3) Perform SR/BSR procedures for scheduling feedback 4) Perform PHR procedures.
|
||||||
\param[in] module_idP instance of the UE
|
\param[in] module_idP instance of the UE
|
||||||
\param[in] subframe t the subframe number
|
\param[in] rxFrame the RX frame number
|
||||||
|
\param[in] rxSubframe the RX subframe number
|
||||||
|
\param[in] txFrame the TX frame number
|
||||||
|
\param[in] txSubframe the TX subframe number
|
||||||
\param[in] direction subframe direction
|
\param[in] direction subframe direction
|
||||||
\param[in] eNB_index instance of eNB
|
\param[in] eNB_index instance of eNB
|
||||||
@returns L2 state (CONNETION_OK or CONNECTION_LOST or PHY_RESYNCH)
|
@returns L2 state (CONNETION_OK or CONNECTION_LOST or PHY_RESYNCH)
|
||||||
*/
|
*/
|
||||||
UE_L2_STATE_t ue_scheduler(
|
UE_L2_STATE_t ue_scheduler(
|
||||||
const module_id_t module_idP,
|
const module_id_t module_idP,
|
||||||
const frame_t frameP,
|
const frame_t rxFrameP,
|
||||||
const sub_frame_t subframe,
|
const sub_frame_t rxSubframe,
|
||||||
|
const frame_t txFrameP,
|
||||||
|
const sub_frame_t txSubframe,
|
||||||
const lte_subframe_t direction,
|
const lte_subframe_t direction,
|
||||||
const uint8_t eNB_index,
|
const uint8_t eNB_index,
|
||||||
const int CC_id);
|
const int CC_id);
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ void Msg1_tx(module_id_t module_idP,uint8_t CC_id,frame_t frameP, uint8_t eNB_id
|
|||||||
|
|
||||||
if (opt_enabled) {
|
if (opt_enabled) {
|
||||||
trace_pdu(0, NULL, 0, module_idP, 2, UE_mac_inst[module_idP].RA_prach_resources.ra_PreambleIndex,
|
trace_pdu(0, NULL, 0, module_idP, 2, UE_mac_inst[module_idP].RA_prach_resources.ra_PreambleIndex,
|
||||||
UE_mac_inst[module_idP].frame, UE_mac_inst[module_idP].subframe, 0, UE_mac_inst[module_idP].RA_attempt_number);
|
UE_mac_inst[module_idP].txFrame, UE_mac_inst[module_idP].txSubframe, 0, UE_mac_inst[module_idP].RA_attempt_number);
|
||||||
LOG_D(OPT,"[UE %d][RAPROC] TX MSG1 Frame %d trace pdu for rnti %x with size %d\n",
|
LOG_D(OPT,"[UE %d][RAPROC] TX MSG1 Frame %d trace pdu for rnti %x with size %d\n",
|
||||||
module_idP, frameP, 1, UE_mac_inst[module_idP].RA_Msg3_size);
|
module_idP, frameP, 1, UE_mac_inst[module_idP].RA_Msg3_size);
|
||||||
}
|
}
|
||||||
@@ -296,7 +296,7 @@ void Msg3_tx(module_id_t module_idP,uint8_t CC_id,frame_t frameP, uint8_t eNB_id
|
|||||||
|
|
||||||
if (opt_enabled) { // msg3
|
if (opt_enabled) { // msg3
|
||||||
trace_pdu(0, &UE_mac_inst[module_idP].CCCH_pdu.payload[0], UE_mac_inst[module_idP].RA_Msg3_size,
|
trace_pdu(0, &UE_mac_inst[module_idP].CCCH_pdu.payload[0], UE_mac_inst[module_idP].RA_Msg3_size,
|
||||||
module_idP, 3, UE_mac_inst[module_idP].crnti, UE_mac_inst[module_idP].frame, UE_mac_inst[module_idP].subframe, 0, 0);
|
module_idP, 3, UE_mac_inst[module_idP].crnti, UE_mac_inst[module_idP].txFrame, UE_mac_inst[module_idP].txSubframe, 0, 0);
|
||||||
LOG_D(OPT,"[UE %d][RAPROC] MSG3 Frame %d trace pdu Preamble %d with size %d\n",
|
LOG_D(OPT,"[UE %d][RAPROC] MSG3 Frame %d trace pdu Preamble %d with size %d\n",
|
||||||
module_idP, frameP, UE_mac_inst[module_idP].crnti /*UE_mac_inst[module_idP].RA_prach_resources.ra_PreambleIndex*/, UE_mac_inst[module_idP].RA_Msg3_size);
|
module_idP, frameP, UE_mac_inst[module_idP].crnti /*UE_mac_inst[module_idP].RA_prach_resources.ra_PreambleIndex*/, UE_mac_inst[module_idP].RA_Msg3_size);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ ue_send_sdu(module_id_t module_idP,
|
|||||||
|
|
||||||
if (opt_enabled) {
|
if (opt_enabled) {
|
||||||
trace_pdu(1, sdu, sdu_len, module_idP, 3, UE_mac_inst[module_idP].crnti,
|
trace_pdu(1, sdu, sdu_len, module_idP, 3, UE_mac_inst[module_idP].crnti,
|
||||||
UE_mac_inst[module_idP].frame, UE_mac_inst[module_idP].subframe, 0, 0);
|
UE_mac_inst[module_idP].rxFrame, UE_mac_inst[module_idP].rxSubframe, 0, 0);
|
||||||
LOG_D(OPT,"[UE %d][DLSCH] Frame %d trace pdu for rnti %x with size %d\n",
|
LOG_D(OPT,"[UE %d][DLSCH] Frame %d trace pdu for rnti %x with size %d\n",
|
||||||
module_idP, frameP, UE_mac_inst[module_idP].crnti, sdu_len);
|
module_idP, frameP, UE_mac_inst[module_idP].crnti, sdu_len);
|
||||||
}
|
}
|
||||||
@@ -512,8 +512,8 @@ void ue_decode_si(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_i
|
|||||||
module_idP,
|
module_idP,
|
||||||
4,
|
4,
|
||||||
0xffff,
|
0xffff,
|
||||||
UE_mac_inst[module_idP].frame,
|
UE_mac_inst[module_idP].rxFrame,
|
||||||
UE_mac_inst[module_idP].subframe,
|
UE_mac_inst[module_idP].rxSubframe,
|
||||||
0,
|
0,
|
||||||
0);
|
0);
|
||||||
LOG_D(OPT,"[UE %d][BCH] Frame %d trace pdu for CC_id %d rnti %x with size %d\n",
|
LOG_D(OPT,"[UE %d][BCH] Frame %d trace pdu for CC_id %d rnti %x with size %d\n",
|
||||||
@@ -548,8 +548,8 @@ void ue_decode_p(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_in
|
|||||||
module_idP,
|
module_idP,
|
||||||
4,
|
4,
|
||||||
P_RNTI,
|
P_RNTI,
|
||||||
UE_mac_inst[module_idP].frame,
|
UE_mac_inst[module_idP].rxFrame,
|
||||||
UE_mac_inst[module_idP].subframe,
|
UE_mac_inst[module_idP].rxSubframe,
|
||||||
0,
|
0,
|
||||||
0);
|
0);
|
||||||
LOG_D(OPT,"[UE %d][BCH] Frame %d trace pdu for CC_id %d rnti %x with size %d\n",
|
LOG_D(OPT,"[UE %d][BCH] Frame %d trace pdu for CC_id %d rnti %x with size %d\n",
|
||||||
@@ -1548,9 +1548,9 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
stop_meas(&UE_mac_inst[module_idP].tx_ulsch_sdu);
|
stop_meas(&UE_mac_inst[module_idP].tx_ulsch_sdu);
|
||||||
|
|
||||||
if (opt_enabled) {
|
if (opt_enabled) {
|
||||||
trace_pdu(0, ulsch_buffer, buflen, module_idP, 3, UE_mac_inst[module_idP].crnti, UE_mac_inst[module_idP].frame, UE_mac_inst[module_idP].subframe, 0, 0);
|
trace_pdu(0, ulsch_buffer, buflen, module_idP, 3, UE_mac_inst[module_idP].crnti, UE_mac_inst[module_idP].txFrame, UE_mac_inst[module_idP].txSubframe, 0, 0);
|
||||||
LOG_D(OPT,"[UE %d][ULSCH] Frame %d trace pdu for rnti %x with size %d\n",
|
LOG_D(OPT,"[UE %d][ULSCH] Frame %d trace pdu for rnti %x with size %d\n",
|
||||||
module_idP, UE_mac_inst[module_idP].frame, UE_mac_inst[module_idP].subframe, UE_mac_inst[module_idP].crnti, buflen);
|
module_idP, UE_mac_inst[module_idP].txFrame, UE_mac_inst[module_idP].txSubframe, UE_mac_inst[module_idP].crnti, buflen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1565,8 +1565,10 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
UE_L2_STATE_t
|
UE_L2_STATE_t
|
||||||
ue_scheduler(
|
ue_scheduler(
|
||||||
const module_id_t module_idP,
|
const module_id_t module_idP,
|
||||||
const frame_t frameP,
|
const frame_t rxFrameP,
|
||||||
const sub_frame_t subframeP,
|
const sub_frame_t rxSubframeP,
|
||||||
|
const frame_t txFrameP,
|
||||||
|
const sub_frame_t txSubframeP,
|
||||||
const lte_subframe_t directionP,
|
const lte_subframe_t directionP,
|
||||||
const uint8_t eNB_indexP,
|
const uint8_t eNB_indexP,
|
||||||
const int CC_id)
|
const int CC_id)
|
||||||
@@ -1590,7 +1592,7 @@ ue_scheduler(
|
|||||||
start_meas(&UE_mac_inst[module_idP].ue_scheduler);
|
start_meas(&UE_mac_inst[module_idP].ue_scheduler);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_IN);
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_NO, UE_mac_inst[module_idP].crnti, frameP, subframeP,eNB_indexP);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_NO, UE_mac_inst[module_idP].crnti, txFrameP, txSubframeP,eNB_indexP);
|
||||||
#if defined(ENABLE_ITTI)
|
#if defined(ENABLE_ITTI)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@@ -1629,11 +1631,13 @@ ue_scheduler(
|
|||||||
//LG#ifdef EXMIMO
|
//LG#ifdef EXMIMO
|
||||||
pdcp_run(&ctxt);
|
pdcp_run(&ctxt);
|
||||||
//#endif
|
//#endif
|
||||||
UE_mac_inst[module_idP].frame = frameP;
|
UE_mac_inst[module_idP].txFrame = txFrameP;
|
||||||
UE_mac_inst[module_idP].subframe = subframeP;
|
UE_mac_inst[module_idP].txSubframe = txSubframeP;
|
||||||
|
UE_mac_inst[module_idP].rxFrame = rxFrameP;
|
||||||
|
UE_mac_inst[module_idP].rxSubframe = rxSubframeP;
|
||||||
|
|
||||||
#ifdef CELLULAR
|
#ifdef CELLULAR
|
||||||
rrc_rx_tx(module_idP, frameP, 0, eNB_indexP);
|
rrc_rx_tx(module_idP, txFrameP, 0, eNB_indexP);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
switch (rrc_rx_tx(&ctxt,
|
switch (rrc_rx_tx(&ctxt,
|
||||||
@@ -1687,7 +1691,7 @@ ue_scheduler(
|
|||||||
//return(RRC_OK);
|
//return(RRC_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_I(MAC,"Frame %d: Contention resolution timer %d/%d\n",frameP,UE_mac_inst[module_idP].RA_contention_resolution_cnt,
|
LOG_I(MAC,"Frame %d: Contention resolution timer %d/%d\n",txFrameP,UE_mac_inst[module_idP].RA_contention_resolution_cnt,
|
||||||
((1+rach_ConfigCommon->ra_SupervisionInfo.mac_ContentionResolutionTimer)<<3));
|
((1+rach_ConfigCommon->ra_SupervisionInfo.mac_ContentionResolutionTimer)<<3));
|
||||||
|
|
||||||
UE_mac_inst[module_idP].RA_contention_resolution_cnt++;
|
UE_mac_inst[module_idP].RA_contention_resolution_cnt++;
|
||||||
@@ -1727,10 +1731,10 @@ ue_scheduler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (update_bsr(module_idP,frameP, eNB_indexP, lcid, UE_mac_inst[module_idP].scheduling_info.LCGID[lcid])) {
|
if (update_bsr(module_idP,txFrameP, eNB_indexP, lcid, UE_mac_inst[module_idP].scheduling_info.LCGID[lcid])) {
|
||||||
UE_mac_inst[module_idP].scheduling_info.SR_pending= 1;
|
UE_mac_inst[module_idP].scheduling_info.SR_pending= 1;
|
||||||
LOG_D(MAC,"[UE %d][SR] Frame %d subframe %d SR for PUSCH is pending for LCGID %d with BSR level %d (%d bytes in RLC)\n",
|
LOG_D(MAC,"[UE %d][SR] Frame %d subframe %d SR for PUSCH is pending for LCGID %d with BSR level %d (%d bytes in RLC)\n",
|
||||||
module_idP, frameP,subframeP,UE_mac_inst[module_idP].scheduling_info.LCGID[lcid],
|
module_idP, txFrameP,txSubframeP,UE_mac_inst[module_idP].scheduling_info.LCGID[lcid],
|
||||||
UE_mac_inst[module_idP].scheduling_info.BSR[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]],
|
UE_mac_inst[module_idP].scheduling_info.BSR[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]],
|
||||||
UE_mac_inst[module_idP].scheduling_info.BSR_bytes[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]]);
|
UE_mac_inst[module_idP].scheduling_info.BSR_bytes[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ typedef struct {
|
|||||||
void (*dl_phy_sync_success) (module_id_t Mod_id,frame_t frameP, uint8_t CH_index,uint8_t first_sync);
|
void (*dl_phy_sync_success) (module_id_t Mod_id,frame_t frameP, uint8_t CH_index,uint8_t first_sync);
|
||||||
|
|
||||||
/// Only calls the PDCP for now
|
/// Only calls the PDCP for now
|
||||||
UE_L2_STATE_t (*ue_scheduler)(module_id_t Mod_id, frame_t frameP,sub_frame_t subframe, lte_subframe_t direction, uint8_t eNB_id, int CC_id);
|
UE_L2_STATE_t (*ue_scheduler)(module_id_t Mod_id, frame_t rxFrameP,sub_frame_t rxSubframe, frame_t txFrameP,sub_frame_t txSubframe, lte_subframe_t direction, uint8_t eNB_id, int CC_id);
|
||||||
|
|
||||||
/// PHY-Config-Dedicated UE
|
/// PHY-Config-Dedicated UE
|
||||||
void (*phy_config_dedicated_ue)(module_id_t Mod_id,int CC_id,uint8_t CH_index,
|
void (*phy_config_dedicated_ue)(module_id_t Mod_id,int CC_id,uint8_t CH_index,
|
||||||
|
|||||||
@@ -749,11 +749,13 @@ static void *UE_thread_rxn_txnp4(void *arg)
|
|||||||
if (UE->mac_enabled==1) {
|
if (UE->mac_enabled==1) {
|
||||||
|
|
||||||
ret = mac_xface->ue_scheduler(UE->Mod_id,
|
ret = mac_xface->ue_scheduler(UE->Mod_id,
|
||||||
proc->frame_tx,
|
proc->frame_rx,
|
||||||
proc->subframe_rx,
|
proc->subframe_rx,
|
||||||
subframe_select(&UE->frame_parms,proc->subframe_tx),
|
proc->frame_tx,
|
||||||
0,
|
proc->subframe_tx,
|
||||||
0/*FIXME CC_id*/);
|
subframe_select(&UE->frame_parms,proc->subframe_tx),
|
||||||
|
0,
|
||||||
|
0/*FIXME CC_id*/);
|
||||||
|
|
||||||
if (ret == CONNECTION_LOST) {
|
if (ret == CONNECTION_LOST) {
|
||||||
LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u RRC Connection lost, returning to PRACH\n",
|
LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u RRC Connection lost, returning to PRACH\n",
|
||||||
|
|||||||
Reference in New Issue
Block a user