Warning disabled SRB config list in RRC reconfiguration complete() when calling pdcp and rlc config asn1 req
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5326 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -401,20 +401,25 @@ int nas_message_encode(
|
||||
|
||||
if (emm_security_context) {
|
||||
#ifdef NAS_MME
|
||||
/* TS 124.301, section 4.4.3.1
|
||||
* The NAS sequence number part of the NAS COUNT shall be
|
||||
* exchanged between the UE and the MME as part of the
|
||||
* NAS signalling. After each new or retransmitted outbound
|
||||
* security protected NAS message, the sender shall increase
|
||||
* the NAS COUNT number by one. Specifically, on the sender
|
||||
* side, the NAS sequence number shall be increased by one,
|
||||
* and if the result is zero (due to wrap around), the NAS
|
||||
* overflow counter shall also be incremented by one (see
|
||||
* subclause 4.4.3.5).
|
||||
*/
|
||||
emm_security_context->dl_count.seq_num += 1;
|
||||
if ( ! emm_security_context->dl_count.seq_num) {
|
||||
emm_security_context->dl_count.overflow += 1;
|
||||
if ( ! emm_security_context->dl_count.overflow) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
#else
|
||||
emm_security_context->ul_count.seq_num += 1;
|
||||
if ( ! emm_security_context->ul_count.seq_num) {
|
||||
emm_security_context->ul_count.overflow += 1;
|
||||
if ( ! emm_security_context->ul_count.overflow) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -114,8 +114,8 @@ typedef struct {
|
||||
int ksi; /* NAS key set identifier */
|
||||
int eea; /* Replayed EPS encryption algorithms */
|
||||
int eia; /* Replayed EPS integrity algorithms */
|
||||
int selected_eea; /* Replayed EPS encryption algorithms */
|
||||
int selected_eia; /* Replayed EPS integrity algorithms */
|
||||
int selected_eea; /* Selected EPS encryption algorithms */
|
||||
int selected_eia; /* Selected EPS integrity algorithms */
|
||||
int notify_failure; /* Indicates whether the security mode control
|
||||
* procedure failure shall be notified to the
|
||||
* ongoing EMM procedure */
|
||||
|
||||
@@ -549,7 +549,7 @@ inline void sctp_eNB_read_from_socket(struct sctp_cnx_list_elm_s *sctp_cnx)
|
||||
} else {
|
||||
sctp_cnx->nb_messages++;
|
||||
|
||||
if (sinfo.sinfo_ppid != sctp_cnx->ppid) {
|
||||
if (ntohl(sinfo.sinfo_ppid) != sctp_cnx->ppid) {
|
||||
/* Mismatch in Payload Protocol Identifier,
|
||||
* may be we received unsollicited traffic from stack other than S1AP.
|
||||
*/
|
||||
|
||||
@@ -2909,7 +2909,7 @@ void phy_procedures_eNB_RX(unsigned char last_slot,PHY_VARS_eNB *phy_vars_eNB,ui
|
||||
#endif
|
||||
stop_meas(&phy_vars_eNB->ulsch_decoding_stats);
|
||||
|
||||
#ifdef DEBUG_PHY_PROC
|
||||
//#ifdef DEBUG_PHY_PROC
|
||||
LOG_I(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d\n",
|
||||
phy_vars_eNB->Mod_id,harq_pid,
|
||||
frame,last_slot>>1,
|
||||
@@ -2921,7 +2921,7 @@ void phy_procedures_eNB_RX(unsigned char last_slot,PHY_VARS_eNB *phy_vars_eNB,ui
|
||||
phy_vars_eNB->ulsch_eNB[i]->o_ACK[0],
|
||||
phy_vars_eNB->ulsch_eNB[i]->o_ACK[1],
|
||||
ret);
|
||||
#endif //DEBUG_PHY_PROC
|
||||
//#endif //DEBUG_PHY_PROC
|
||||
/*
|
||||
if ((two_ues_connected==1) && (phy_vars_eNB->cooperation_flag==2)) {
|
||||
for (j=0;j<phy_vars_eNB->lte_frame_parms.nb_antennas_rx;j++) {
|
||||
|
||||
@@ -187,8 +187,8 @@ typedef struct rlc_am_entity_s {
|
||||
// note occupancy of other buffers is deducted from nb elements in lists
|
||||
rlc_buffer_occupancy_t buffer_occupancy_retransmission_buffer; /*!< \brief Number of PDUs. */
|
||||
|
||||
//boolean_t allocation; /*!< \brief Boolean for rlc_am_entity_t struct allocation. */
|
||||
boolean_t initialized; /*!< \brief Boolean for rlc_am_entity_t struct initialization. */
|
||||
boolean_t configured; /*!< \brief Boolean for rlc_am_entity_t struct configuration. */
|
||||
} rlc_am_entity_t;
|
||||
/** @} */
|
||||
# endif
|
||||
|
||||
@@ -43,9 +43,9 @@ void rlc_am_init(rlc_am_entity_t *rlc_pP, frame_t frameP)
|
||||
//-----------------------------------------------------------------------------
|
||||
{
|
||||
if (rlc_pP->initialized == TRUE) {
|
||||
LOG_D(RLC, "[FRAME %5u][RLC_AM][MOD XX][RB XX][INIT] ALREADY DONE, DOING NOTHING\n", frameP);
|
||||
LOG_D(RLC, "[FRAME %5u][RLC_AM][MOD XX][RB XX][INIT] INITIALIZATION ALREADY DONE, DOING NOTHING\n", frameP);
|
||||
} else {
|
||||
LOG_D(RLC, "[FRAME %5u][RLC_AM][MOD XX][RB XX][INIT] STATE VARIABLES, BUFFERS, LISTS\n", frameP);
|
||||
LOG_D(RLC, "[FRAME %5u][RLC_AM][MOD XX][RB XX][INIT] INITIALIZATION: STATE VARIABLES, BUFFERS, LISTS\n", frameP);
|
||||
memset(rlc_pP, 0, sizeof(rlc_am_entity_t));
|
||||
|
||||
list2_init(&rlc_pP->receiver_buffer, "RX BUFFER");
|
||||
@@ -76,9 +76,62 @@ void rlc_am_init(rlc_am_entity_t *rlc_pP, frame_t frameP)
|
||||
|
||||
rlc_pP->last_frame_status_indication = 123456; // any value > 1
|
||||
rlc_pP->first_retrans_pdu_sn = -1;
|
||||
|
||||
rlc_pP->initialized = TRUE;
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void rlc_am_reestablish(rlc_am_entity_t *rlc_pP, frame_t frameP)
|
||||
//-----------------------------------------------------------------------------
|
||||
{
|
||||
/*
|
||||
* RLC re-establishment is performed upon request by RRC, and the function
|
||||
* is applicable for AM, UM and TM RLC entities.
|
||||
* When RRC indicates that an RLC entity should be re-established, the RLC entity shall:
|
||||
* - if it is an AM RLC entity:
|
||||
* - when possible, reassemble RLC SDUs from any byte segments of AMD PDUs with SN < VR(MR) in the
|
||||
* receiving side, remove RLC headers when doing so and deliver all reassembled RLC SDUs to upper layer in
|
||||
* ascending order of the RLC SN, if not delivered before;
|
||||
* - discard the remaining AMD PDUs and byte segments of AMD PDUs in the receiving side;
|
||||
* - discard all RLC SDUs and AMD PDUs in the transmitting side;
|
||||
* - discard all RLC control PDUs.
|
||||
* - stop and reset all timers;
|
||||
* - reset all state variables to their initial values.
|
||||
*/
|
||||
LOG_D(RLC, "[FRAME %5u][RLC_AM][MOD XX][RB XX][REESTABLISH] RE-INIT STATE VARIABLES, BUFFERS, LISTS\n", frameP);
|
||||
|
||||
#warning TODO when possible reassemble RLC SDUs from any byte segments of AMD PDUs with SN inf VR(MR)
|
||||
list2_free(&rlc_pP->receiver_buffer);
|
||||
|
||||
list_free(&rlc_pP->pdus_to_mac_layer);
|
||||
list_free(&rlc_pP->control_pdu_list);
|
||||
list_free(&rlc_pP->segmentation_pdu_list);
|
||||
|
||||
|
||||
// TX state variables
|
||||
rlc_pP->vt_a = 0;
|
||||
rlc_pP->vt_ms = rlc_pP->vt_a + RLC_AM_WINDOW_SIZE;
|
||||
rlc_pP->vt_s = 0;
|
||||
rlc_pP->poll_sn = 0;
|
||||
|
||||
// TX counters
|
||||
rlc_pP->c_pdu_without_poll = 0;
|
||||
rlc_pP->c_byte_without_poll = 0;
|
||||
|
||||
// RX state variables
|
||||
rlc_pP->vr_r = 0;
|
||||
rlc_pP->vr_mr = rlc_pP->vr_r + RLC_AM_WINDOW_SIZE;
|
||||
rlc_pP->vr_x = 0;
|
||||
rlc_pP->vr_ms = 0;
|
||||
rlc_pP->vr_h = 0;
|
||||
|
||||
rlc_pP->last_frame_status_indication = 123456; // any value > 1
|
||||
rlc_pP->first_retrans_pdu_sn = -1;
|
||||
|
||||
rlc_pP->initialized = TRUE;
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void rlc_am_cleanup(rlc_am_entity_t *rlc_pP)
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -133,7 +186,8 @@ void rlc_am_configure(rlc_am_entity_t *rlc_pP,
|
||||
uint32_t t_status_prohibitP)
|
||||
//-----------------------------------------------------------------------------
|
||||
{
|
||||
LOG_I(RLC, "[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u][CONFIGURE] max_retx_threshold %d poll_pdu %d poll_byte %d t_poll_retransmit %d t_reordering %d t_status_prohibit %d\n",
|
||||
if (rlc_pP->configured == TRUE) {
|
||||
LOG_I(RLC, "[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u][RECONFIGURE] max_retx_threshold %d poll_pdu %d poll_byte %d t_poll_retransmit %d t_reordering %d t_status_prohibit %d\n",
|
||||
frameP,
|
||||
(rlc_pP->is_enb) ? "eNB" : "UE",
|
||||
rlc_pP->enb_module_id,
|
||||
@@ -146,14 +200,41 @@ void rlc_am_configure(rlc_am_entity_t *rlc_pP,
|
||||
t_reorderingP,
|
||||
t_status_prohibitP);
|
||||
|
||||
rlc_pP->max_retx_threshold = max_retx_thresholdP;
|
||||
rlc_pP->poll_pdu = poll_pduP;
|
||||
rlc_pP->poll_byte = poll_byteP;
|
||||
rlc_pP->protocol_state = RLC_DATA_TRANSFER_READY_STATE;
|
||||
rlc_pP->max_retx_threshold = max_retx_thresholdP;
|
||||
rlc_pP->poll_pdu = poll_pduP;
|
||||
rlc_pP->poll_byte = poll_byteP;
|
||||
rlc_pP->protocol_state = RLC_DATA_TRANSFER_READY_STATE;
|
||||
|
||||
rlc_pP->t_poll_retransmit.time_out = t_poll_retransmitP;
|
||||
rlc_pP->t_reordering.time_out = t_reorderingP;
|
||||
rlc_pP->t_status_prohibit.time_out = t_status_prohibitP;
|
||||
} else {
|
||||
LOG_I(RLC, "[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u][CONFIGURE] max_retx_threshold %d poll_pdu %d poll_byte %d t_poll_retransmit %d t_reordering %d t_status_prohibit %d\n",
|
||||
frameP,
|
||||
(rlc_pP->is_enb) ? "eNB" : "UE",
|
||||
rlc_pP->enb_module_id,
|
||||
rlc_pP->ue_module_id,
|
||||
rlc_pP->rb_id,
|
||||
max_retx_thresholdP,
|
||||
poll_pduP,
|
||||
poll_byteP,
|
||||
t_poll_retransmitP,
|
||||
t_reorderingP,
|
||||
t_status_prohibitP);
|
||||
|
||||
rlc_pP->max_retx_threshold = max_retx_thresholdP;
|
||||
rlc_pP->poll_pdu = poll_pduP;
|
||||
rlc_pP->poll_byte = poll_byteP;
|
||||
rlc_pP->protocol_state = RLC_DATA_TRANSFER_READY_STATE;
|
||||
|
||||
|
||||
rlc_am_init_timer_poll_retransmit(rlc_pP, t_poll_retransmitP);
|
||||
rlc_am_init_timer_reordering (rlc_pP, t_reorderingP);
|
||||
rlc_am_init_timer_status_prohibit(rlc_pP, t_status_prohibitP);
|
||||
|
||||
rlc_pP->configured = TRUE;
|
||||
}
|
||||
|
||||
rlc_am_init_timer_poll_retransmit(rlc_pP, t_poll_retransmitP);
|
||||
rlc_am_init_timer_reordering (rlc_pP, t_reorderingP);
|
||||
rlc_am_init_timer_status_prohibit(rlc_pP, t_status_prohibitP);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void rlc_am_set_debug_infos(rlc_am_entity_t *rlc_pP,
|
||||
|
||||
@@ -458,8 +458,16 @@ rb_free_rlc_union (void *rlcu_pP)
|
||||
rlc_tm_cleanup(&rlcu_p->rlc.tm);
|
||||
break;
|
||||
default:
|
||||
LOG_W(RLC,
|
||||
"%s %p unknown RLC type\n",
|
||||
__FUNCTION__,
|
||||
rlcu_pP);
|
||||
break;
|
||||
}
|
||||
LOG_D(RLC,
|
||||
"%s %p \n",
|
||||
__FUNCTION__,
|
||||
rlcu_pP);
|
||||
free(rlcu_p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2280,7 +2280,7 @@ void rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
||||
#endif
|
||||
// Refresh SRBs/DRBs
|
||||
rrc_pdcp_config_asn1_req(enb_mod_idP, ue_mod_idP, frameP, ENB_FLAG_YES,
|
||||
SRB_configList,
|
||||
NULL, //LG-RK 14/05/2014 SRB_configList,
|
||||
DRB_configList, (DRB_ToReleaseList_t *) NULL,
|
||||
/*eNB_rrc_inst[enb_mod_idP].ciphering_algorithm[ue_mod_idP] |
|
||||
(eNB_rrc_inst[enb_mod_idP].integrity_algorithm[ue_mod_idP] << 4),
|
||||
@@ -2294,7 +2294,13 @@ void rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
||||
#endif
|
||||
);
|
||||
// Refresh SRBs/DRBs
|
||||
rrc_rlc_config_asn1_req(enb_mod_idP, ue_mod_idP, frameP, 1, SRB_configList, DRB_configList, (DRB_ToReleaseList_t *) NULL
|
||||
rrc_rlc_config_asn1_req(enb_mod_idP,
|
||||
ue_mod_idP,
|
||||
frameP,
|
||||
1,
|
||||
NULL, //LG-RK 14/05/2014 SRB_configList,
|
||||
DRB_configList,
|
||||
(DRB_ToReleaseList_t *) NULL
|
||||
#ifdef Rel10
|
||||
, (PMCH_InfoList_r9_t *) NULL
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user