Merge remote-tracking branch 'origin/develop' into threading-rk
This commit is contained in:
+12
-41
@@ -51,6 +51,7 @@
|
||||
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
|
||||
#include "PHY/MODULATION/nr_modulation.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
|
||||
#include "openair2/NR_PHY_INTERFACE/nr_sched_response.h"
|
||||
|
||||
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
|
||||
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
|
||||
@@ -110,7 +111,8 @@ time_stats_t softmodem_stats_rx_sf; // total rx time
|
||||
#define L1STATSSTRLEN 16384
|
||||
|
||||
|
||||
void tx_func(void *param) {
|
||||
void tx_func(void *param)
|
||||
{
|
||||
|
||||
processingData_L1tx_t *info = (processingData_L1tx_t *) param;
|
||||
int frame_tx = info->frame;
|
||||
@@ -138,11 +140,14 @@ void tx_func(void *param) {
|
||||
LOG_D(PHY,"gNB: %d.%d : calling RU TX function\n",syncMsgRU.frame_tx,syncMsgRU.slot_tx);
|
||||
ru_tx_func((void*)&syncMsgRU);
|
||||
}
|
||||
/* this thread is done with the sched_info, decrease the reference counter */
|
||||
deref_sched_response(info->sched_response_id);
|
||||
stop_meas(&info->gNB->phy_proc_tx);
|
||||
}
|
||||
|
||||
|
||||
void *L1_rx_thread(void *arg) {
|
||||
void *L1_rx_thread(void *arg)
|
||||
{
|
||||
PHY_VARS_gNB *gNB = (PHY_VARS_gNB*)arg;
|
||||
|
||||
while (oai_exit == 0) {
|
||||
@@ -166,7 +171,8 @@ void *L1_tx_thread(void *arg) {
|
||||
return NULL;
|
||||
}
|
||||
*/
|
||||
void rx_func(void *param) {
|
||||
void rx_func(void *param)
|
||||
{
|
||||
processingData_L1_t *info = (processingData_L1_t *) param;
|
||||
PHY_VARS_gNB *gNB = info->gNB;
|
||||
int frame_rx = info->frame_rx;
|
||||
@@ -211,46 +217,11 @@ void rx_func(void *param) {
|
||||
|
||||
T(T_GNB_PHY_DL_TICK, T_INT(gNB->Mod_id), T_INT(frame_tx), T_INT(slot_tx));
|
||||
|
||||
/* hack to remove UEs */
|
||||
extern int rnti_to_remove[10];
|
||||
extern volatile int rnti_to_remove_count;
|
||||
extern pthread_mutex_t rnti_to_remove_mutex;
|
||||
if (pthread_mutex_lock(&rnti_to_remove_mutex)) exit(1);
|
||||
int up_removed = 0;
|
||||
int down_removed = 0;
|
||||
int pucch_removed = 0;
|
||||
for (int i = 0; i < rnti_to_remove_count; i++) {
|
||||
LOG_W(NR_PHY, "to remove rnti 0x%04x\n", rnti_to_remove[i]);
|
||||
void clean_gNB_ulsch(NR_gNB_ULSCH_t *ulsch);
|
||||
void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch);
|
||||
int j;
|
||||
for (j = 0; j < NUMBER_OF_NR_ULSCH_MAX; j++)
|
||||
if (gNB->ulsch[j]->rnti == rnti_to_remove[i]) {
|
||||
gNB->ulsch[j]->rnti = 0;
|
||||
gNB->ulsch[j]->harq_mask = 0;
|
||||
int h;
|
||||
for (h = 0; h < NR_MAX_ULSCH_HARQ_PROCESSES; h++) {
|
||||
gNB->ulsch[j]->harq_processes[h]->status = NR_SCH_IDLE;
|
||||
gNB->ulsch[j]->harq_processes[h]->round = 0;
|
||||
gNB->ulsch[j]->harq_processes[h]->handled = 0;
|
||||
}
|
||||
up_removed++;
|
||||
}
|
||||
|
||||
for (j = 0; j < gNB->max_nb_pucch; j++)
|
||||
if (gNB->pucch[j]->active > 0 &&
|
||||
gNB->pucch[j]->pucch_pdu.rnti == rnti_to_remove[i]) {
|
||||
gNB->pucch[j]->active = 0;
|
||||
gNB->pucch[j]->pucch_pdu.rnti = 0;
|
||||
pucch_removed++;
|
||||
}
|
||||
}
|
||||
if (rnti_to_remove_count) LOG_W(NR_PHY, "to remove rnti_to_remove_count=%d, up_removed=%d down_removed=%d pucch_removed=%d\n", rnti_to_remove_count, up_removed, down_removed, pucch_removed);
|
||||
rnti_to_remove_count = 0;
|
||||
if (pthread_mutex_unlock(&rnti_to_remove_mutex)) exit(1);
|
||||
reset_active_stats(gNB, frame_tx);
|
||||
reset_active_ulsch(gNB, frame_tx);
|
||||
|
||||
// RX processing
|
||||
int rx_slot_type = nr_slot_select(cfg,frame_rx,slot_rx);
|
||||
int rx_slot_type = nr_slot_select(cfg, frame_rx, slot_rx);
|
||||
if (rx_slot_type == NR_UPLINK_SLOT || rx_slot_type == NR_MIXED_SLOT) {
|
||||
// UE-specific RX processing for subframe n
|
||||
// TODO: check if this is correct for PARALLEL_RU_L1_TRX_SPLIT
|
||||
|
||||
Reference in New Issue
Block a user