Commit 6ff08f63 authored by matzakos's avatar matzakos

Fixed issue with concurrent data traffic through oip0 (D2D) and oip1 (PDN)

parent 7df1df61
...@@ -947,6 +947,7 @@ void ue_send_sl_sdu(module_id_t module_idP, ...@@ -947,6 +947,7 @@ void ue_send_sl_sdu(module_id_t module_idP,
LOG_I(MAC, "SL_RESET_RLC_FLAG_NO\n"); LOG_I(MAC, "SL_RESET_RLC_FLAG_NO\n");
} }
if(UE_rrc_inst[0].Info[0].rnti == 0){
mac_rlc_data_ind( mac_rlc_data_ind(
module_idP, module_idP,
0x1234, 0x1234,
...@@ -963,6 +964,25 @@ void ue_send_sl_sdu(module_id_t module_idP, ...@@ -963,6 +964,25 @@ void ue_send_sl_sdu(module_id_t module_idP,
,reset_flag ,reset_flag
#endif #endif
); );
}
else{
mac_rlc_data_ind(
module_idP,
UE_rrc_inst[0].Info[0].rnti,
eNB_index,
frameP,
ENB_FLAG_NO,
MBMS_FLAG_NO,
lcid, //3/10
rlc_sdu,
rlc_sdu_len,
1,
NULL
#ifdef Rel14
,reset_flag
#endif
);
}
} else { //SL_DISCOVERY } else { //SL_DISCOVERY
uint16_t len = sdu_len; uint16_t len = sdu_len;
LOG_D( MAC, "SL DISCOVERY \n"); LOG_D( MAC, "SL DISCOVERY \n");
...@@ -3333,49 +3353,18 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_ ...@@ -3333,49 +3353,18 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
LOG_D(MAC,"Checking SLSCH for absSF %d\n",absSF); LOG_D(MAC,"Checking SLSCH for absSF %d\n",absSF);
if ((absSF%40) == 0) { // fill PSCCH data later in first subframe of SL period if ((absSF%40) == 0) { // fill PSCCH data later in first subframe of SL period
ue->sltx_active = 0; ue->sltx_active = 0;
/*
for (i = 0; i < MAX_NUM_LCID; i++){
if (ue->SL_LCID[i] > 0) {
for (int j = 0; j < ue->numCommFlows; j++){
if ((ue->sourceL2Id > 0) && (ue->destinationList[j] >0) ){
rlc_status = mac_rlc_status_ind(module_idP, 0x1234,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
ue->SL_LCID[i], 0xFFFF, ue->sourceL2Id, ue->destinationList[j]);
if (rlc_status.bytes_in_buffer > 2){
LOG_I(MAC,"SFN.SF %d.%d: Scheduling for %d bytes in Sidelink buffer\n",frameP,subframeP,rlc_status.bytes_in_buffer);
// Fill in group id for off-network communications
ue->sltx_active = 1;
//store LCID, destinationL2Id
ue->slsch_lcid = ue->SL_LCID[i];
ue->destinationL2Id = ue->destinationList[j];
break;
}
}
if ((ue->sourceL2Id > 0) && (ue->groupList[j] >0) ){
rlc_status = mac_rlc_status_ind(module_idP, 0x1234,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
ue->SL_LCID[i], 0xFFFF, ue->sourceL2Id, ue->groupList[j]);
if (rlc_status.bytes_in_buffer > 2){
LOG_I(MAC,"SFN.SF %d.%d: Scheduling for %d bytes in Sidelink buffer\n",frameP,subframeP,rlc_status.bytes_in_buffer);
// Fill in group id for off-network communications
ue->sltx_active = 1;
//store LCID, destinationL2Id
ue->slsch_lcid = ue->SL_LCID[i];
ue->destinationL2Id = ue->groupList[j];
break;
}
}
}
}
if ( ue->sltx_active == 1) break;
}
*/
for (i = 0; i < MAX_NUM_LCID; i++){ for (i = 0; i < MAX_NUM_LCID; i++){
if (ue->sl_info[i].LCID > 0) { if (ue->sl_info[i].LCID > 0) {
// for (int j = 0; j < ue->numCommFlows; j++){ // for (int j = 0; j < ue->numCommFlows; j++){
if ((ue->sourceL2Id > 0) && (ue->sl_info[i].destinationL2Id >0) ){ if ((ue->sourceL2Id > 0) && (ue->sl_info[i].destinationL2Id >0) ){
if(UE_rrc_inst[0].Info[0].rnti == 0){
rlc_status = mac_rlc_status_ind(module_idP, 0x1234,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO, rlc_status = mac_rlc_status_ind(module_idP, 0x1234,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
ue->sl_info[i].LCID, 0xFFFF, ue->sourceL2Id, ue->sl_info[i].destinationL2Id ); ue->sl_info[i].LCID, 0xFFFF, ue->sourceL2Id, ue->sl_info[i].destinationL2Id );
}
else{
rlc_status = mac_rlc_status_ind(module_idP, UE_rrc_inst[0].Info[0].rnti,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
ue->sl_info[i].LCID, 0xFFFF, ue->sourceL2Id, ue->sl_info[i].destinationL2Id );
}
if (rlc_status.bytes_in_buffer > 2){ if (rlc_status.bytes_in_buffer > 2){
LOG_I(MAC,"SFN.SF %d.%d: Scheduling for %d bytes in Sidelink buffer \n",frameP,subframeP,rlc_status.bytes_in_buffer); LOG_I(MAC,"SFN.SF %d.%d: Scheduling for %d bytes in Sidelink buffer \n",frameP,subframeP,rlc_status.bytes_in_buffer);
...@@ -3390,8 +3379,15 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_ ...@@ -3390,8 +3379,15 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
} }
if ((ue->sourceL2Id > 0) && (ue->sl_info[i].groupL2Id >0) ){ if ((ue->sourceL2Id > 0) && (ue->sl_info[i].groupL2Id >0) ){
if(UE_rrc_inst[0].Info[0].rnti == 0){
rlc_status = mac_rlc_status_ind(module_idP, 0x1234,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO, rlc_status = mac_rlc_status_ind(module_idP, 0x1234,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
ue->sl_info[i].LCID, 0xFFFF, ue->sourceL2Id, ue->sl_info[i].groupL2Id); ue->sl_info[i].LCID, 0xFFFF, ue->sourceL2Id, ue->sl_info[i].groupL2Id);
}
else{
rlc_status = mac_rlc_status_ind(module_idP, UE_rrc_inst[0].Info[0].rnti,0,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
ue->sl_info[i].LCID, 0xFFFF, ue->sourceL2Id, ue->sl_info[i].groupL2Id);
}
if (rlc_status.bytes_in_buffer > 2){ if (rlc_status.bytes_in_buffer > 2){
LOG_I(MAC,"SFN.SF %d.%d: Scheduling for %d bytes in Sidelink buffer\n",frameP,subframeP,rlc_status.bytes_in_buffer); LOG_I(MAC,"SFN.SF %d.%d: Scheduling for %d bytes in Sidelink buffer\n",frameP,subframeP,rlc_status.bytes_in_buffer);
// Fill in group id for off-network communications // Fill in group id for off-network communications
...@@ -3420,6 +3416,7 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_ ...@@ -3420,6 +3416,7 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
else req = rlc_status.bytes_in_buffer; else req = rlc_status.bytes_in_buffer;
if (req>0) { if (req>0) {
if(UE_rrc_inst[0].Info[0].rnti == 0){
sdu_length = mac_rlc_data_req(module_idP, sdu_length = mac_rlc_data_req(module_idP,
0x1234, 0x1234,
0, 0,
...@@ -3434,6 +3431,23 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_ ...@@ -3434,6 +3431,23 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
ue->destinationL2Id ue->destinationL2Id
#endif #endif
); );
}
else{
sdu_length = mac_rlc_data_req(module_idP,
UE_rrc_inst[0].Info[0].rnti,
0,
frameP,
ENB_FLAG_NO,
MBMS_FLAG_NO,
ue->slsch_lcid,
req,
(char*)(ue->slsch_pdu.payload + sizeof(SLSCH_SUBHEADER_24_Bit_DST_LONG))
#ifdef Rel14
,ue->sourceL2Id,
ue->destinationL2Id
#endif
);
}
// Notes: 1. hard-coded to 24-bit destination format for now // Notes: 1. hard-coded to 24-bit destination format for now
if (sdu_length > 0) { if (sdu_length > 0) {
......
...@@ -1334,6 +1334,7 @@ rrc_pdcp_config_asn1_req ( ...@@ -1334,6 +1334,7 @@ rrc_pdcp_config_asn1_req (
DevCheck4(drb_id < maxDRB, drb_id, maxDRB, ctxt_pP->module_id, ctxt_pP->rnti); DevCheck4(drb_id < maxDRB, drb_id, maxDRB, ctxt_pP->module_id, ctxt_pP->rnti);
key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, drb_id, SRB_FLAG_NO); key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, drb_id, SRB_FLAG_NO);
LOG_I(PDCP, "rnti value: %d, DRB_ID: %d \n", ctxt_pP->rnti, drb_id);
h_rc = hashtable_get(pdcp_coll_p, key, (void**)&pdcp_p); h_rc = hashtable_get(pdcp_coll_p, key, (void**)&pdcp_p);
if (h_rc == HASH_TABLE_OK) { if (h_rc == HASH_TABLE_OK) {
......
...@@ -5774,8 +5774,12 @@ void *rrc_control_socket_thread_fct(void *arg) ...@@ -5774,8 +5774,12 @@ void *rrc_control_socket_thread_fct(void *arg)
//Establish a new RBID/LCID for this communication //Establish a new RBID/LCID for this communication
// Establish a SLRB (using DRB 4 for now) // Establish a SLRB (using DRB 4 for now)
UE = &UE_rrc_inst[module_id]; UE = &UE_rrc_inst[module_id];
if(UE->Info[0].rnti == 0){
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0); PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
}
else{
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, UE_rrc_inst[0].Info[0].rnti, 0, 0,0);
}
UE->DRB_config[0][0] = CALLOC(1,sizeof(struct DRB_ToAddMod)); UE->DRB_config[0][0] = CALLOC(1,sizeof(struct DRB_ToAddMod));
UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long)); UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
UE->DRB_config[0][0]->drb_Identity = group_comm_rbid; UE->DRB_config[0][0]->drb_Identity = group_comm_rbid;
...@@ -5827,7 +5831,10 @@ void *rrc_control_socket_thread_fct(void *arg) ...@@ -5827,7 +5831,10 @@ void *rrc_control_socket_thread_fct(void *arg)
*logicalchannelgroup_drb = 1; *logicalchannelgroup_drb = 1;
DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb; DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
//if(UE->DRB_configList == NULL){
UE->DRB_configList = CALLOC(1,sizeof(DRB_ToAddModList_t)); UE->DRB_configList = CALLOC(1,sizeof(DRB_ToAddModList_t));
//}
ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]); ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
rrc_pdcp_config_asn1_req(&ctxt, rrc_pdcp_config_asn1_req(&ctxt,
......
...@@ -89,9 +89,11 @@ UE0: ...@@ -89,9 +89,11 @@ UE0:
MSIN="0000000001"; MSIN="0000000001";
#USIM_API_K="e56e26f5608b8d268f2556e198a0e01b"; #USIM_API_K="e56e26f5608b8d268f2556e198a0e01b";
#USIM_API_K="8baf473f2f8fd09487cccbd7097c6862"; #initial #USIM_API_K="8baf473f2f8fd09487cccbd7097c6862"; #initial
USIM_API_K= "11111111111111111111111111111111"; #USIM_API_K= "11111111111111111111111111111111"; #nano
USIM_API_K="fec86ba6eb707ed08905757b1bb44b8f";
#OPC="e734f8734007d6c5ce7a0508809e7e9c"; #initial #OPC="e734f8734007d6c5ce7a0508809e7e9c"; #initial
OPC="f47f37e4719a9c379e3447f089b1f10a"; #OPC="f47f37e4719a9c379e3447f089b1f10a"; #nano
OPC="C42449363BBAD02B66D16BC975D77CC1";
MSISDN="33611123456"; MSISDN="33611123456";
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment