srsue: limit sync queue length to 1 for ZMQ radio

apply same change that we've done on the eNB also on the UE
to avoid the PHY processing TTIs faster than the stack.

Without that, we see lots of those in the logs:

...
08:39:17.580325 [STCK] [W] Detected slow task processing (sync_queue_len=7).
...
master
Andre Puschmann 5 years ago
parent c15b2ec810
commit a5c0f96fa7

@ -68,6 +68,7 @@ typedef struct {
std::string ue_category_str; std::string ue_category_str;
nas_args_t nas; nas_args_t nas;
gw_args_t gw; gw_args_t gw;
uint32_t sync_queue_size; // Max allowed difference between PHY and Stack clocks (in TTI)
bool have_tti_time_stats; bool have_tti_time_stats;
} stack_args_t; } stack_args_t;

@ -558,6 +558,14 @@ static int parse_args(all_args_t* args, int argc, char* argv[])
} }
} }
// Set sync queue capacity to 1 for ZMQ
if (args->rf.device_name == "zmq") {
args->stack.sync_queue_size = 1;
} else {
// use default size
args->stack.sync_queue_size = MULTIQUEUE_DEFAULT_CAPACITY;
}
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }

@ -49,10 +49,10 @@ ue_stack_lte::ue_stack_lte() :
tti_tprof("tti_tprof", "STCK", TTI_STAT_PERIOD) tti_tprof("tti_tprof", "STCK", TTI_STAT_PERIOD)
{ {
ue_queue_id = pending_tasks.add_queue(); ue_queue_id = pending_tasks.add_queue();
sync_queue_id = pending_tasks.add_queue();
gw_queue_id = pending_tasks.add_queue(); gw_queue_id = pending_tasks.add_queue();
stack_queue_id = pending_tasks.add_queue(); stack_queue_id = pending_tasks.add_queue();
background_queue_id = pending_tasks.add_queue(); background_queue_id = pending_tasks.add_queue();
// sync_queue is added in init()
background_tasks.start(); background_tasks.start();
} }
@ -125,6 +125,9 @@ int ue_stack_lte::init(const stack_args_t& args_, srslte::logger* logger_)
return SRSLTE_ERROR; return SRSLTE_ERROR;
} }
// add sync queue
sync_queue_id = pending_tasks.add_queue(args.sync_queue_size);
mac.init(phy, &rlc, &rrc, this); mac.init(phy, &rlc, &rrc, this);
rlc.init(&pdcp, &rrc, &timers, 0 /* RB_ID_SRB0 */); rlc.init(&pdcp, &rrc, &timers, 0 /* RB_ID_SRB0 */);
pdcp.init(&rlc, &rrc, gw); pdcp.init(&rlc, &rrc, gw);

@ -106,6 +106,8 @@ all_args_t parse_args(ttcn3_dut_args_t* args, int argc, char* argv[])
all_args.stack.log.gw_hex_limit = args->log_hex_level; all_args.stack.log.gw_hex_limit = args->log_hex_level;
all_args.stack.log.usim_hex_limit = args->log_hex_level; all_args.stack.log.usim_hex_limit = args->log_hex_level;
all_args.stack.sync_queue_size = 1;
return all_args; return all_args;
} }

Loading…
Cancel
Save