Commit 5d2236e6 authored by ChiehChun's avatar ChiehChun Committed by Robert Schmidt

Add dlsch_current_bytes and Calculate throughput

parent 0d602043
...@@ -435,6 +435,8 @@ bool allocate_retransmission(module_id_t module_id, ...@@ -435,6 +435,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,
...@@ -445,6 +447,9 @@ void pf_dl(module_id_t module_id, ...@@ -445,6 +447,9 @@ void pf_dl(module_id_t module_id,
const int UE_id = 0; const int UE_id = 0;
NR_UE_info_t *UE_info = &RC.nrmac[module_id]->UE_info; NR_UE_info_t *UE_info = &RC.nrmac[module_id]->UE_info;
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_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]) {
...@@ -457,7 +462,10 @@ void pf_dl(module_id_t module_id, ...@@ -457,7 +462,10 @@ void pf_dl(module_id_t module_id,
const rnti_t rnti = UE_info->rnti[UE_id]; const rnti_t rnti = UE_info->rnti[UE_id];
/* 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) {
...@@ -657,6 +665,7 @@ void nr_schedule_ue_spec(module_id_t module_id, ...@@ -657,6 +665,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
NR_list_t *UE_list = &UE_info->list; NR_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;
/* update TA and set ta_apply every 10 frames. /* update TA and set ta_apply every 10 frames.
* Possible improvement: take the periodicity from input file. * Possible improvement: take the periodicity from input file.
...@@ -1071,6 +1080,7 @@ void nr_schedule_ue_spec(module_id_t module_id, ...@@ -1071,6 +1080,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] += dlsch_total_bytes; UE_info->mac_stats[UE_id].lc_bytes_tx[lcid] += dlsch_total_bytes;
retInfo->rbSize = sched_ctrl->rbSize; retInfo->rbSize = sched_ctrl->rbSize;
......
...@@ -473,6 +473,7 @@ typedef struct { ...@@ -473,6 +473,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