Dealing with connection lost case. Now the RRU keeps working but we can't restart it again, a problem with the USRP load

This commit is contained in:
Younes
2018-02-22 15:54:27 +01:00
parent ecd1f9f3e1
commit e2ddd50fde
3 changed files with 18 additions and 7 deletions
+1 -1
View File
@@ -293,7 +293,7 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint
db_fulllength,
0) < 0) {
perror("ETHERNET read");
ru->state = RU_IDLE;
ru->cmd = STOP_RU;
return;
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF, 0 );
+7
View File
@@ -678,6 +678,11 @@ typedef enum {
RU_SYNC = 5
} rru_state_t;
/// Some commamds to RRU. Not sure we should do it like this !
typedef enum {
STOP_RU = 0
} rru_cmd_t;
typedef struct RU_t_s{
/// index of this ru
uint32_t idx;
@@ -796,6 +801,8 @@ typedef struct RU_t_s{
openair0_timestamp ts_offset;
/// Current state of the RU
rru_state_t state;
/// Command to do
rru_cmd_t cmd;
/// process scheduling variables
RU_proc_t proc;
/// stats thread pthread descriptor
+10 -6
View File
@@ -681,15 +681,10 @@ void fh_if4p5_north_asynch_in(RU_t *ru,int *frame,int *subframe) {
symbol_mask_full = ((subframe_select(fp,*subframe) == SF_S) ? (1<<fp->dl_symbols_in_S_subframe) : (1<<fp->symbols_per_tti))-1;
do {
recv_IF4p5(ru, &frame_tx, &subframe_tx, &packet_type, &symbol_number);
if (ru->state != RU_RUN){
if (ru->cmd != STOP_RU){
pthread_mutex_lock(&proc->mutex_ru);
proc->instance_cnt_ru = -1;
pthread_mutex_unlock(&proc->mutex_ru);
if (ru->stop_rf) {
ru->stop_rf(ru);
LOG_I(PHY,"RU %d rf device stopped\n",ru->idx);
}
else LOG_D(PHY,"RU %d no rf device\n",ru->idx);
return;
}
if ((subframe_select(fp,subframe_tx) == SF_DL) && (symbol_number == 0)) start_meas(&ru->rx_fhaul);
@@ -1788,6 +1783,14 @@ static void* ru_thread( void* param ) {
// synchronization on input FH interface, acquire signals/data and block
if (ru->stop_rf && ru->cmd == STOP_RU) {
ru->stop_rf(ru);
ru->state = RU_IDLE;
LOG_I(PHY,"RU %d rf device stopped\n",ru->idx);
break;
}
if (ru->fh_south_in && ru->state == RU_RUN) ru->fh_south_in(ru,&frame,&subframe);
else AssertFatal(1==0, "No fronthaul interface at south port");
@@ -2273,6 +2276,7 @@ void init_RU(char *rf_config_file, clock_source_t clock_source,clock_source_t ti
ru->idx = ru_id;
ru->ts_offset = 0;
ru->in_synch = (ru->is_slave == 1) ? 0 : 1;
ru->cmd = -1;
// use eNB_list[0] as a reference for RU frame parameters
// NOTE: multiple CC_id are not handled here yet!
ru->openair0_cfg.clock_source = clock_source;