Commit 30db6220 authored by ChiehChun's avatar ChiehChun

Add static TBS and Calculate throughput

parent 94be6b07
...@@ -575,6 +575,8 @@ bool allocate_retransmission(module_id_t module_id, ...@@ -575,6 +575,8 @@ bool allocate_retransmission(module_id_t module_id,
return true; return true;
} }
float thr_ue[MAX_MOBILES_PER_GNB];
void pf_dl(module_id_t module_id, void pf_dl(module_id_t module_id,
frame_t frame, frame_t frame,
sub_frame_t slot, sub_frame_t slot,
...@@ -585,6 +587,9 @@ void pf_dl(module_id_t module_id, ...@@ -585,6 +587,9 @@ void pf_dl(module_id_t module_id,
int max_num_ue) { int max_num_ue) {
const int UE_id = 0; const int UE_id = 0;
float coeff_ue[MAX_MOBILES_PER_GNB];
NR_UE_list_t UE_sched; // UEs that could be scheduled
int *uep = &UE_sched.head;
/* Loop UE_info->list to check retransmission */ /* Loop UE_info->list to check retransmission */
for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) {
...@@ -593,7 +598,10 @@ void pf_dl(module_id_t module_id, ...@@ -593,7 +598,10 @@ void pf_dl(module_id_t module_id,
NR_UE_harq_t *harq = &sched_ctrl->harq_processes[current_harq_pid]; NR_UE_harq_t *harq = &sched_ctrl->harq_processes[current_harq_pid];
/* Calculate Throughput */ /* Calculate Throughput */
const float a = 0.0005f; // corresponds to 200ms window
const uint32_t b = UE_info->mac_stats[UE_id].dlsch_current_bytes;
thr_ue[UE_id] = (1 - a) * thr_ue[UE_id] + a * b;
LOG_I(MAC,"thr_ue[%d] %f\n",UE_id, thr_ue[UE_id]);
/* retransmission */ /* retransmission */
if (harq->round != 0) { if (harq->round != 0) {
...@@ -754,6 +762,7 @@ void nr_schedule_ue_spec(module_id_t module_id, ...@@ -754,6 +762,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
NR_UE_list_t *UE_list = &UE_info->list; NR_UE_list_t *UE_list = &UE_info->list;
for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) { for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) {
NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
UE_info->mac_stats[UE_id].dlsch_current_bytes = 0 ;
if (sched_ctrl->rbSize <= 0 && !get_softmodem_params()->phy_test) if (sched_ctrl->rbSize <= 0 && !get_softmodem_params()->phy_test)
continue; continue;
...@@ -912,6 +921,7 @@ void nr_schedule_ue_spec(module_id_t module_id, ...@@ -912,6 +921,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
} }
UE_info->mac_stats[UE_id].dlsch_total_bytes += TBS; UE_info->mac_stats[UE_id].dlsch_total_bytes += TBS;
UE_info->mac_stats[UE_id].dlsch_current_bytes = TBS;
UE_info->mac_stats[UE_id].lc_bytes_tx[lcid] += sdu_length_total; UE_info->mac_stats[UE_id].lc_bytes_tx[lcid] += sdu_length_total;
// Check if there is data from RLC or CE // Check if there is data from RLC or CE
......
...@@ -392,6 +392,7 @@ typedef struct { ...@@ -392,6 +392,7 @@ typedef struct {
int dlsch_rounds[8]; int dlsch_rounds[8];
int dlsch_errors; int dlsch_errors;
int dlsch_total_bytes; int dlsch_total_bytes;
int dlsch_current_bytes;
int ulsch_rounds[8]; int ulsch_rounds[8];
int ulsch_errors; int ulsch_errors;
int ulsch_total_bytes_scheduled; int ulsch_total_bytes_scheduled;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment