### bugfix: fix bug "Unknown UE_id for rnti"

```This bug happens when we detect uplink failure for one UE.
In this case, a DCI format 1A is sent to the UE to ask it
to do random acces.

The way this DCI is generated was not compatible with how
the software is organized. It was expected that the DCI are
specific order: first all DCIs in common space are added
(with add_common_dci) then all DCIs in UE specific space

The problem was that the DCI format 1A DCI sent to the UE
before the DCIs in common space.

That totally messed up the logic in add_common_dci and

The solution is to get rid of Num_common_dci and Num_ue_spec_dci,
replace those two counters by only one (Num_dci) and add
"search_space" in the dci_alloc structure to be used later by
the function "allocate_CCEs" when calling "get_nCCE_offset".

I am not sure that the simulators work. It seems that some
of them didn't use Num_common_dci and Num_ue_spec_dci to
decide on what space (common or UE specific) to put the DCI,
but relied on the rnti (comparing with SI_RNTI). To be tested
properly.

The modified simulators are:
- openair1/SIMULATION/LTE_PHY/dlsim.c
- openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
- openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
- openair1/SIMULATION/LTE_PHY/framegen.c
- openair1/SIMULATION/LTE_PHY/pdcchsim.c
- openair1/SIMULATION/LTE_PHY/syncsim.c```
parent 08b8b314
 ... ... @@ -2039,8 +2039,7 @@ uint8_t get_num_pdcch_symbols(uint8_t num_dci, return(0); } uint8_t generate_dci_top(uint8_t num_ue_spec_dci, uint8_t num_common_dci, uint8_t generate_dci_top(int num_dci, DCI_ALLOC_t *dci_alloc, uint32_t n_rnti, int16_t amp, ... ... @@ -2050,7 +2049,6 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci, { uint8_t *e_ptr,num_pdcch_symbols; int8_t L; uint32_t i, lprime; uint32_t gain_lin_QPSK,kprime,kprime_mod12,mprime,nsymb,symbol_offset,tti_offset; int16_t re_offset; ... ... @@ -2096,9 +2094,9 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci, break; } num_pdcch_symbols = get_num_pdcch_symbols(num_ue_spec_dci+num_common_dci,dci_alloc,frame_parms,subframe); num_pdcch_symbols = get_num_pdcch_symbols(num_dci,dci_alloc,frame_parms,subframe); // printf("subframe %d in generate_dci_top num_pdcch_symbols = %d, num_dci %d\n", // subframe,num_pdcch_symbols,num_ue_spec_dci+num_common_dci); // subframe,num_pdcch_symbols,num_dci); generate_pcfich(num_pdcch_symbols, amp, frame_parms, ... ... @@ -2117,50 +2115,22 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci, e_ptr = e; // generate DCIs in order of decreasing aggregation level, then common/ue spec // MAC is assumed to have ordered the UE spec DCI according to the RNTI-based randomization for (L=3; L>=0; L--) { for (i=0; i=0) { e_ptr = generate_dci0(dci_alloc[i].dci_pdu, e+(72*dci_alloc[i].firstCCE), dci_alloc[i].dci_length, dci_alloc[i].L, dci_alloc[i].rnti); } } } for (; i= 0) { e_ptr = generate_dci0(dci_alloc[i].dci_pdu, e+(72*dci_alloc[i].firstCCE), dci_alloc[i].dci_length, dci_alloc[i].L, dci_alloc[i].rnti); } else { } } printf("Generating %s DCI %d/%d (nCCE %d) of length %d, aggregation %d (%x)\n", dci_alloc[i].search_space == DCI_COMMON_SPACE ? "common" : "UE", i,num_dci,dci_alloc[i].firstCCE,dci_alloc[i].dci_length,1<=0) { e_ptr = generate_dci0(dci_alloc[i].dci_pdu, e+(72*dci_alloc[i].firstCCE), dci_alloc[i].dci_length, dci_alloc[i].L, dci_alloc[i].rnti); } } ... ... @@ -2371,21 +2341,34 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci, #ifdef PHY_ABSTRACTION uint8_t generate_dci_top_emul(PHY_VARS_eNB *phy_vars_eNB, uint8_t num_ue_spec_dci, uint8_t num_common_dci, int num_dci, DCI_ALLOC_t *dci_alloc, uint8_t subframe) { int n_dci, n_dci_dl; uint8_t ue_id; LTE_eNB_DLSCH_t *dlsch_eNB; uint8_t num_pdcch_symbols = get_num_pdcch_symbols(num_ue_spec_dci+num_common_dci, int num_ue_spec_dci; int num_common_dci; int i; uint8_t num_pdcch_symbols = get_num_pdcch_symbols(num_dci, dci_alloc, &phy_vars_eNB->frame_parms, subframe); eNB_transport_info[phy_vars_eNB->Mod_id][phy_vars_eNB->CC_id].cntl.cfi=num_pdcch_symbols; memcpy(phy_vars_eNB->dci_alloc[subframe&1],dci_alloc,sizeof(DCI_ALLOC_t)*(num_ue_spec_dci+num_common_dci)); num_ue_spec_dci = 0; num_common_dci = 0; for (i = 0; i < num_dci; i++) { /* TODO: maybe useless test, to remove? */ if (!(dci_alloc[i].firstCCE>=0)) abort(); if (dci_alloc[i].search_space == DCI_COMMON_SPACE) num_common_dci++; else num_ue_spec_dci++; } memcpy(phy_vars_eNB->dci_alloc[subframe&1],dci_alloc,sizeof(DCI_ALLOC_t)*(num_dci)); phy_vars_eNB->num_ue_spec_dci[subframe&1]=num_ue_spec_dci; phy_vars_eNB->num_common_dci[subframe&1]=num_common_dci; eNB_transport_info[phy_vars_eNB->Mod_id][phy_vars_eNB->CC_id].num_ue_spec_dci = num_ue_spec_dci; ... ...
 ... ... @@ -781,6 +781,10 @@ typedef enum { pucch_format3 // PUCCH format3 } PUCCH_FMT_t; typedef enum { DCI_COMMON_SPACE, DCI_UE_SPACE } dci_space_t; typedef struct { /// Length of DCI in bits ... ... @@ -795,6 +799,8 @@ typedef struct { rnti_t rnti; /// Format DCI_format_t format; /// search space dci_space_t search_space; /// DCI pdu uint8_t dci_pdu; } DCI_ALLOC_t; ... ...
 ... ... @@ -1451,8 +1451,7 @@ void dci_encoding(uint8_t *a, uint16_t rnti); /*! \brief Top-level DCI entry point. This routine codes an set of DCI PDUs and performs PDCCH modulation, interleaving and mapping. \param num_ue_spec_dci Number of UE specific DCI pdus to encode \param num_common_dci Number of Common DCI pdus to encode \param num_dci Number of DCI pdus to encode \param dci_alloc Allocation vectors for each DCI pdu \param n_rnti n_RNTI (see ) \param amp Amplitude of QPSK symbols ... ... @@ -1461,8 +1460,7 @@ void dci_encoding(uint8_t *a, \param sub_frame_offset subframe offset in frame @returns Number of PDCCH symbols */ uint8_t generate_dci_top(uint8_t num_ue_spec_dci, uint8_t num_common_dci, uint8_t generate_dci_top(int num_dci, DCI_ALLOC_t *dci_alloc, uint32_t n_rnti, int16_t amp, ... ... @@ -1471,8 +1469,7 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci, uint32_t sub_frame_offset); uint8_t generate_dci_top_emul(PHY_VARS_eNB *phy_vars_eNB, uint8_t num_ue_spec_dci, uint8_t num_common_dci, int num_dci, DCI_ALLOC_t *dci_alloc, uint8_t subframe); ... ...
This diff is collapsed.
 ... ... @@ -1319,8 +1319,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, // loop over all DCIs for this subframe to generate DLSCH allocations for (i=0; iNum_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) { LOG_D(PHY,"[eNB] Subframe %d: DCI %d/%d : rnti %x, CCEind %d\n",subframe,i,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci,DCI_pdu->dci_alloc[i].rnti,DCI_pdu->dci_alloc[i].firstCCE); for (i=0; iNum_dci; i++) { LOG_D(PHY,"[eNB] Subframe %d: DCI %d/%d : rnti %x, CCEind %d\n",subframe,i,DCI_pdu->Num_dci,DCI_pdu->dci_alloc[i].rnti,DCI_pdu->dci_alloc[i].firstCCE); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,DCI_pdu->dci_alloc[i].rnti); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,DCI_pdu->dci_alloc[i].format); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,DCI_pdu->dci_alloc[i].firstCCE); ... ... @@ -1346,7 +1346,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, phy_config_dedicated_eNB_step2(eNB); // Now loop again over the DCIs for UL configuration for (i=0; iNum_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) { for (i=0; iNum_dci; i++) { dci_alloc = &DCI_pdu->dci_alloc[i]; if (dci_alloc->format == format0) { // this is a ULSCH allocation ... ... @@ -1368,7 +1368,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, // if we have DCI to generate do it now if ((DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci)>0) { if (DCI_pdu->Num_dci>0) { } else { // for emulation!! ... ... @@ -1379,13 +1379,12 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, if (eNB->abstraction_flag == 0) { if (do_pdcch_flag) { if (DCI_pdu->Num_ue_spec_dci+DCI_pdu->Num_common_dci > 0) { LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %"PRIu8",ue_spec %"PRIu8")\n",eNB->Mod_id,frame, subframe, DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci); if (DCI_pdu->Num_dci > 0) { LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (Num_dci=%d)\n",eNB->Mod_id,frame, subframe, DCI_pdu->Num_dci); } num_pdcch_symbols = generate_dci_top(DCI_pdu->Num_ue_spec_dci, DCI_pdu->Num_common_dci, num_pdcch_symbols = generate_dci_top(DCI_pdu->Num_dci, DCI_pdu->dci_alloc, 0, AMP, ... ... @@ -1395,15 +1394,15 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, } else { num_pdcch_symbols = DCI_pdu->num_pdcch_symbols; LOG_D(PHY,"num_pdcch_symbols %"PRIu8" (dci common %"PRIu8", dci uespec %"PRIu8")\n",num_pdcch_symbols, DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci); LOG_D(PHY,"num_pdcch_symbols %"PRIu8" (Num_dci %d)\n",num_pdcch_symbols, DCI_pdu->Num_dci); } } #ifdef PHY_ABSTRACTION // FIXME this ifdef seems suspicious else { LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Calling generate_dci_to_emul\n",eNB->Mod_id,frame, subframe); num_pdcch_symbols = generate_dci_top_emul(eNB,DCI_pdu->Num_ue_spec_dci,DCI_pdu->Num_common_dci,DCI_pdu->dci_alloc,subframe); num_pdcch_symbols = generate_dci_top_emul(eNB,DCI_pdu->Num_dci,DCI_pdu->dci_alloc,subframe); } #endif ... ... @@ -1414,10 +1413,10 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, #if defined(SMBV) // Sets up PDCCH and DCI table if (smbv_is_config_frame(frame) && (smbv_frame_cnt < 4) && ((DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci)>0)) { LOG_D(PHY,"[SMBV] Frame %3d, SF %d PDCCH, number of DCIs %d\n",frame,subframe,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci); if (smbv_is_config_frame(frame) && (smbv_frame_cnt < 4) && (DCI_pdu->Num_dci>0)) { LOG_D(PHY,"[SMBV] Frame %3d, SF %d PDCCH, number of DCIs %d\n",frame,subframe,DCI_pdu->Num_dci); dump_dci(fp,&DCI_pdu->dci_alloc); smbv_configure_pdcch(smbv_fname,(smbv_frame_cnt*10) + (subframe),num_pdcch_symbols,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci); smbv_configure_pdcch(smbv_fname,(smbv_frame_cnt*10) + (subframe),num_pdcch_symbols,DCI_pdu->Num_dci); } #endif ... ...
 ... ... @@ -390,10 +390,11 @@ void fill_DCI(PHY_VARS_eNB *eNB, } memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format1; dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format1; dci_alloc[*num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]); // printf("Generating dlsch params for user %d\n",k); ... ... @@ -530,11 +531,12 @@ void fill_DCI(PHY_VARS_eNB *eNB, } memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = SI_RNTI; dci_alloc[*num_dci].format = format1A; dci_alloc[*num_dci].firstCCE = 0; dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = SI_RNTI; dci_alloc[*num_dci].format = format1A; dci_alloc[*num_dci].firstCCE = 0; dci_alloc[*num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -699,10 +701,11 @@ void fill_DCI(PHY_VARS_eNB *eNB, } memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format2A; dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format2A; dci_alloc[*num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]); //printf("Generating dlsch params for user %d / format 2A (%d)\n",k,format2A); ... ... @@ -839,11 +842,12 @@ void fill_DCI(PHY_VARS_eNB *eNB, } memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = SI_RNTI; dci_alloc[*num_dci].format = format1A; dci_alloc[*num_dci].firstCCE = 0; dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = SI_RNTI; dci_alloc[*num_dci].format = format1A; dci_alloc[*num_dci].firstCCE = 0; dci_alloc[*num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]); //printf("Generating dlsch params for user %d\n",k); ... ... @@ -1009,10 +1013,11 @@ void fill_DCI(PHY_VARS_eNB *eNB, } memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format2; dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format2; dci_alloc[*num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1149,11 +1154,12 @@ void fill_DCI(PHY_VARS_eNB *eNB, } memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = SI_RNTI; dci_alloc[*num_dci].format = format1A; dci_alloc[*num_dci].firstCCE = 0; dci_alloc[*num_dci].dci_length = dci_length; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = SI_RNTI; dci_alloc[*num_dci].format = format1A; dci_alloc[*num_dci].firstCCE = 0; dci_alloc[*num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1181,11 +1187,12 @@ void fill_DCI(PHY_VARS_eNB *eNB, case 5: case 6: memcpy(&dci_alloc[*num_dci].dci_pdu,&DLSCH_alloc_pdu2_1E[k],sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); dci_alloc[*num_dci].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format1E_2A_M10PRB; dci_alloc[*num_dci].firstCCE = 4*k; dci_alloc[*num_dci].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; dci_alloc[*num_dci].L = 1; dci_alloc[*num_dci].rnti = n_rnti+k; dci_alloc[*num_dci].format = format1E_2A_M10PRB; dci_alloc[*num_dci].firstCCE = 4*k; dci_alloc[*num_dci].search_space = DCI_UE_SPACE; printf("Generating dlsch params for user %d\n",k); generate_eNB_dlsch_params_from_dci(0, subframe, ... ... @@ -1224,12 +1231,10 @@ int num_common_dci=0,num_ue_spec_dci=0,num_dci=0,num_pdcch_symbols=1; DCI_PDU *get_dci_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subframeP) { if (subframeP == subframe) { DCI_pdu.Num_ue_spec_dci = num_ue_spec_dci; DCI_pdu.Num_common_dci = num_common_dci; DCI_pdu.Num_dci = num_ue_spec_dci + num_common_dci; DCI_pdu.num_pdcch_symbols = num_pdcch_symbols; } else { DCI_pdu.Num_ue_spec_dci = 0; DCI_pdu.Num_common_dci = 0; DCI_pdu.Num_dci = 0; DCI_pdu.num_pdcch_symbols = num_pdcch_symbols; } ... ...
 ... ... @@ -1197,10 +1197,11 @@ int main(int argc, char **argv) } } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format1; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format1; dci_alloc[num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); ... ... @@ -1334,11 +1335,12 @@ int main(int argc, char **argv) } } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); generate_eNB_dlsch_params_from_dci(0, ... ... @@ -1496,10 +1498,11 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2A; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2A; dci_alloc[num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); ... ... @@ -1633,11 +1636,12 @@ int main(int argc, char **argv) } } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1827,10 +1831,11 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2; dci_alloc[num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); ... ... @@ -1964,11 +1969,12 @@ int main(int argc, char **argv) } } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1995,11 +2001,12 @@ int main(int argc, char **argv) case 5: case 6: memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu2_1E[k],sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); dci_alloc[num_dci].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format1E_2A_M10PRB; dci_alloc[num_dci].firstCCE = 4*k; dci_alloc[num_dci].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format1E_2A_M10PRB; dci_alloc[num_dci].firstCCE = 4*k; dci_alloc[num_dci].search_space = DCI_UE_SPACE; printf("Generating dlsch params for user %d\n",k); generate_eNB_dlsch_params_from_dci(0, subframe, ... ... @@ -3217,8 +3224,7 @@ int main(int argc, char **argv) } } } num_pdcch_symbols_2 = generate_dci_top(num_ue_spec_dci, num_common_dci, num_pdcch_symbols_2 = generate_dci_top(num_ue_spec_dci + num_common_dci, dci_alloc, 0, AMP, ... ...
 ... ... @@ -1112,10 +1112,11 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format1; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format1; dci_alloc[num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1255,11 +1256,12 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1424,10 +1426,11 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2A; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2A; dci_alloc[num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d / format 2A (%d)\n",k,format2A); ... ... @@ -1564,11 +1567,12 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = SI_RNTI; dci_alloc[num_dci].format = format1A; dci_alloc[num_dci].firstCCE = 0; dci_alloc[num_dci].search_space = DCI_COMMON_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1734,10 +1738,11 @@ int main(int argc, char **argv) } memcpy(&dci_alloc[num_dci].dci_pdu,&DLSCH_alloc_pdu_1[k],dci_length_bytes); dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2; dci_alloc[num_dci].dci_length = dci_length; dci_alloc[num_dci].L = 1; dci_alloc[num_dci].rnti = n_rnti+k; dci_alloc[num_dci].format = format2; dci_alloc[num_dci].search_space = DCI_UE_SPACE; dump_dci(&eNB->frame_parms,&dci_alloc[num_dci]); printf("Generating dlsch params for user %d\n",k); ... ... @@ -1874,11 +1879,12 @@ int main(int argc, char **argv) }
{"ft_lang_label":"__label__en","ft_lang_prob":0.90713,"math_prob":0.9555256,"size":1604,"snap":"2021-04-2021-17","text_gpt3_token_len":443,"char_repetition_ratio":0.1275,"word_repetition_ratio":0.0,"special_character_ratio":0.23316708,"punctuation_ratio":0.08741259,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.9981342,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2021-01-20T06:53:22Z\",\"WARC-Record-ID\":\"<urn:uuid:0f9746ec-1d67-40bf-a216-9b8d8982332f>\",\"Content-Length\":\"1049820\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:763e2d12-bcaf-4193-96a0-bed3996acdb4>\",\"WARC-Concurrent-To\":\"<urn:uuid:f7668a55-89a4-44d9-8382-9d4c9bb70650>\",\"WARC-IP-Address\":\"193.55.113.249\",\"WARC-Target-URI\":\"https://gitlab.eurecom.fr/dyyu/openairinterface5g/-/commit/8d5901c815eb62156b0f177f13c83012027fd482\",\"WARC-Payload-Digest\":\"sha1:5LMNW4P2DUT7LNR7AWGGKGS3GE75J56M\",\"WARC-Block-Digest\":\"sha1:M4RZYUAIHLX2JZK4VPS7YQWDSSZSWCDJ\",\"WARC-Truncated\":\"length\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2021/CC-MAIN-2021-04/CC-MAIN-2021-04_segments_1610703519923.26_warc_CC-MAIN-20210120054203-20210120084203-00398.warc.gz\"}"}