revert the eNB_index in MAC-RLC-PDCP-RRC APIs for cases when a UE is connected to more than 1 e
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7449 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -333,7 +333,7 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#warning "LG eps bearer mapping to DRB id to do (offset -4)"
|
#warning "LG eps bearer mapping to DRB id to do (offset -4)"
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gtpv1u_teid_data_p->enb_id, ENB_FLAG_YES, gtpv1u_teid_data_p->ue_id, 0, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gtpv1u_teid_data_p->enb_id, ENB_FLAG_YES, gtpv1u_teid_data_p->ue_id, 0, 0,gtpv1u_teid_data_p->enb_id);
|
||||||
|
|
||||||
MSC_LOG_TX_MESSAGE(
|
MSC_LOG_TX_MESSAGE(
|
||||||
MSC_GTPU_ENB,
|
MSC_GTPU_ENB,
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ 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 uint8_t module_id_t;
|
typedef uint8_t module_id_t;
|
||||||
|
typedef uint8_t eNB_index_t;
|
||||||
typedef uint16_t ue_id_t;
|
typedef uint16_t ue_id_t;
|
||||||
typedef int16_t smodule_id_t;
|
typedef int16_t smodule_id_t;
|
||||||
typedef uint16_t rb_id_t;
|
typedef uint16_t rb_id_t;
|
||||||
@@ -207,6 +208,7 @@ typedef struct protocol_ctxt_s {
|
|||||||
rnti_t rnti;
|
rnti_t rnti;
|
||||||
frame_t frame; /*!< \brief LTE frame number.*/
|
frame_t frame; /*!< \brief LTE frame number.*/
|
||||||
sub_frame_t subframe; /*!< \brief LTE sub frame number.*/
|
sub_frame_t subframe; /*!< \brief LTE sub frame number.*/
|
||||||
|
eNB_index_t eNB_index; /*!< \brief valid for UE indicating the index of connected eNB(s) */
|
||||||
} protocol_ctxt_t;
|
} protocol_ctxt_t;
|
||||||
// warning time hardcoded
|
// warning time hardcoded
|
||||||
#define PROTOCOL_CTXT_TIME_MILLI_SECONDS(CtXt_h) ((CtXt_h)->frame*10+(CtXt_h)->subframe)
|
#define PROTOCOL_CTXT_TIME_MILLI_SECONDS(CtXt_h) ((CtXt_h)->frame*10+(CtXt_h)->subframe)
|
||||||
@@ -237,12 +239,13 @@ typedef struct protocol_ctxt_s {
|
|||||||
MODULE_ID_TO_INSTANCE( (CtXt_h)->module_id , (CtXt_h)->instance , (CtXt_h)->enb_flag )
|
MODULE_ID_TO_INSTANCE( (CtXt_h)->module_id , (CtXt_h)->instance , (CtXt_h)->enb_flag )
|
||||||
|
|
||||||
|
|
||||||
#define PROTOCOL_CTXT_SET_BY_MODULE_ID(Ctxt_Pp, mODULE_iD, eNB_fLAG, rNTI, fRAME, sUBfRAME) \
|
#define PROTOCOL_CTXT_SET_BY_MODULE_ID(Ctxt_Pp, mODULE_iD, eNB_fLAG, rNTI, fRAME, sUBfRAME, eNB_iNDEX) \
|
||||||
(Ctxt_Pp)->module_id = mODULE_iD; \
|
(Ctxt_Pp)->module_id = mODULE_iD; \
|
||||||
(Ctxt_Pp)->enb_flag = eNB_fLAG; \
|
(Ctxt_Pp)->enb_flag = eNB_fLAG; \
|
||||||
(Ctxt_Pp)->rnti = rNTI; \
|
(Ctxt_Pp)->rnti = rNTI; \
|
||||||
(Ctxt_Pp)->frame = fRAME; \
|
(Ctxt_Pp)->frame = fRAME; \
|
||||||
(Ctxt_Pp)->subframe = sUBfRAME; \
|
(Ctxt_Pp)->subframe = sUBfRAME; \
|
||||||
|
(Ctxt_Pp)->eNB_index = eNB_iNDEX; \
|
||||||
PROTOCOL_CTXT_COMPUTE_INSTANCE(Ctxt_Pp)
|
PROTOCOL_CTXT_COMPUTE_INSTANCE(Ctxt_Pp)
|
||||||
|
|
||||||
#define PROTOCOL_CTXT_SET_BY_INSTANCE(Ctxt_Pp, iNSTANCE, eNB_fLAG, rNTI, fRAME, sUBfRAME) \
|
#define PROTOCOL_CTXT_SET_BY_INSTANCE(Ctxt_Pp, iNSTANCE, eNB_fLAG, rNTI, fRAME, sUBfRAME) \
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
|
|||||||
|
|
||||||
//if (subframeP%5 == 0)
|
//if (subframeP%5 == 0)
|
||||||
//#ifdef EXMIMO
|
//#ifdef EXMIMO
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frameP, 0,module_idP);
|
||||||
pdcp_run(&ctxt);
|
pdcp_run(&ctxt);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
|||||||
@@ -829,6 +829,7 @@ schedule_ue_spec(
|
|||||||
rlc_status = mac_rlc_status_ind(
|
rlc_status = mac_rlc_status_ind(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -842,6 +843,7 @@ schedule_ue_spec(
|
|||||||
sdu_lengths[0] += mac_rlc_data_req(
|
sdu_lengths[0] += mac_rlc_data_req(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -874,6 +876,7 @@ schedule_ue_spec(
|
|||||||
rlc_status = mac_rlc_status_ind(
|
rlc_status = mac_rlc_status_ind(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -887,6 +890,7 @@ schedule_ue_spec(
|
|||||||
sdu_lengths[num_sdus] += mac_rlc_data_req(
|
sdu_lengths[num_sdus] += mac_rlc_data_req(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -916,6 +920,7 @@ schedule_ue_spec(
|
|||||||
rlc_status = mac_rlc_status_ind(
|
rlc_status = mac_rlc_status_ind(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -929,6 +934,7 @@ schedule_ue_spec(
|
|||||||
sdu_lengths[num_sdus] = mac_rlc_data_req(
|
sdu_lengths[num_sdus] = mac_rlc_data_req(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
|
|||||||
@@ -508,7 +508,7 @@ int schedule_MBMS(module_id_t module_idP, uint8_t CC_id, frame_t frameP, sub_fra
|
|||||||
module_idP,frameP,MTCH,TBS,
|
module_idP,frameP,MTCH,TBS,
|
||||||
TBS-header_len_mcch-header_len_msi-sdu_length_total-header_len_mtch);
|
TBS-header_len_mcch-header_len_msi-sdu_length_total-header_len_mtch);
|
||||||
|
|
||||||
rlc_status = mac_rlc_status_ind(module_idP,0,frameP,ENB_FLAG_YES,MBMS_FLAG_YES,MTCH,
|
rlc_status = mac_rlc_status_ind(module_idP,0,frameP,module_idP,ENB_FLAG_YES,MBMS_FLAG_YES,MTCH,
|
||||||
TBS-header_len_mcch-header_len_msi-sdu_length_total-header_len_mtch);
|
TBS-header_len_mcch-header_len_msi-sdu_length_total-header_len_mtch);
|
||||||
LOG_D(MAC,"e-MBMS log channel %u frameP %d, subframeP %d, rlc_status.bytes_in_buffer is %d\n",
|
LOG_D(MAC,"e-MBMS log channel %u frameP %d, subframeP %d, rlc_status.bytes_in_buffer is %d\n",
|
||||||
MTCH,frameP,subframeP, rlc_status.bytes_in_buffer);
|
MTCH,frameP,subframeP, rlc_status.bytes_in_buffer);
|
||||||
@@ -520,6 +520,7 @@ int schedule_MBMS(module_id_t module_idP, uint8_t CC_id, frame_t frameP, sub_fra
|
|||||||
sdu_lengths[num_sdus] = mac_rlc_data_req(
|
sdu_lengths[num_sdus] = mac_rlc_data_req(
|
||||||
module_idP,
|
module_idP,
|
||||||
0,
|
0,
|
||||||
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_YES,
|
MBMS_FLAG_YES,
|
||||||
|
|||||||
@@ -271,6 +271,7 @@ void rx_sdu(
|
|||||||
mac_rlc_data_ind(
|
mac_rlc_data_ind(
|
||||||
enb_mod_idP,
|
enb_mod_idP,
|
||||||
rntiP,
|
rntiP,
|
||||||
|
enb_mod_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -307,6 +308,7 @@ void rx_sdu(
|
|||||||
mac_rlc_data_ind(
|
mac_rlc_data_ind(
|
||||||
enb_mod_idP,
|
enb_mod_idP,
|
||||||
rntiP,
|
rntiP,
|
||||||
|
enb_mod_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ void store_dlsch_buffer (module_id_t Mod_id,
|
|||||||
|
|
||||||
for(i=0; i< MAX_NUM_LCID; i++) { // loop over all the logical channels
|
for(i=0; i< MAX_NUM_LCID; i++) { // loop over all the logical channels
|
||||||
|
|
||||||
rlc_status = mac_rlc_status_ind(Mod_id,rnti, frameP,ENB_FLAG_YES,MBMS_FLAG_NO,i,0 );
|
rlc_status = mac_rlc_status_ind(Mod_id,rnti, Mod_id,frameP,ENB_FLAG_YES,MBMS_FLAG_NO,i,0 );
|
||||||
UE_template->dl_buffer_info[i] = rlc_status.bytes_in_buffer; //storing the dlsch buffer for each logical channel
|
UE_template->dl_buffer_info[i] = rlc_status.bytes_in_buffer; //storing the dlsch buffer for each logical channel
|
||||||
UE_template->dl_pdus_in_buffer[i] = rlc_status.pdus_in_buffer;
|
UE_template->dl_pdus_in_buffer[i] = rlc_status.pdus_in_buffer;
|
||||||
UE_template->dl_buffer_head_sdu_creation_time[i] = rlc_status.head_sdu_creation_time ;
|
UE_template->dl_buffer_head_sdu_creation_time[i] = rlc_status.head_sdu_creation_time ;
|
||||||
|
|||||||
@@ -565,7 +565,7 @@ BSR_LONG * get_bsr_long(module_id_t module_idP, uint8_t bsr_len);
|
|||||||
\param[in] frame Frame index
|
\param[in] frame Frame index
|
||||||
\param[in] lcid logical channel identifier
|
\param[in] lcid logical channel identifier
|
||||||
*/
|
*/
|
||||||
boolean_t update_bsr(module_id_t module_idP, frame_t frameP, uint8_t lcid, uint8_t lcgid);
|
boolean_t update_bsr(module_id_t module_idP, frame_t frameP, eNB_index_t eNB_index, uint8_t lcid, uint8_t lcgid);
|
||||||
|
|
||||||
/*! \fn locate (int *table, int size, int value)
|
/*! \fn locate (int *table, int size, int value)
|
||||||
\brief locate the BSR level in the table as defined in 36.321. This function requires that he values in table to be monotonic, either increasing or decreasing. The returned value is not less than 0, nor greater than n-1, where n is the size of table.
|
\brief locate the BSR level in the table as defined in 36.321. This function requires that he values in table to be monotonic, either increasing or decreasing. The returned value is not less than 0, nor greater than n-1, where n is the size of table.
|
||||||
|
|||||||
@@ -349,7 +349,7 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP,int CC_id,frame_t frameP,
|
|||||||
} else if (UE_mac_inst[module_idP].scheduling_info.BSR_bytes[DCCH] > 0) {
|
} else if (UE_mac_inst[module_idP].scheduling_info.BSR_bytes[DCCH] > 0) {
|
||||||
// This is for triggering a transmission on DCCH using PRACH (during handover, or sending SR for example)
|
// This is for triggering a transmission on DCCH using PRACH (during handover, or sending SR for example)
|
||||||
dcch_header_len = 2 + 2; /// SHORT Subheader + C-RNTI control element
|
dcch_header_len = 2 + 2; /// SHORT Subheader + C-RNTI control element
|
||||||
rlc_status = mac_rlc_status_ind(0, module_idP,frameP,ENB_FLAG_NO,MBMS_FLAG_NO,
|
rlc_status = mac_rlc_status_ind(module_idP,UE_mac_inst[module_idP].crnti, eNB_indexP,frameP,ENB_FLAG_NO,MBMS_FLAG_NO,
|
||||||
DCCH,
|
DCCH,
|
||||||
6);
|
6);
|
||||||
|
|
||||||
@@ -361,12 +361,13 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP,int CC_id,frame_t frameP,
|
|||||||
LOG_D(MAC,"[UE %d] Frame %d : UL-DCCH -> ULSCH, RRC message has %d bytes to send through PRACH(mac header len %d)\n",
|
LOG_D(MAC,"[UE %d] Frame %d : UL-DCCH -> ULSCH, RRC message has %d bytes to send through PRACH(mac header len %d)\n",
|
||||||
module_idP,frameP, rlc_status.bytes_in_buffer,dcch_header_len);
|
module_idP,frameP, rlc_status.bytes_in_buffer,dcch_header_len);
|
||||||
|
|
||||||
sdu_lengths[0] = mac_rlc_data_req(eNB_indexP, module_idP,frameP,ENB_FLAG_NO, MBMS_FLAG_NO,
|
sdu_lengths[0] = mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti,
|
||||||
|
eNB_indexP, frameP,ENB_FLAG_NO, MBMS_FLAG_NO,
|
||||||
DCCH,
|
DCCH,
|
||||||
(char *)&ulsch_buff[0]);
|
(char *)&ulsch_buff[0]);
|
||||||
|
|
||||||
LOG_D(MAC,"[UE %d] TX Got %d bytes for DCCH\n",module_idP,sdu_lengths[0]);
|
LOG_D(MAC,"[UE %d] TX Got %d bytes for DCCH\n",module_idP,sdu_lengths[0]);
|
||||||
update_bsr(module_idP, frameP, DCCH,UE_mac_inst[module_idP].scheduling_info.LCGID[DCCH]);
|
update_bsr(module_idP, frameP, eNB_indexP,DCCH,UE_mac_inst[module_idP].scheduling_info.LCGID[DCCH]);
|
||||||
//header_len +=2;
|
//header_len +=2;
|
||||||
UE_mac_inst[module_idP].RA_active = 1;
|
UE_mac_inst[module_idP].RA_active = 1;
|
||||||
UE_mac_inst[module_idP].RA_PREAMBLE_TRANSMISSION_COUNTER = 1;
|
UE_mac_inst[module_idP].RA_PREAMBLE_TRANSMISSION_COUNTER = 1;
|
||||||
|
|||||||
@@ -434,6 +434,7 @@ ue_send_sdu(
|
|||||||
LOG_D(MAC,"[UE %d] Frame %d : DLSCH -> DL-DCCH%d, RRC message (eNB %d, %d bytes)\n", module_idP, frameP, rx_lcids[i],eNB_index,rx_lengths[i]);
|
LOG_D(MAC,"[UE %d] Frame %d : DLSCH -> DL-DCCH%d, RRC message (eNB %d, %d bytes)\n", module_idP, frameP, rx_lcids[i],eNB_index,rx_lengths[i]);
|
||||||
mac_rlc_data_ind(module_idP,
|
mac_rlc_data_ind(module_idP,
|
||||||
UE_mac_inst[module_idP].crnti,
|
UE_mac_inst[module_idP].crnti,
|
||||||
|
eNB_index,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_NO,
|
ENB_FLAG_NO,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
@@ -446,7 +447,8 @@ ue_send_sdu(
|
|||||||
LOG_D(MAC,"[UE %d] Frame %d : DLSCH -> DL-DCCH%d, RRC message (eNB %d, %d bytes)\n", module_idP, frameP, rx_lcids[i], eNB_index,rx_lengths[i]);
|
LOG_D(MAC,"[UE %d] Frame %d : DLSCH -> DL-DCCH%d, RRC message (eNB %d, %d bytes)\n", module_idP, frameP, rx_lcids[i], eNB_index,rx_lengths[i]);
|
||||||
mac_rlc_data_ind(module_idP,
|
mac_rlc_data_ind(module_idP,
|
||||||
UE_mac_inst[module_idP].crnti,
|
UE_mac_inst[module_idP].crnti,
|
||||||
frameP,
|
eNB_index,
|
||||||
|
frameP,
|
||||||
ENB_FLAG_NO,
|
ENB_FLAG_NO,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
DCCH1,
|
DCCH1,
|
||||||
@@ -469,7 +471,8 @@ ue_send_sdu(
|
|||||||
|
|
||||||
mac_rlc_data_ind(module_idP,
|
mac_rlc_data_ind(module_idP,
|
||||||
UE_mac_inst[module_idP].crnti,
|
UE_mac_inst[module_idP].crnti,
|
||||||
frameP,
|
eNB_index,
|
||||||
|
frameP,
|
||||||
ENB_FLAG_NO,
|
ENB_FLAG_NO,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
DTCH,
|
DTCH,
|
||||||
@@ -598,7 +601,8 @@ void ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP, uint
|
|||||||
mac_rlc_data_ind(
|
mac_rlc_data_ind(
|
||||||
module_idP,
|
module_idP,
|
||||||
UE_mac_inst[module_idP].crnti,
|
UE_mac_inst[module_idP].crnti,
|
||||||
frameP,
|
eNB_index,
|
||||||
|
frameP,
|
||||||
ENB_FLAG_NO,
|
ENB_FLAG_NO,
|
||||||
MBMS_FLAG_YES,
|
MBMS_FLAG_YES,
|
||||||
MTCH, /*+ (maxDRB + 3),*/
|
MTCH, /*+ (maxDRB + 3),*/
|
||||||
@@ -1261,14 +1265,14 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
|
|
||||||
if (UE_mac_inst[module_idP].scheduling_info.LCID_status[DCCH] == LCID_NOT_EMPTY) {
|
if (UE_mac_inst[module_idP].scheduling_info.LCID_status[DCCH] == LCID_NOT_EMPTY) {
|
||||||
|
|
||||||
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,frameP,ENB_FLAG_NO,MBMS_FLAG_NO, // eNB_index
|
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti, eNB_index, frameP,ENB_FLAG_NO,MBMS_FLAG_NO, // eNB_index
|
||||||
DCCH,
|
DCCH,
|
||||||
(buflen-dcch_header_len-bsr_len-phr_len));
|
(buflen-dcch_header_len-bsr_len-phr_len));
|
||||||
LOG_D(MAC, "[UE %d] Frame %d : UL-DCCH -> ULSCH, RRC message has %d bytes to "
|
LOG_D(MAC, "[UE %d] Frame %d : UL-DCCH -> ULSCH, RRC message has %d bytes to "
|
||||||
"send (Transport Block size %d, mac header len %d)\n",
|
"send (Transport Block size %d, mac header len %d)\n",
|
||||||
module_idP,frameP, rlc_status.bytes_in_buffer,buflen,dcch_header_len);
|
module_idP,frameP, rlc_status.bytes_in_buffer,buflen,dcch_header_len);
|
||||||
|
|
||||||
sdu_lengths[0] += mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti,frameP,ENB_FLAG_NO, MBMS_FLAG_NO,
|
sdu_lengths[0] += mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti,eNB_index,frameP,ENB_FLAG_NO, MBMS_FLAG_NO,
|
||||||
DCCH,
|
DCCH,
|
||||||
(char *)&ulsch_buff[sdu_lengths[0]]);
|
(char *)&ulsch_buff[sdu_lengths[0]]);
|
||||||
|
|
||||||
@@ -1276,7 +1280,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
sdu_lcids[0] = DCCH;
|
sdu_lcids[0] = DCCH;
|
||||||
LOG_D(MAC,"[UE %d] TX Got %d bytes for DCCH\n",module_idP,sdu_lengths[0]);
|
LOG_D(MAC,"[UE %d] TX Got %d bytes for DCCH\n",module_idP,sdu_lengths[0]);
|
||||||
num_sdus = 1;
|
num_sdus = 1;
|
||||||
update_bsr(module_idP, frameP, DCCH, UE_mac_inst[module_idP].scheduling_info.LCGID[DCCH]);
|
update_bsr(module_idP, frameP, eNB_index, DCCH, UE_mac_inst[module_idP].scheduling_info.LCGID[DCCH]);
|
||||||
//header_len +=2;
|
//header_len +=2;
|
||||||
} else {
|
} else {
|
||||||
dcch_header_len=0;
|
dcch_header_len=0;
|
||||||
@@ -1290,7 +1294,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
// DCCH1
|
// DCCH1
|
||||||
if (UE_mac_inst[module_idP].scheduling_info.LCID_status[DCCH1] == LCID_NOT_EMPTY) {
|
if (UE_mac_inst[module_idP].scheduling_info.LCID_status[DCCH1] == LCID_NOT_EMPTY) {
|
||||||
|
|
||||||
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,frameP,ENB_FLAG_NO,MBMS_FLAG_NO, // eNB_index
|
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti, eNB_index,frameP,ENB_FLAG_NO,MBMS_FLAG_NO, // eNB_index
|
||||||
DCCH1,
|
DCCH1,
|
||||||
(buflen-bsr_len-phr_len-dcch_header_len-dcch1_header_len-sdu_length_total));
|
(buflen-bsr_len-phr_len-dcch_header_len-dcch1_header_len-sdu_length_total));
|
||||||
|
|
||||||
@@ -1298,7 +1302,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
" send (Transport Block size %d, mac header len %d)\n",
|
" send (Transport Block size %d, mac header len %d)\n",
|
||||||
module_idP,frameP, rlc_status.bytes_in_buffer,buflen,dcch1_header_len);
|
module_idP,frameP, rlc_status.bytes_in_buffer,buflen,dcch1_header_len);
|
||||||
|
|
||||||
sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti,frameP,ENB_FLAG_NO,MBMS_FLAG_NO,
|
sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti,eNB_index,frameP,ENB_FLAG_NO,MBMS_FLAG_NO,
|
||||||
DCCH1,
|
DCCH1,
|
||||||
(char *)&ulsch_buff[sdu_lengths[0]]);
|
(char *)&ulsch_buff[sdu_lengths[0]]);
|
||||||
sdu_length_total += sdu_lengths[num_sdus];
|
sdu_length_total += sdu_lengths[num_sdus];
|
||||||
@@ -1323,7 +1327,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
else
|
else
|
||||||
dtch_header_len = 2;//sizeof(SCH_SUBHEADER_SHORT);
|
dtch_header_len = 2;//sizeof(SCH_SUBHEADER_SHORT);
|
||||||
*/
|
*/
|
||||||
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,frameP,ENB_FLAG_NO,MBMS_FLAG_NO, // eNB_index
|
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti, eNB_index,frameP,ENB_FLAG_NO,MBMS_FLAG_NO, // eNB_index
|
||||||
DTCH,
|
DTCH,
|
||||||
buflen-bsr_len-phr_len-dcch_header_len-dcch1_header_len-dtch_header_len-sdu_length_total);
|
buflen-bsr_len-phr_len-dcch_header_len-dcch1_header_len-dtch_header_len-sdu_length_total);
|
||||||
|
|
||||||
@@ -1331,7 +1335,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
module_idP,frameP, rlc_status.bytes_in_buffer,buflen,dtch_header_len,
|
module_idP,frameP, rlc_status.bytes_in_buffer,buflen,dtch_header_len,
|
||||||
UE_mac_inst[module_idP].scheduling_info.BSR_bytes[DTCH]);
|
UE_mac_inst[module_idP].scheduling_info.BSR_bytes[DTCH]);
|
||||||
|
|
||||||
sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP,UE_mac_inst[module_idP].crnti,frameP, ENB_FLAG_NO, MBMS_FLAG_NO, // eNB_index
|
sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP,UE_mac_inst[module_idP].crnti,eNB_index,frameP, ENB_FLAG_NO, MBMS_FLAG_NO, // eNB_index
|
||||||
DTCH,
|
DTCH,
|
||||||
(char *)&ulsch_buff[sdu_length_total]);
|
(char *)&ulsch_buff[sdu_length_total]);
|
||||||
|
|
||||||
@@ -1341,7 +1345,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
|
|||||||
sdu_lcids[num_sdus] = DTCH;
|
sdu_lcids[num_sdus] = DTCH;
|
||||||
sdu_length_total += sdu_lengths[num_sdus];
|
sdu_length_total += sdu_lengths[num_sdus];
|
||||||
num_sdus++;
|
num_sdus++;
|
||||||
UE_mac_inst[module_idP].ul_active = update_bsr(module_idP, frameP, DTCH, UE_mac_inst[module_idP].scheduling_info.LCGID[DTCH]);
|
UE_mac_inst[module_idP].ul_active = update_bsr(module_idP, frameP, eNB_index,DTCH, UE_mac_inst[module_idP].scheduling_info.LCGID[DTCH]);
|
||||||
} else { // no rlc pdu : generate the dummy header
|
} else { // no rlc pdu : generate the dummy header
|
||||||
dtch_header_len = 0;
|
dtch_header_len = 0;
|
||||||
}
|
}
|
||||||
@@ -1496,7 +1500,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);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_NO, UE_mac_inst[module_idP].crnti, frameP, subframeP,eNB_indexP);
|
||||||
#if defined(ENABLE_ITTI)
|
#if defined(ENABLE_ITTI)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@@ -1633,7 +1637,7 @@ ue_scheduler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (update_bsr(module_idP,frameP, lcid, UE_mac_inst[module_idP].scheduling_info.LCGID[lcid])) {
|
if (update_bsr(module_idP,frameP, 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, frameP,subframeP,UE_mac_inst[module_idP].scheduling_info.LCGID[lcid],
|
||||||
@@ -1911,7 +1915,7 @@ uint8_t get_bsr_len (module_id_t module_idP, uint16_t buflen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boolean_t update_bsr(module_id_t module_idP, frame_t frameP, uint8_t lcid, uint8_t lcg_id)
|
boolean_t update_bsr(module_id_t module_idP, frame_t frameP, eNB_index_t eNB_index, uint8_t lcid, uint8_t lcg_id)
|
||||||
{
|
{
|
||||||
|
|
||||||
mac_rlc_status_resp_t rlc_status;
|
mac_rlc_status_resp_t rlc_status;
|
||||||
@@ -1930,7 +1934,7 @@ boolean_t update_bsr(module_id_t module_idP, frame_t frameP, uint8_t lcid, uint
|
|||||||
|
|
||||||
// for (lcid =0 ; lcid < MAX_NUM_LCID; lcid++) {
|
// for (lcid =0 ; lcid < MAX_NUM_LCID; lcid++) {
|
||||||
if (UE_mac_inst[module_idP].scheduling_info.LCGID[lcid] == lcg_id) {
|
if (UE_mac_inst[module_idP].scheduling_info.LCGID[lcid] == lcg_id) {
|
||||||
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,frameP,ENB_FLAG_NO,MBMS_FLAG_NO,
|
rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,eNB_index,frameP,ENB_FLAG_NO,MBMS_FLAG_NO,
|
||||||
lcid,
|
lcid,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
|||||||
@@ -898,12 +898,14 @@ pdcp_run (
|
|||||||
|
|
||||||
switch (ITTI_MSG_ID(msg_p)) {
|
switch (ITTI_MSG_ID(msg_p)) {
|
||||||
case RRC_DCCH_DATA_REQ:
|
case RRC_DCCH_DATA_REQ:
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(
|
||||||
&ctxt,
|
&ctxt,
|
||||||
RRC_DCCH_DATA_REQ (msg_p).module_id,
|
RRC_DCCH_DATA_REQ (msg_p).module_id,
|
||||||
RRC_DCCH_DATA_REQ (msg_p).enb_flag,
|
RRC_DCCH_DATA_REQ (msg_p).enb_flag,
|
||||||
RRC_DCCH_DATA_REQ (msg_p).rnti,
|
RRC_DCCH_DATA_REQ (msg_p).rnti,
|
||||||
RRC_DCCH_DATA_REQ (msg_p).frame, 0);
|
RRC_DCCH_DATA_REQ (msg_p).frame,
|
||||||
|
0,
|
||||||
|
RRC_DCCH_DATA_REQ (msg_p).eNB_index);
|
||||||
LOG_D(PDCP, PROTOCOL_CTXT_FMT"Received %s from %s: instance %d, rb_id %d, muiP %d, confirmP %d, mode %d\n",
|
LOG_D(PDCP, PROTOCOL_CTXT_FMT"Received %s from %s: instance %d, rb_id %d, muiP %d, confirmP %d, mode %d\n",
|
||||||
PROTOCOL_CTXT_ARGS(&ctxt),
|
PROTOCOL_CTXT_ARGS(&ctxt),
|
||||||
msg_name,
|
msg_name,
|
||||||
|
|||||||
@@ -702,8 +702,8 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void pdcp_fifo_read_input_sdus_from_otg (const protocol_ctxt_t* const ctxt_pP)
|
void pdcp_fifo_read_input_sdus_from_otg (const protocol_ctxt_t* const ctxt_pP) {
|
||||||
{
|
|
||||||
unsigned char *otg_pkt=NULL;
|
unsigned char *otg_pkt=NULL;
|
||||||
module_id_t dst_id; // dst for otg
|
module_id_t dst_id; // dst for otg
|
||||||
rb_id_t rb_id;
|
rb_id_t rb_id;
|
||||||
@@ -751,7 +751,8 @@ void pdcp_fifo_read_input_sdus_from_otg (const protocol_ctxt_t* const ctxt_pP)
|
|||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
oai_emulation.info.eNB_ue_module_id_to_rnti[ctxt.module_id][dst_id],
|
oai_emulation.info.eNB_ue_module_id_to_rnti[ctxt.module_id][dst_id],
|
||||||
ctxt_pP->frame,
|
ctxt_pP->frame,
|
||||||
ctxt_pP->subframe);
|
ctxt_pP->subframe,
|
||||||
|
src_id);
|
||||||
|
|
||||||
LOG_D(OTG,"[eNB %d] Frame %d sending packet %d from module %d on rab id %d (src %d, dst %d) pkt size %d for pdcp mode %d\n",
|
LOG_D(OTG,"[eNB %d] Frame %d sending packet %d from module %d on rab id %d (src %d, dst %d) pkt size %d for pdcp mode %d\n",
|
||||||
ctxt.module_id,
|
ctxt.module_id,
|
||||||
@@ -793,7 +794,8 @@ void pdcp_fifo_read_input_sdus_from_otg (const protocol_ctxt_t* const ctxt_pP)
|
|||||||
ENB_FLAG_NO,
|
ENB_FLAG_NO,
|
||||||
pdcp_UE_UE_module_id_to_rnti[src_id],
|
pdcp_UE_UE_module_id_to_rnti[src_id],
|
||||||
ctxt_pP->frame,
|
ctxt_pP->frame,
|
||||||
ctxt_pP->subframe);
|
ctxt_pP->subframe,
|
||||||
|
dst_id);
|
||||||
|
|
||||||
result = pdcp_data_req( &ctxt,
|
result = pdcp_data_req( &ctxt,
|
||||||
SRB_FLAG_NO,
|
SRB_FLAG_NO,
|
||||||
@@ -831,7 +833,8 @@ void pdcp_fifo_read_input_sdus_from_otg (const protocol_ctxt_t* const ctxt_pP)
|
|||||||
ctxt_pP->enb_flag,
|
ctxt_pP->enb_flag,
|
||||||
NOT_A_RNTI,
|
NOT_A_RNTI,
|
||||||
ctxt_pP->frame,
|
ctxt_pP->frame,
|
||||||
ctxt_pP->subframe);
|
ctxt_pP->subframe,
|
||||||
|
ctxt_pP->module_id);
|
||||||
|
|
||||||
for (dst_id = 0; dst_id<NUMBER_OF_UE_MAX; dst_id++) {
|
for (dst_id = 0; dst_id<NUMBER_OF_UE_MAX; dst_id++) {
|
||||||
ctxt.rnti = oai_emulation.info.eNB_ue_module_id_to_rnti[ctxt.module_id][dst_id];
|
ctxt.rnti = oai_emulation.info.eNB_ue_module_id_to_rnti[ctxt.module_id][dst_id];
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ public_rlc_rrc(void rrc_rlc_register_rrc (rrc_data_ind_cb_t rrc_data_indP, rrc_d
|
|||||||
* \param [in,out] bufferP Memory area to fill with the bytes requested by MAC.
|
* \param [in,out] bufferP Memory area to fill with the bytes requested by MAC.
|
||||||
* \return A status about the processing, OK or error code.
|
* \return A status about the processing, OK or error code.
|
||||||
*/
|
*/
|
||||||
public_rlc_mac(tbs_size_t mac_rlc_data_req (const module_id_t, const rnti_t, const frame_t, const eNB_flag_t, const MBMS_flag_t, logical_chan_id_t, char*);)
|
public_rlc_mac(tbs_size_t mac_rlc_data_req (const module_id_t, const rnti_t, const eNB_index_t, const frame_t, const eNB_flag_t, const MBMS_flag_t, logical_chan_id_t, char*);)
|
||||||
|
|
||||||
/*! \fn void mac_rlc_data_ind (const module_id_t mod_idP, const rnti_t rntiP, const frame_t frameP, const eNB_flag_t eNB_flagP, const MBMS_flag_t MBMS_flagP, logical_chan_id_t rb_idP, uint32_t frameP, char* bufferP, tb_size_t tb_sizeP, num_tb_t num_tbP, crc_t *crcs)
|
/*! \fn void mac_rlc_data_ind (const module_id_t mod_idP, const rnti_t rntiP, const frame_t frameP, const eNB_flag_t eNB_flagP, const MBMS_flag_t MBMS_flagP, logical_chan_id_t rb_idP, uint32_t frameP, char* bufferP, tb_size_t tb_sizeP, num_tb_t num_tbP, crc_t *crcs)
|
||||||
* \brief Interface with MAC layer, deserialize the transport blocks sent by MAC, then map data indication to the RLC instance corresponding to the radio bearer identifier.
|
* \brief Interface with MAC layer, deserialize the transport blocks sent by MAC, then map data indication to the RLC instance corresponding to the radio bearer identifier.
|
||||||
@@ -448,7 +448,7 @@ public_rlc_mac(tbs_size_t mac_rlc_data_req (const module_id_t, co
|
|||||||
* \param[in] num_tbP Number of transport blocks.
|
* \param[in] num_tbP Number of transport blocks.
|
||||||
* \param[in] crcs Array of CRC decoding.
|
* \param[in] crcs Array of CRC decoding.
|
||||||
*/
|
*/
|
||||||
public_rlc_mac(void mac_rlc_data_ind (const module_id_t, const rnti_t, const frame_t, const eNB_flag_t, const MBMS_flag_t, logical_chan_id_t, char*, tb_size_t, num_tb_t,
|
public_rlc_mac(void mac_rlc_data_ind (const module_id_t, const rnti_t, const eNB_index_t,const frame_t, const eNB_flag_t, const MBMS_flag_t, logical_chan_id_t, char*, tb_size_t, num_tb_t,
|
||||||
crc_t* );)
|
crc_t* );)
|
||||||
|
|
||||||
/*! \fn mac_rlc_status_resp_t mac_rlc_status_ind (const module_id_t mod_idP, const rnti_t rntiP, const frame_t frameP, const eNB_flag_t eNB_flagP, const MBMS_flag_t MBMS_flagP, logical_chan_id_t rb_idP, tb_size_t tb_sizeP)
|
/*! \fn mac_rlc_status_resp_t mac_rlc_status_ind (const module_id_t mod_idP, const rnti_t rntiP, const frame_t frameP, const eNB_flag_t eNB_flagP, const MBMS_flag_t MBMS_flagP, logical_chan_id_t rb_idP, tb_size_t tb_sizeP)
|
||||||
@@ -462,7 +462,7 @@ public_rlc_mac(void mac_rlc_data_ind (const module_id_t, co
|
|||||||
* \param[in] tb_sizeP Size of a transport block set in bytes.
|
* \param[in] tb_sizeP Size of a transport block set in bytes.
|
||||||
* \return The maximum number of bytes that the RLC instance can send in the next transmission sequence.
|
* \return The maximum number of bytes that the RLC instance can send in the next transmission sequence.
|
||||||
*/
|
*/
|
||||||
public_rlc_mac(mac_rlc_status_resp_t mac_rlc_status_ind (const module_id_t, const rnti_t, const frame_t, const eNB_flag_t, const MBMS_flag_t, logical_chan_id_t, tb_size_t );)
|
public_rlc_mac(mac_rlc_status_resp_t mac_rlc_status_ind (const module_id_t, const rnti_t, const eNB_index_t, const frame_t, const eNB_flag_t, const MBMS_flag_t, logical_chan_id_t, tb_size_t );)
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// RLC methods
|
// RLC methods
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ tbs_size_t mac_rlc_serialize_tb (char* buffer_pP, list_t transport_blocksP)
|
|||||||
tbs_size_t mac_rlc_data_req(
|
tbs_size_t mac_rlc_data_req(
|
||||||
const module_id_t module_idP,
|
const module_id_t module_idP,
|
||||||
const rnti_t rntiP,
|
const rnti_t rntiP,
|
||||||
|
const eNB_index_t eNB_index,
|
||||||
const frame_t frameP,
|
const frame_t frameP,
|
||||||
const eNB_flag_t enb_flagP,
|
const eNB_flag_t enb_flagP,
|
||||||
const MBMS_flag_t MBMS_flagP,
|
const MBMS_flag_t MBMS_flagP,
|
||||||
@@ -149,7 +150,7 @@ tbs_size_t mac_rlc_data_req(
|
|||||||
tbs_size_t ret_tb_size = 0;
|
tbs_size_t ret_tb_size = 0;
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, enb_flagP, rntiP, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, enb_flagP, rntiP, frameP, 0,eNB_index);
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_DATA_REQ,VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_DATA_REQ,VCD_FUNCTION_IN);
|
||||||
#ifdef DEBUG_MAC_INTERFACE
|
#ifdef DEBUG_MAC_INTERFACE
|
||||||
@@ -231,6 +232,7 @@ tbs_size_t mac_rlc_data_req(
|
|||||||
void mac_rlc_data_ind (
|
void mac_rlc_data_ind (
|
||||||
const module_id_t module_idP,
|
const module_id_t module_idP,
|
||||||
const rnti_t rntiP,
|
const rnti_t rntiP,
|
||||||
|
const module_id_t eNB_index,
|
||||||
const frame_t frameP,
|
const frame_t frameP,
|
||||||
const eNB_flag_t enb_flagP,
|
const eNB_flag_t enb_flagP,
|
||||||
const MBMS_flag_t MBMS_flagP,
|
const MBMS_flag_t MBMS_flagP,
|
||||||
@@ -250,7 +252,7 @@ void mac_rlc_data_ind (
|
|||||||
srb_flag_t srb_flag = (channel_idP <= 2) ? SRB_FLAG_YES : SRB_FLAG_NO;
|
srb_flag_t srb_flag = (channel_idP <= 2) ? SRB_FLAG_YES : SRB_FLAG_NO;
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, enb_flagP, rntiP, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, enb_flagP, rntiP, frameP, 0, eNB_index);
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_DATA_IND,VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_DATA_IND,VCD_FUNCTION_IN);
|
||||||
#ifdef DEBUG_MAC_INTERFACE
|
#ifdef DEBUG_MAC_INTERFACE
|
||||||
@@ -332,6 +334,7 @@ void mac_rlc_data_ind (
|
|||||||
mac_rlc_status_resp_t mac_rlc_status_ind(
|
mac_rlc_status_resp_t mac_rlc_status_ind(
|
||||||
const module_id_t module_idP,
|
const module_id_t module_idP,
|
||||||
const rnti_t rntiP,
|
const rnti_t rntiP,
|
||||||
|
const eNB_index_t eNB_index,
|
||||||
const frame_t frameP,
|
const frame_t frameP,
|
||||||
const eNB_flag_t enb_flagP,
|
const eNB_flag_t enb_flagP,
|
||||||
const MBMS_flag_t MBMS_flagP,
|
const MBMS_flag_t MBMS_flagP,
|
||||||
@@ -351,7 +354,7 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
|
|||||||
srb_flag_t srb_flag = (channel_idP <= 2) ? SRB_FLAG_YES : SRB_FLAG_NO;
|
srb_flag_t srb_flag = (channel_idP <= 2) ? SRB_FLAG_YES : SRB_FLAG_NO;
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, enb_flagP, rntiP, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, enb_flagP, rntiP, frameP, 0, eNB_index);
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_STATUS_IND,VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_STATUS_IND,VCD_FUNCTION_IN);
|
||||||
memset (&mac_rlc_status_resp, 0, sizeof(mac_rlc_status_resp_t));
|
memset (&mac_rlc_status_resp, 0, sizeof(mac_rlc_status_resp_t));
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ mac_rrc_lite_data_ind(
|
|||||||
/*
|
/*
|
||||||
int si_window;
|
int si_window;
|
||||||
*/
|
*/
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, eNB_flagP, rntiP, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, eNB_flagP, rntiP, frameP, 0,eNB_indexP);
|
||||||
|
|
||||||
if(eNB_flagP == ENB_FLAG_NO) {
|
if(eNB_flagP == ENB_FLAG_NO) {
|
||||||
if(srb_idP == BCCH) {
|
if(srb_idP == BCCH) {
|
||||||
@@ -540,6 +540,7 @@ rrc_lite_data_req(
|
|||||||
RRC_DCCH_DATA_REQ (message_p).mode = modeP;
|
RRC_DCCH_DATA_REQ (message_p).mode = modeP;
|
||||||
RRC_DCCH_DATA_REQ (message_p).module_id = ctxt_pP->module_id;
|
RRC_DCCH_DATA_REQ (message_p).module_id = ctxt_pP->module_id;
|
||||||
RRC_DCCH_DATA_REQ (message_p).rnti = ctxt_pP->rnti;
|
RRC_DCCH_DATA_REQ (message_p).rnti = ctxt_pP->rnti;
|
||||||
|
RRC_DCCH_DATA_REQ (message_p).eNB_index = ctxt_pP->eNB_index;
|
||||||
|
|
||||||
itti_send_msg_to_task (
|
itti_send_msg_to_task (
|
||||||
ctxt_pP->enb_flag ? TASK_PDCP_ENB : TASK_PDCP_UE,
|
ctxt_pP->enb_flag ? TASK_PDCP_ENB : TASK_PDCP_UE,
|
||||||
@@ -602,6 +603,8 @@ rrc_lite_data_ind(
|
|||||||
RRC_DCCH_DATA_IND (message_p).sdu_p = message_buffer;
|
RRC_DCCH_DATA_IND (message_p).sdu_p = message_buffer;
|
||||||
RRC_DCCH_DATA_IND (message_p).rnti = ctxt_pP->rnti;
|
RRC_DCCH_DATA_IND (message_p).rnti = ctxt_pP->rnti;
|
||||||
RRC_DCCH_DATA_IND (message_p).module_id = ctxt_pP->module_id;
|
RRC_DCCH_DATA_IND (message_p).module_id = ctxt_pP->module_id;
|
||||||
|
RRC_DCCH_DATA_IND (message_p).eNB_index = ctxt_pP->eNB_index;
|
||||||
|
|
||||||
itti_send_msg_to_task (ctxt_pP->enb_flag ? TASK_RRC_ENB : TASK_RRC_UE, ctxt_pP->instance, message_p);
|
itti_send_msg_to_task (ctxt_pP->enb_flag ? TASK_RRC_ENB : TASK_RRC_UE, ctxt_pP->instance, message_p);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ openair_rrc_lite_ue_init(
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, NOT_A_RNTI, 0, 0,eNB_index);
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
PROTOCOL_RRC_CTXT_FMT" Init...\n",
|
PROTOCOL_RRC_CTXT_FMT" Init...\n",
|
||||||
PROTOCOL_RRC_CTXT_ARGS(&ctxt));
|
PROTOCOL_RRC_CTXT_ARGS(&ctxt));
|
||||||
@@ -3332,7 +3332,7 @@ decode_MBSFNAreaConfiguration(
|
|||||||
|
|
||||||
UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[mbsfn_sync_area] = 1;
|
UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[mbsfn_sync_area] = 1;
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, UE_rrc_inst[ue_mod_idP].Info[eNB_index].rnti, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, UE_rrc_inst[ue_mod_idP].Info[eNB_index].rnti, frameP, 0,eNB_index);
|
||||||
|
|
||||||
// Config Radio Bearer for MBMS user data (similar way to configure for eNB side in init_MBMS function)
|
// Config Radio Bearer for MBMS user data (similar way to configure for eNB side in init_MBMS function)
|
||||||
rrc_pdcp_config_asn1_req(&ctxt,
|
rrc_pdcp_config_asn1_req(&ctxt,
|
||||||
@@ -3425,7 +3425,8 @@ void
|
|||||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
|
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
|
||||||
RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
|
RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
|
// PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
|
||||||
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
|
||||||
decode_BCCH_DLSCH_Message (&ctxt,
|
decode_BCCH_DLSCH_Message (&ctxt,
|
||||||
RRC_MAC_BCCH_DATA_IND (msg_p).enb_index,
|
RRC_MAC_BCCH_DATA_IND (msg_p).enb_index,
|
||||||
RRC_MAC_BCCH_DATA_IND (msg_p).sdu,
|
RRC_MAC_BCCH_DATA_IND (msg_p).sdu,
|
||||||
@@ -3455,7 +3456,8 @@ void
|
|||||||
memcpy (srb_info_p->Rx_buffer.Payload, RRC_MAC_CCCH_DATA_IND (msg_p).sdu,
|
memcpy (srb_info_p->Rx_buffer.Payload, RRC_MAC_CCCH_DATA_IND (msg_p).sdu,
|
||||||
RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size);
|
RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size);
|
||||||
srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size;
|
srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size;
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
|
// PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0);
|
||||||
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0, RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
|
||||||
rrc_ue_decode_ccch (&ctxt,
|
rrc_ue_decode_ccch (&ctxt,
|
||||||
srb_info_p,
|
srb_info_p,
|
||||||
RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
|
RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
|
||||||
@@ -3467,7 +3469,8 @@ void
|
|||||||
LOG_I(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, msg_name,
|
LOG_I(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, msg_name,
|
||||||
RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
|
RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
|
//PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
|
||||||
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_MCCH_DATA_IND (msg_p).enb_index);
|
||||||
decode_MCCH_Message (
|
decode_MCCH_Message (
|
||||||
&ctxt,
|
&ctxt,
|
||||||
RRC_MAC_MCCH_DATA_IND (msg_p).enb_index,
|
RRC_MAC_MCCH_DATA_IND (msg_p).enb_index,
|
||||||
@@ -3479,7 +3482,7 @@ void
|
|||||||
|
|
||||||
/* PDCP messages */
|
/* PDCP messages */
|
||||||
case RRC_DCCH_DATA_IND:
|
case RRC_DCCH_DATA_IND:
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0,RRC_DCCH_DATA_IND (msg_p).eNB_index);
|
||||||
LOG_I(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
|
LOG_I(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
|
||||||
RRC_DCCH_DATA_IND (msg_p).module_id,
|
RRC_DCCH_DATA_IND (msg_p).module_id,
|
||||||
msg_name,
|
msg_name,
|
||||||
@@ -3575,7 +3578,9 @@ void
|
|||||||
LOG_I(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi %d, plmnID %d\n", ue_mod_id, msg_name, NAS_CONN_ESTABLI_REQ (msg_p).cause,
|
LOG_I(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi %d, plmnID %d\n", ue_mod_id, msg_name, NAS_CONN_ESTABLI_REQ (msg_p).cause,
|
||||||
NAS_CONN_ESTABLI_REQ (msg_p).type, NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi, NAS_CONN_ESTABLI_REQ (msg_p).plmnID);
|
NAS_CONN_ESTABLI_REQ (msg_p).type, NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi, NAS_CONN_ESTABLI_REQ (msg_p).plmnID);
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
|
//PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
|
||||||
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, 0);
|
||||||
|
|
||||||
UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
|
UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
|
||||||
|
|
||||||
switch (rrc_get_state(ue_mod_id)) {
|
switch (rrc_get_state(ue_mod_id)) {
|
||||||
@@ -3613,7 +3618,7 @@ void
|
|||||||
length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
|
length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
|
||||||
|
|
||||||
/* Transfer data to PDCP */
|
/* Transfer data to PDCP */
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0);
|
||||||
pdcp_rrc_data_req (&ctxt,
|
pdcp_rrc_data_req (&ctxt,
|
||||||
DCCH,
|
DCCH,
|
||||||
rrc_mui++,
|
rrc_mui++,
|
||||||
@@ -3754,7 +3759,7 @@ void
|
|||||||
switch (rrc_get_state(ue_mod_id)) {
|
switch (rrc_get_state(ue_mod_id)) {
|
||||||
case RRC_STATE_IDLE: {
|
case RRC_STATE_IDLE: {
|
||||||
if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
|
if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, 0);
|
||||||
rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
|
rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
|
||||||
LOG_I(RRC, "not sending connection request\n");
|
LOG_I(RRC, "not sending connection request\n");
|
||||||
rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
|
rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ static void init_MBMS(
|
|||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
|
|
||||||
if (eNB_rrc_inst[enb_mod_idP].MBMS_flag > 0) {
|
if (eNB_rrc_inst[enb_mod_idP].MBMS_flag > 0) {
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, NOT_A_RNTI, frameP, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, NOT_A_RNTI, frameP, 0,enb_mod_idP);
|
||||||
|
|
||||||
LOG_D(RRC, "[eNB %d] Frame %d : Radio Bearer config request for MBMS\n", enb_mod_idP, frameP); //check the lcid
|
LOG_D(RRC, "[eNB %d] Frame %d : Radio Bearer config request for MBMS\n", enb_mod_idP, frameP); //check the lcid
|
||||||
// Configuring PDCP and RLC for MBMS Radio Bearer
|
// Configuring PDCP and RLC for MBMS Radio Bearer
|
||||||
@@ -754,7 +754,7 @@ rrc_eNB_free_UE(
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (NULL != ue_context_p) {
|
if (NULL != ue_context_p) {
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, rntiP, frameP, subframeP);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, rntiP, frameP, subframeP,enb_mod_idP);
|
||||||
LOG_W(RRC, "[eNB %d] Removing UE RNTI %x\n", enb_mod_idP, rntiP);
|
LOG_W(RRC, "[eNB %d] Removing UE RNTI %x\n", enb_mod_idP, rntiP);
|
||||||
|
|
||||||
#if defined(ENABLE_USE_MME)
|
#if defined(ENABLE_USE_MME)
|
||||||
@@ -3249,7 +3249,7 @@ openair_rrc_lite_eNB_init(
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, NOT_A_RNTI, 0, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, NOT_A_RNTI, 0, 0,enb_mod_idP);
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
PROTOCOL_RRC_CTXT_FMT" Init...\n",
|
PROTOCOL_RRC_CTXT_FMT" Init...\n",
|
||||||
PROTOCOL_RRC_CTXT_ARGS(&ctxt));
|
PROTOCOL_RRC_CTXT_ARGS(&ctxt));
|
||||||
|
|||||||
@@ -811,24 +811,20 @@ l2l1_task (void *args_p)
|
|||||||
!= NOT_SYNCHED) {
|
!= NOT_SYNCHED) {
|
||||||
if (frame > 0) {
|
if (frame > 0) {
|
||||||
PHY_vars_UE_g[UE_inst][0]->frame_rx = frame;
|
PHY_vars_UE_g[UE_inst][0]->frame_rx = frame;
|
||||||
PHY_vars_UE_g[UE_inst][0]->slot_rx =
|
PHY_vars_UE_g[UE_inst][0]->slot_rx = last_slot;
|
||||||
last_slot;
|
PHY_vars_UE_g[UE_inst][0]->slot_tx = next_slot;
|
||||||
PHY_vars_UE_g[UE_inst][0]->slot_tx =
|
|
||||||
next_slot;
|
|
||||||
|
|
||||||
if (next_slot > 1)
|
if (next_slot > 1)
|
||||||
PHY_vars_UE_g[UE_inst][0]->frame_tx =
|
PHY_vars_UE_g[UE_inst][0]->frame_tx = frame;
|
||||||
frame;
|
|
||||||
else
|
else
|
||||||
PHY_vars_UE_g[UE_inst][0]->frame_tx =
|
PHY_vars_UE_g[UE_inst][0]->frame_tx = frame + 1;
|
||||||
frame + 1;
|
|
||||||
|
|
||||||
#ifdef OPENAIR2
|
#ifdef OPENAIR2
|
||||||
//Application
|
//Application
|
||||||
update_otg_UE (UE_inst, oai_emulation.info.time_ms);
|
update_otg_UE (UE_inst, oai_emulation.info.time_ms);
|
||||||
|
|
||||||
//Access layer
|
//Access layer
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, UE_inst, ENB_FLAG_NO, NOT_A_RNTI, frame, next_slot);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, UE_inst, 0, ENB_FLAG_NO, NOT_A_RNTI, frame, next_slot);
|
||||||
pdcp_run (&ctxt);
|
pdcp_run (&ctxt);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user