RRC timer: last format done. Timer reset in scheduling of DTCH (DL/UL). Commit to test.
This commit is contained in:
@@ -65,7 +65,7 @@ typedef int32_t sdu_size_t;
|
|||||||
typedef uint32_t frame_t;
|
typedef uint32_t frame_t;
|
||||||
typedef int32_t sframe_t;
|
typedef int32_t sframe_t;
|
||||||
typedef uint32_t sub_frame_t;
|
typedef uint32_t sub_frame_t;
|
||||||
typedef uint16_t module_id_t;
|
typedef uint16_t module_id_t;
|
||||||
typedef uint8_t slice_id_t;
|
typedef uint8_t slice_id_t;
|
||||||
typedef uint8_t eNB_index_t;
|
typedef uint8_t eNB_index_t;
|
||||||
typedef uint16_t ue_id_t;
|
typedef uint16_t ue_id_t;
|
||||||
|
|||||||
@@ -43,6 +43,10 @@
|
|||||||
|
|
||||||
#include "RRC/LTE/rrc_extern.h"
|
#include "RRC/LTE/rrc_extern.h"
|
||||||
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
|
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
|
||||||
|
/************************************************/
|
||||||
|
//#include "RRC/LTE/rrc_eNB_UE_context.h"
|
||||||
|
//#include "RRC/LTE/rrc_defs.h"
|
||||||
|
/************************************************/
|
||||||
|
|
||||||
//#include "LAYER2/MAC/pre_processor.c"
|
//#include "LAYER2/MAC/pre_processor.c"
|
||||||
#include "pdcp.h"
|
#include "pdcp.h"
|
||||||
@@ -466,6 +470,8 @@ schedule_ue_spec(module_id_t module_idP, int slice_idxP,
|
|||||||
int header_length_last;
|
int header_length_last;
|
||||||
int header_length_total;
|
int header_length_total;
|
||||||
|
|
||||||
|
rrc_eNB_ue_context_t *ue_contextP; // added by LA
|
||||||
|
|
||||||
start_meas(&eNB->schedule_dlsch);
|
start_meas(&eNB->schedule_dlsch);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH, VCD_FUNCTION_IN);
|
||||||
|
|
||||||
@@ -1106,6 +1112,17 @@ schedule_ue_spec(module_id_t module_idP, int slice_idxP,
|
|||||||
|
|
||||||
UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer = 0;
|
UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer = 0;
|
||||||
|
|
||||||
|
// reset RRC inactivity timer after uplane activity
|
||||||
|
ue_contextP = rrc_eNB_get_ue_context(RC.rrc[module_idP], rnti);
|
||||||
|
ue_contextP->ue_context.ue_rrc_inactivity_timer = 1;
|
||||||
|
|
||||||
|
LOG_W(RRC, "After reset, rrc_inactivity_timer is %d, of UE rntiP %d, ue_context_rnti %d, UE_id %d, ue_initial_id %d\n",
|
||||||
|
ue_contextP->ue_context.ue_rrc_inactivity_timer,
|
||||||
|
rnti,
|
||||||
|
ue_contextP->ue_id_rnti,
|
||||||
|
UE_id,
|
||||||
|
ue_contextP->ue_context.ue_initial_id);
|
||||||
|
|
||||||
} // end if (rlc_status.bytes_in_buffer > 0)
|
} // end if (rlc_status.bytes_in_buffer > 0)
|
||||||
} else { // no TBS left
|
} else { // no TBS left
|
||||||
break; // break for (lcid = NB_RB_MAX - 1; lcid >= DTCH; lcid--)
|
break; // break for (lcid = NB_RB_MAX - 1; lcid >= DTCH; lcid--)
|
||||||
|
|||||||
@@ -45,6 +45,10 @@
|
|||||||
|
|
||||||
#include "RRC/LTE/rrc_extern.h"
|
#include "RRC/LTE/rrc_extern.h"
|
||||||
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
|
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
|
||||||
|
/************************************************/
|
||||||
|
//#include "RRC/LTE/rrc_eNB_UE_context.h"
|
||||||
|
//#include "RRC/LTE/rrc_defs.h"
|
||||||
|
/************************************************/
|
||||||
|
|
||||||
#include "assertions.h"
|
#include "assertions.h"
|
||||||
//#include "LAYER2/MAC/pre_processor.c"
|
//#include "LAYER2/MAC/pre_processor.c"
|
||||||
@@ -111,6 +115,8 @@ rx_sdu(const module_id_t enb_mod_idP,
|
|||||||
(RA_t *) & RC.mac[enb_mod_idP]->common_channels[CC_idP].ra[0];
|
(RA_t *) & RC.mac[enb_mod_idP]->common_channels[CC_idP].ra[0];
|
||||||
int first_rb = 0;
|
int first_rb = 0;
|
||||||
|
|
||||||
|
rrc_eNB_ue_context_t *ue_contextP; // added by LA
|
||||||
|
|
||||||
start_meas(&mac->rx_ulsch_sdu);
|
start_meas(&mac->rx_ulsch_sdu);
|
||||||
|
|
||||||
if ((UE_id > MAX_MOBILES_PER_ENB) || (UE_id == -1))
|
if ((UE_id > MAX_MOBILES_PER_ENB) || (UE_id == -1))
|
||||||
@@ -732,6 +738,18 @@ rx_sdu(const module_id_t enb_mod_idP,
|
|||||||
//clear uplane_inactivity_timer
|
//clear uplane_inactivity_timer
|
||||||
UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer = 0;
|
UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer = 0;
|
||||||
|
|
||||||
|
// reset RRC inactivity timer after uplane activity
|
||||||
|
ue_contextP = rrc_eNB_get_ue_context(RC.rrc[enb_mod_idP], rntiP);
|
||||||
|
ue_contextP->ue_context.ue_rrc_inactivity_timer = 1;
|
||||||
|
|
||||||
|
LOG_W(RRC, "After reset, rrc_inactivity_timer is %d, of UE rntiP %d, ue_context_rnti %d, UE_id %d, ue_initial_id %d\n",
|
||||||
|
ue_contextP->ue_context.ue_rrc_inactivity_timer,
|
||||||
|
rntiP,
|
||||||
|
ue_contextP->ue_id_rnti,
|
||||||
|
UE_id,
|
||||||
|
ue_contextP->ue_context.ue_initial_id);
|
||||||
|
|
||||||
|
|
||||||
} else { /* rx_length[i] */
|
} else { /* rx_length[i] */
|
||||||
UE_list->eNB_UE_stats[CC_idP][UE_id].num_errors_rx += 1;
|
UE_list->eNB_UE_stats[CC_idP][UE_id].num_errors_rx += 1;
|
||||||
|
|
||||||
@@ -743,7 +761,7 @@ rx_sdu(const module_id_t enb_mod_idP,
|
|||||||
UE_id);
|
UE_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { /*(UE_id != -1 */
|
} else { // end if (UE_id != -1)
|
||||||
LOG_E(MAC,"[eNB %d] CC_id %d Frame %d : received unsupported or unknown LCID %d from UE %d ",
|
LOG_E(MAC,"[eNB %d] CC_id %d Frame %d : received unsupported or unknown LCID %d from UE %d ",
|
||||||
enb_mod_idP,
|
enb_mod_idP,
|
||||||
CC_idP,
|
CC_idP,
|
||||||
|
|||||||
@@ -1036,7 +1036,7 @@ rrc_eNB_process_RRCConnectionSetupComplete(
|
|||||||
ue_context_pP->ue_context.Srb1.Active = 1;
|
ue_context_pP->ue_context.Srb1.Active = 1;
|
||||||
ue_context_pP->ue_context.Status = RRC_CONNECTED;
|
ue_context_pP->ue_context.Status = RRC_CONNECTED;
|
||||||
ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // set rrc inactivity when UE goes into RRC_CONNECTED
|
ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // set rrc inactivity when UE goes into RRC_CONNECTED
|
||||||
ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // SHOULD NOT BE DONE HERE !!!!!
|
ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // The value should come from config file
|
||||||
|
|
||||||
T(T_ENB_RRC_CONNECTION_SETUP_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
T(T_ENB_RRC_CONNECTION_SETUP_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
||||||
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
||||||
@@ -1369,6 +1369,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
|
|||||||
uint8_t next_xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);
|
uint8_t next_xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);
|
||||||
|
|
||||||
ue_context_pP->ue_context.Status = RRC_CONNECTED;
|
ue_context_pP->ue_context.Status = RRC_CONNECTED;
|
||||||
|
ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // set rrc inactivity when UE goes into RRC_CONNECTED
|
||||||
|
ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // The value should come from config file
|
||||||
ue_context_pP->ue_context.reestablishment_xid = next_xid;
|
ue_context_pP->ue_context.reestablishment_xid = next_xid;
|
||||||
|
|
||||||
SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[xid];
|
SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[xid];
|
||||||
|
|||||||
@@ -167,7 +167,8 @@ void extract_imsi(uint8_t *pdu_buf, uint32_t pdu_len, rrc_eNB_ue_context_t *ue_c
|
|||||||
# if defined(ENABLE_ITTI)
|
# if defined(ENABLE_ITTI)
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
* TODO
|
* Get the UE S1 struct containing hashtables S1_id/UE_id.
|
||||||
|
* Is also used to set the S1_id of the UE, depending on inputs.
|
||||||
*/
|
*/
|
||||||
struct rrc_ue_s1ap_ids_s*
|
struct rrc_ue_s1ap_ids_s*
|
||||||
rrc_eNB_S1AP_get_ue_ids(
|
rrc_eNB_S1AP_get_ue_ids(
|
||||||
@@ -305,7 +306,7 @@ rrc_eNB_S1AP_get_ue_ids(
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
* TODO
|
* Remove UE ids (ue_initial_id and S1_id) from hashtables.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
rrc_eNB_S1AP_remove_ue_ids(
|
rrc_eNB_S1AP_remove_ue_ids(
|
||||||
@@ -789,7 +790,7 @@ void rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
* TODO
|
* Initial UE NAS message on S1AP.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
rrc_eNB_send_S1AP_NAS_FIRST_REQ(
|
rrc_eNB_send_S1AP_NAS_FIRST_REQ(
|
||||||
|
|||||||
Reference in New Issue
Block a user