first version with UL and DL traffic good throughput
This commit is contained in:
+12
-6
@@ -19,7 +19,7 @@
|
|||||||
#include <openair1/PHY/CODING/coding_extern.h>
|
#include <openair1/PHY/CODING/coding_extern.h>
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
|
|
||||||
#define FS6_BUF_SIZE 100*1000
|
#define FS6_BUF_SIZE 1000*1000
|
||||||
static UDPsock_t sockFS6;
|
static UDPsock_t sockFS6;
|
||||||
|
|
||||||
int sum(uint8_t *b, int s) {
|
int sum(uint8_t *b, int s) {
|
||||||
@@ -296,6 +296,9 @@ void sendFs6Ul(PHY_VARS_eNB *eNB, int UE_id, int harq_pid, int segmentID, int16_
|
|||||||
eNB->pusch_vars[UE_id]->ulsch_power,
|
eNB->pusch_vars[UE_id]->ulsch_power,
|
||||||
sizeof(int)*2);
|
sizeof(int)*2);
|
||||||
hULUE(newUDPheader)->cqi_crc_status=eNB->ulsch[UE_id]->harq_processes[harq_pid]->cqi_crc_status;
|
hULUE(newUDPheader)->cqi_crc_status=eNB->ulsch[UE_id]->harq_processes[harq_pid]->cqi_crc_status;
|
||||||
|
hULUE(newUDPheader)->O_ACK=eNB->ulsch[UE_id]->harq_processes[harq_pid]->O_ACK;
|
||||||
|
memcpy(hULUE(newUDPheader)->o_ACK, eNB->ulsch[UE_id]->harq_processes[harq_pid]->o_ACK,
|
||||||
|
sizeof(eNB->ulsch[UE_id]->harq_processes[harq_pid]->o_ACK));
|
||||||
hULUE(newUDPheader)->ta=lte_est_timing_advance_pusch(eNB, UE_id);
|
hULUE(newUDPheader)->ta=lte_est_timing_advance_pusch(eNB, UE_id);
|
||||||
hULUE(newUDPheader)->segment=segmentID;
|
hULUE(newUDPheader)->segment=segmentID;
|
||||||
memcpy(hULUE(newUDPheader)->o, eNB->ulsch[UE_id]->harq_processes[harq_pid]->o,
|
memcpy(hULUE(newUDPheader)->o, eNB->ulsch[UE_id]->harq_processes[harq_pid]->o,
|
||||||
@@ -379,7 +382,7 @@ void pusch_procedures_tosplit(uint8_t *bufferZone, int bufSize, PHY_VARS_eNB *eN
|
|||||||
}
|
}
|
||||||
|
|
||||||
void phy_procedures_eNB_uespec_RX_tosplit(uint8_t *bufferZone, int bufSize, PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
|
void phy_procedures_eNB_uespec_RX_tosplit(uint8_t *bufferZone, int bufSize, PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
|
||||||
//RX processing for ue-specific resources (i
|
//RX processing for ue-specific resources
|
||||||
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
|
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
|
||||||
const int subframe = proc->subframe_rx;
|
const int subframe = proc->subframe_rx;
|
||||||
const int frame = proc->frame_rx;
|
const int frame = proc->frame_rx;
|
||||||
@@ -785,10 +788,13 @@ void recvFs6Ul(uint8_t *bufferZone, int nbBlocks, PHY_VARS_eNB *eNB, ul_propagat
|
|||||||
hULUE(bufPtr)->ulsch_power,
|
hULUE(bufPtr)->ulsch_power,
|
||||||
sizeof(int)*2);
|
sizeof(int)*2);
|
||||||
ulsch_harq->cqi_crc_status=hULUE(bufPtr)->cqi_crc_status;
|
ulsch_harq->cqi_crc_status=hULUE(bufPtr)->cqi_crc_status;
|
||||||
|
//ulsch_harq->O_ACK= hULUE(bufPtr)->O_ACK;
|
||||||
|
memcpy(ulsch_harq->o_ACK, hULUE(bufPtr)->o_ACK,
|
||||||
|
sizeof(ulsch_harq->o_ACK));
|
||||||
memcpy(ulsch_harq->o,hULUE(bufPtr)->o, sizeof(ulsch_harq->o));
|
memcpy(ulsch_harq->o,hULUE(bufPtr)->o, sizeof(ulsch_harq->o));
|
||||||
ul_propa[hULUE(bufPtr)->UE_id].ta=hULUE(bufPtr)->ta;
|
ul_propa[hULUE(bufPtr)->UE_id].ta=hULUE(bufPtr)->ta;
|
||||||
LOG_I(PHY,"Received ulsch data for: rnti:%d, fsf: %d/%d, cqi_crc_status %d \n",
|
LOG_D(PHY,"Received ulsch data for: rnti:%d, fsf: %d/%d, cqi_crc_status %d O_ACK: %di, segment: %di, seglen: %d \n",
|
||||||
ulsch->rnti, eNB->proc.frame_rx, eNB->proc.subframe_rx, ulsch_harq->cqi_crc_status);
|
ulsch->rnti, eNB->proc.frame_rx, eNB->proc.subframe_rx, ulsch_harq->cqi_crc_status, ulsch_harq->O_ACK,hULUE(bufPtr)->segment , hULUE(bufPtr)->segLen);
|
||||||
} else if ( type == fs6ULcch ) {
|
} else if ( type == fs6ULcch ) {
|
||||||
int nb_uci=hULUEuci(bufPtr)->nb_active_ue;
|
int nb_uci=hULUEuci(bufPtr)->nb_active_ue;
|
||||||
fs6_ul_uespec_uci_element_t *tmp=(fs6_ul_uespec_uci_element_t *)(hULUEuci(bufPtr)+1);
|
fs6_ul_uespec_uci_element_t *tmp=(fs6_ul_uespec_uci_element_t *)(hULUEuci(bufPtr)+1);
|
||||||
@@ -938,8 +944,8 @@ void rcvFs6DL(uint8_t *bufferZone, int nbBlocks, PHY_VARS_eNB *eNB, int frame, i
|
|||||||
cpyVal(delta_TF);
|
cpyVal(delta_TF);
|
||||||
cpyVal(repetition_number );
|
cpyVal(repetition_number );
|
||||||
cpyVal(total_number_of_repetitions);
|
cpyVal(total_number_of_repetitions);
|
||||||
LOG_I(PHY,"Received request to perform ulsch for: rnti:%d, fsf: %d/%d\n",
|
LOG_D(PHY,"Received request to perform ulsch for: rnti:%d, fsf: %d/%d, O_ACK: %d\n",
|
||||||
ulsch->rnti, frame, subframe);
|
ulsch->rnti, frame, subframe, ulsch_harq->O_ACK);
|
||||||
}
|
}
|
||||||
} else if ( type == fs6ULConfigCCH ) {
|
} else if ( type == fs6ULConfigCCH ) {
|
||||||
fs6_dl_uespec_ulcch_element_t *tmp=(fs6_dl_uespec_ulcch_element_t *)(hTxULcch(bufPtr)+1);
|
fs6_dl_uespec_ulcch_element_t *tmp=(fs6_dl_uespec_ulcch_element_t *)(hTxULcch(bufPtr)+1);
|
||||||
|
|||||||
@@ -174,6 +174,8 @@ typedef struct {
|
|||||||
uint8_t segment;
|
uint8_t segment;
|
||||||
int segLen;
|
int segLen;
|
||||||
int ulsch_power[2];
|
int ulsch_power[2];
|
||||||
|
uint8_t o_ACK[4];
|
||||||
|
uint8_t O_ACK;
|
||||||
int ta;
|
int ta;
|
||||||
uint8_t o[MAX_CQI_BYTES];
|
uint8_t o[MAX_CQI_BYTES];
|
||||||
uint8_t cqi_crc_status;
|
uint8_t cqi_crc_status;
|
||||||
|
|||||||
@@ -672,7 +672,7 @@ int ulsch_decoding_data(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag)
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
return 0;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -388,10 +388,10 @@ static void dump_ul(UL_IND_t *u) {
|
|||||||
|
|
||||||
A("XXXX crc_ind %d\n", u->crc_ind.crc_indication_body.number_of_crcs);
|
A("XXXX crc_ind %d\n", u->crc_ind.crc_indication_body.number_of_crcs);
|
||||||
A("XXXX sr_ind %d\n", u->sr_ind.sr_indication_body.number_of_srs);
|
A("XXXX sr_ind %d\n", u->sr_ind.sr_indication_body.number_of_srs);
|
||||||
A("XXXX cqi_ind %d\n", u->cqi_ind.number_of_cqis);
|
A("XXXX cqi_ind %d\n", u->cqi_ind.cqi_indication_body.number_of_cqis);
|
||||||
|
|
||||||
for (i = 0; i < u->cqi_ind.number_of_cqis; i++) {
|
for (i = 0; i < u->cqi_ind.cqi_indication_body.number_of_cqis; i++) {
|
||||||
nfapi_cqi_indication_pdu_t *v = &u->cqi_ind.cqi_pdu_list[i];
|
nfapi_cqi_indication_pdu_t *v = &u->cqi_ind.cqi_indication_body.cqi_pdu_list[i];
|
||||||
A("XXXX cqi ind %d\n", i);
|
A("XXXX cqi ind %d\n", i);
|
||||||
A("XXXX cqi ul_cqi %d channel %d\n", v->ul_cqi_information.ul_cqi,
|
A("XXXX cqi ul_cqi %d channel %d\n", v->ul_cqi_information.ul_cqi,
|
||||||
v->ul_cqi_information.channel);
|
v->ul_cqi_information.channel);
|
||||||
|
|||||||
Reference in New Issue
Block a user