summaryrefslogtreecommitdiff
path: root/shaping/include
diff options
context:
space:
mode:
authorliuchang <[email protected]>2023-08-08 10:02:10 +0000
committerliuchang <[email protected]>2023-08-08 10:02:10 +0000
commitce5a1ae194daa8cee5f54fe86bc4a324f6a57fce (patch)
treea7b763fadb7799aee4ea8a16cb9540b66ea82ac1 /shaping/include
parent099951d0bd691f35c675df6dbff3031a1a522ee6 (diff)
add feature aqm temp codefeature_aqm
Diffstat (limited to 'shaping/include')
-rw-r--r--shaping/include/shaper.h42
-rw-r--r--shaping/include/shaper_aqm.h10
-rw-r--r--shaping/include/shaper_stat.h2
3 files changed, 44 insertions, 10 deletions
diff --git a/shaping/include/shaper.h b/shaping/include/shaper.h
index 2be4d65..f629124 100644
--- a/shaping/include/shaper.h
+++ b/shaping/include/shaper.h
@@ -16,7 +16,6 @@
#define SHAPER_FLOW_POP_NUM_MAX 10
#define SESSION_CLOSE 0x1
-#define SESSION_UPDATE_PF_PRIO_LEN 0x2
#define CONFIRM_PRIORITY_PKTS 20
@@ -24,6 +23,10 @@
#define SHAPING_GLOBAL_CONF_FILE "./conf/shaping.conf"
+#define NANO_SECONDS_PER_MICRO_SEC 1000
+#define MICRO_SECONDS_PER_SEC 1000000
+#define NANO_SECONDS_PER_SEC 1000000000
+
struct shaping_system_conf {
unsigned int session_queue_len_max;
unsigned int priority_queue_len_max;
@@ -78,9 +81,26 @@ enum shaping_profile_type {
PROFILE_TYPE_SPLIT_BY_LOCAL_HOST
};
+enum shaper_aqm_type {
+ AQM_TYPE_NONE = 0,
+ AQM_TYPE_BLUE,
+ AQM_TYPE_CODEL,
+ AQM_TYPE_MAX
+};
+
+struct shaper_aqm_blue_para {
+ time_t update_time;
+ int queue_len_max;
+ int probability;
+ int queue_len;
+ //int d1;//increase delta
+ //int d2;//decrease delta
+};
+
struct shaping_profile_info {
int id;//profile_id
enum shaping_profile_type type;
+ enum shaper_aqm_type aqm_type;
int priority;
int in_deposit_token;
int out_deposit_token;
@@ -90,6 +110,10 @@ struct shaping_profile_info {
unsigned char is_priority_blocked;
unsigned char is_invalid;
struct shaping_stat_for_profile stat;
+ union {
+ struct shaper_aqm_blue_para blue_para;
+ //struct shaper_aqm_codel_para codel_para;
+ }aqm_para;
};
struct shaping_rule_info {
@@ -153,22 +177,22 @@ struct shaper;//instance of shaping, thread unsafe
struct shaping_flow* shaping_flow_new();
void shaping_flow_free(struct shaping_thread_ctx *ctx, struct shaping_flow *sf);
-struct shaper* shaper_new(unsigned int priority_queue_len_max);
-void shaper_free(struct shaper *sp);
+//struct shaper* shaper_new(unsigned int priority_queue_len_max);
+//void shaper_free(struct shaper *sp);
bool shaper_queue_empty(struct shaping_flow *sf);
-void shaper_packet_dequeue(struct shaping_flow *sf);
-struct shaping_packet_wrapper* shaper_first_pkt_get(struct shaping_flow *sf);
+//void shaper_packet_dequeue(struct shaping_flow *sf);
+//struct shaping_packet_wrapper* shaper_first_pkt_get(struct shaping_flow *sf);
void shaper_queue_clear(struct shaping_flow *sf, struct shaping_thread_ctx *ctx);
/*return value: 0 for success, -1 for failed*/
-int shaper_flow_push(struct shaping_thread_ctx *ctx, struct shaping_flow *sf, unsigned long long enqueue_time);
+//int shaper_flow_push(struct shaping_thread_ctx *ctx, struct shaping_flow *sf, unsigned long long enqueue_time);
/*return num of sf_ins*/
-void shaper_flow_pop(struct shaping_thread_ctx *ctx, struct shaping_flow *sf);
-int shaper_flow_in_order_get(struct shaper *sp, struct shaper_flow_instance sf_ins[], int priority, int max_sf_num);
+//void shaper_flow_pop(struct shaping_thread_ctx *ctx, struct shaping_flow *sf);
+//int shaper_flow_in_order_get(struct shaper *sp, struct shaper_flow_instance sf_ins[], int priority, int max_sf_num);
//enum shaping_packet_action shaper_pkt_action_decide(struct shaping_thread_ctx *ctx, struct shaping_flow *sf, int priority, int sf_in_queue);
-int shaper_global_conf_init(struct shaping_system_conf *conf);
+//int shaper_global_conf_init(struct shaping_system_conf *conf);
void shaper_packet_recv_and_process(struct shaping_thread_ctx *ctx);
void shaping_packet_process(struct shaping_thread_ctx *ctx, marsio_buff_t *rx_buff, struct metadata *meta, struct shaping_flow *sf);
diff --git a/shaping/include/shaper_aqm.h b/shaping/include/shaper_aqm.h
new file mode 100644
index 0000000..f7e0123
--- /dev/null
+++ b/shaping/include/shaper_aqm.h
@@ -0,0 +1,10 @@
+#pragma once
+
+enum shaper_aqm_action {
+ AQM_ACTION_PASS,
+ AQM_ACTION_DROP,
+};
+
+int shaper_aqm_enqueue(struct shaping_profile_info *profile);
+int shaper_aqm_dequeue();
+int shaper_aqm_need_drop(struct shaping_profile_info *profile, struct shaping_packet_wrapper *pkt_wrapper); \ No newline at end of file
diff --git a/shaping/include/shaper_stat.h b/shaping/include/shaper_stat.h
index 20da941..a2527cd 100644
--- a/shaping/include/shaper_stat.h
+++ b/shaping/include/shaper_stat.h
@@ -55,4 +55,4 @@ void shaper_stat_forward_all_rule_inc(struct shaping_stat *stat, struct shaping_
void shaper_stat_drop_inc(struct shaping_stat_for_profile *profile_stat, unsigned char direction, int thread_id);
void shaper_stat_max_latency_update(struct shaping_stat_for_profile *profile_stat, unsigned char direction, unsigned long long latency, int thread_id);
-void shaper_stat_refresh(struct shaping_stat *stat, struct shaping_flow *sf, int thread_id, int force); \ No newline at end of file
+void shaper_stat_refresh(struct shaping_thread_ctx *ctx, struct shaping_flow *sf, int thread_id, int force); \ No newline at end of file