diff --git a/src/transport/scheduler/xqc_scheduler_backup.c b/src/transport/scheduler/xqc_scheduler_backup.c index ec7fad53..3e4da39e 100644 --- a/src/transport/scheduler/xqc_scheduler_backup.c +++ b/src/transport/scheduler/xqc_scheduler_backup.c @@ -26,8 +26,8 @@ xqc_backup_scheduler_get_path(void *scheduler, xqc_connection_t *conn, xqc_packet_out_t *packet_out, int check_cwnd, int reinject, xqc_bool_t *cc_blocked) { - xqc_path_ctx_t *best_path[XQC_PATH_CLASS_PERF_CLASS_SIZE]; - xqc_bool_t has_path[XQC_PATH_CLASS_PERF_CLASS_SIZE]; + xqc_path_ctx_t *best_path[XQC_PATH_CLASS_PERF_CLASS_SIZE] = { NULL }; + xqc_bool_t has_path[XQC_PATH_CLASS_PERF_CLASS_SIZE] = { XQC_FALSE }; xqc_path_perf_class_t path_class; xqc_bool_t available_path_exists; @@ -44,14 +44,6 @@ xqc_backup_scheduler_get_path(void *scheduler, xqc_connection_t *conn, *cc_blocked = XQC_FALSE; } - for (path_class = XQC_PATH_CLASS_AVAILABLE_HIGH; - path_class < XQC_PATH_CLASS_PERF_CLASS_SIZE; - path_class++) - { - best_path[path_class] = NULL; - has_path[path_class] = XQC_FALSE; - } - xqc_list_for_each_safe(pos, next, &conn->conn_paths_list) { path = xqc_list_entry(pos, xqc_path_ctx_t, path_list); @@ -87,7 +79,7 @@ xqc_backup_scheduler_get_path(void *scheduler, xqc_connection_t *conn, path_srtt = xqc_send_ctl_get_srtt(path->path_send_ctl); if (best_path[path_class] == NULL - || path_srtt < best_path[path_class]->path_send_ctl->ctl_srtt) + || path_srtt < xqc_send_ctl_get_srtt(best_path[path_class]->path_send_ctl)) { best_path[path_class] = path; } diff --git a/src/transport/scheduler/xqc_scheduler_backup.h b/src/transport/scheduler/xqc_scheduler_backup.h index c9f6c778..fd6d394e 100644 --- a/src/transport/scheduler/xqc_scheduler_backup.h +++ b/src/transport/scheduler/xqc_scheduler_backup.h @@ -10,4 +10,4 @@ extern const xqc_scheduler_callback_t xqc_backup_scheduler_cb; -#endif /* _XQC_SCHEDULER_BACKUP_H_INCLUDED_ */ +#endif /* _XQC_SCHEDULER_BACKUP_H_INCLUDED_ */ \ No newline at end of file diff --git a/src/transport/scheduler/xqc_scheduler_common.h b/src/transport/scheduler/xqc_scheduler_common.h index 97bba67b..a111931c 100644 --- a/src/transport/scheduler/xqc_scheduler_common.h +++ b/src/transport/scheduler/xqc_scheduler_common.h @@ -6,4 +6,4 @@ xqc_bool_t xqc_scheduler_check_path_can_send(xqc_path_ctx_t *path, xqc_packet_out_t *packet_out, int check_cwnd); -#endif \ No newline at end of file +#endif /* _XQC_SCHEDULER_COMMON_H_INCLUDED_ */ \ No newline at end of file diff --git a/src/transport/scheduler/xqc_scheduler_interop.c b/src/transport/scheduler/xqc_scheduler_interop.c index 1d207a79..32380cb6 100644 --- a/src/transport/scheduler/xqc_scheduler_interop.c +++ b/src/transport/scheduler/xqc_scheduler_interop.c @@ -81,7 +81,6 @@ xqc_interop_scheduler_get_path(void *scheduler, if (path->app_path_status == XQC_APP_PATH_STATUS_AVAILABLE) { best_path = path; min_rtt = path_srtt; - } else { best_standby_path = path; min_rtt_standby = path_srtt; @@ -112,4 +111,4 @@ const xqc_scheduler_callback_t xqc_interop_scheduler_cb = { .xqc_scheduler_size = xqc_interop_scheduler_size, .xqc_scheduler_init = xqc_interop_scheduler_init, .xqc_scheduler_get_path = xqc_interop_scheduler_get_path, -}; +}; \ No newline at end of file diff --git a/src/transport/scheduler/xqc_scheduler_interop.h b/src/transport/scheduler/xqc_scheduler_interop.h index 3d9cd5b8..027706f1 100644 --- a/src/transport/scheduler/xqc_scheduler_interop.h +++ b/src/transport/scheduler/xqc_scheduler_interop.h @@ -10,4 +10,4 @@ extern const xqc_scheduler_callback_t xqc_interop_scheduler_cb; -#endif +#endif /* _XQC_SCHEDULER_INTEROP_H_INCLUDED_ */ \ No newline at end of file diff --git a/src/transport/scheduler/xqc_scheduler_minrtt.c b/src/transport/scheduler/xqc_scheduler_minrtt.c index 6eef1982..ed7ed924 100644 --- a/src/transport/scheduler/xqc_scheduler_minrtt.c +++ b/src/transport/scheduler/xqc_scheduler_minrtt.c @@ -7,6 +7,7 @@ #include "src/transport/scheduler/xqc_scheduler_common.h" #include "src/transport/xqc_send_ctl.h" +#define INVALID_PATH_CLASS -1 static size_t xqc_minrtt_scheduler_size() @@ -25,8 +26,9 @@ xqc_minrtt_scheduler_get_path(void *scheduler, xqc_connection_t *conn, xqc_packet_out_t *packet_out, int check_cwnd, int reinject, xqc_bool_t *cc_blocked) { - xqc_path_ctx_t *best_path[XQC_PATH_CLASS_PERF_CLASS_SIZE]; xqc_path_perf_class_t path_class; + xqc_path_perf_class_t best_path_class = INVALID_PATH_CLASS; + xqc_path_ctx_t *best_path[XQC_PATH_CLASS_PERF_CLASS_SIZE] = { NULL }; xqc_list_head_t *pos, *next; xqc_path_ctx_t *path; @@ -37,13 +39,6 @@ xqc_minrtt_scheduler_get_path(void *scheduler, xqc_bool_t reached_cwnd_check = XQC_FALSE; xqc_bool_t path_can_send; - for (path_class = XQC_PATH_CLASS_AVAILABLE_HIGH; - path_class < XQC_PATH_CLASS_PERF_CLASS_SIZE; - path_class++) - { - best_path[path_class] = NULL; - } - if (cc_blocked) { *cc_blocked = XQC_FALSE; } @@ -90,6 +85,7 @@ xqc_minrtt_scheduler_get_path(void *scheduler, || path_srtt < best_path[path_class]->path_send_ctl->ctl_srtt) { best_path[path_class] = path; + best_path_class = path_class; } skip_path: @@ -103,24 +99,20 @@ xqc_minrtt_scheduler_get_path(void *scheduler, best_path[path_class] ? best_path[path_class]->path_id : -1); } - - for (path_class = XQC_PATH_CLASS_AVAILABLE_HIGH; - path_class < XQC_PATH_CLASS_PERF_CLASS_SIZE; - path_class++) + if (best_path_class != INVALID_PATH_CLASS + && best_path[best_path_class] != NULL) { - if (best_path[path_class] != NULL) { - xqc_log(conn->log, XQC_LOG_DEBUG, "|best path:%ui|frame_type:%s|" - "pn:%ui|size:%ud|reinj:%d|path_class:%d|", - best_path[path_class]->path_id, - xqc_frame_type_2_str(packet_out->po_frame_types), - packet_out->po_pkt.pkt_num, - packet_out->po_used_size, reinject, path_class); - return best_path[path_class]; - } + xqc_log(conn->log, XQC_LOG_DEBUG, "|best path:%ui|frame_type:%s|" + "pn:%ui|size:%ud|reinj:%d|path_class:%d|", + best_path[best_path_class]->path_id, + xqc_frame_type_2_str(packet_out->po_frame_types), + packet_out->po_pkt.pkt_num, + packet_out->po_used_size, reinject, best_path_class); + return best_path[best_path_class]; + } else { + xqc_log(conn->log, XQC_LOG_DEBUG, "|No available paths to schedule|conn:%p|", conn); + return NULL; } - - xqc_log(conn->log, XQC_LOG_DEBUG, "|No available paths to schedule|conn:%p|", conn); - return NULL; } const xqc_scheduler_callback_t xqc_minrtt_scheduler_cb = { diff --git a/src/transport/scheduler/xqc_scheduler_minrtt.h b/src/transport/scheduler/xqc_scheduler_minrtt.h index 29afef56..de21abc6 100644 --- a/src/transport/scheduler/xqc_scheduler_minrtt.h +++ b/src/transport/scheduler/xqc_scheduler_minrtt.h @@ -10,4 +10,4 @@ extern const xqc_scheduler_callback_t xqc_minrtt_scheduler_cb; -#endif /* _XQC_SCHEDULER_MINRTT_H_INCLUDED_ */ +#endif /* _XQC_SCHEDULER_MINRTT_H_INCLUDED_ */ \ No newline at end of file diff --git a/src/transport/scheduler/xqc_scheduler_rap.h b/src/transport/scheduler/xqc_scheduler_rap.h index 4f457338..a010a904 100644 --- a/src/transport/scheduler/xqc_scheduler_rap.h +++ b/src/transport/scheduler/xqc_scheduler_rap.h @@ -16,4 +16,4 @@ extern const xqc_scheduler_callback_t xqc_rap_scheduler_cb; -#endif +#endif /* _XQC_SCHEDULER_MINRTT_H_INCLUDED_ */ \ No newline at end of file