1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FILLP_PDT_FLOWCONTROL_H
17 #define FILLP_PDT_FLOWCONTROL_H
18 #include "fillptypes.h"
19 
20 #ifdef PDT_UT
21 #include "pdt_fc_ut.h"
22 #endif /* PDT_UT */
23 
24 #ifdef PDT_MIRACAST
25 #include "pdt_fc_miracast.h"
26 #endif /* PDT_MIRACAST */
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* __cplusplus */
31 
32 #ifndef FILLP_PDT_INFO
33 #error "No pdt information!!!"
34 #endif
35 
36 #ifndef FILLP_OFFERING_INFO
37 #define FILLP_OFFERING_INFO "nStack RivulNet"
38 #endif
39 
40 #define FILLP_VERSION_DATE "[2022-08-30]"
41 
42 #define FILLP_STACK_SPACE "          "
43 
44 #define FILLP_VERSION \
45     FILLP_OFFERING_INFO " 205.0.2 (" FILLP_PDT_ALG ") " FILLP_STACK_SPACE FILLP_PDT_INFO FILLP_VERSION_DATE
46 
47 #ifndef MAX_SPUNGEINSTANCE_NUM
48 #define MAX_SPUNGEINSTANCE_NUM 1
49 #endif
50 
51 #ifndef FILLP_DEFAULT_INST_NUM
52 #define FILLP_DEFAULT_INST_NUM 1
53 #endif
54 
55 #ifndef FILLP_DEFAULT_APP_SEND_CACHE
56 #define FILLP_DEFAULT_APP_SEND_CACHE 819200 /* size of send cache */
57 #endif
58 
59 #ifndef FILLP_DEFAULT_APP_RECV_CACHE
60 #define FILLP_DEFAULT_APP_RECV_CACHE 819200 /* size of recv cache */
61 #endif
62 
63 #ifndef FILLP_DEFAULT_MAX_RATE
64 #define FILLP_DEFAULT_MAX_RATE (20 * 1000) /* max rate */
65 #endif
66 
67 #ifndef FILLP_DEFAULT_CORE_MAX_RATE
68 #define FILLP_DEFAULT_CORE_MAX_RATE (10 * 1000 * 1000) /* max rate */
69 #endif
70 
71 #ifndef FILLP_DEFAULT_CORE_MAX_RECV_RATE
72 #define FILLP_DEFAULT_CORE_MAX_RECV_RATE FILLP_DEFAULT_CORE_MAX_RATE
73 #endif
74 
75 #ifndef FILLP_DEFAULT_APP_PKT_SIZE
76 #define FILLP_DEFAULT_APP_PKT_SIZE 1300 /* default pkt size to cal flow rate */
77 #endif
78 
79 #ifndef FILLP_MAX_PKT_SIZE
80 #define FILLP_MAX_PKT_SIZE 9000
81 #endif
82 
83 #ifndef FILLP_DEFAULT_APP_SLOW_START
84 #define FILLP_DEFAULT_APP_SLOW_START FILLP_TRUE /* slow start */
85 #endif
86 
87 #ifndef FILLP_DEFAULT_APP_KEEP_ALIVE_TIME
88 #define FILLP_DEFAULT_APP_KEEP_ALIVE_TIME (200 * 1000) /* keep alive time, ms */
89 #endif
90 
91 #ifndef FILLP_DEFAULT_MAX_SOCK_NUM
92 #ifdef FILLP_LW_LITEOS
93 #define FILLP_DEFAULT_MAX_SOCK_NUM 10
94 #else
95 #define FILLP_DEFAULT_MAX_SOCK_NUM (1024)
96 #endif
97 #endif
98 
99 #ifndef FILLP_DEFAULT_MAX_CONNECTION_NUM
100 #ifdef FILLP_LW_LITEOS
101 #define FILLP_DEFAULT_MAX_CONNECTION_NUM 10
102 #else
103 #define FILLP_DEFAULT_MAX_CONNECTION_NUM (1024)
104 #endif
105 #endif
106 
107 #ifndef FILLP_DEFAULT_BFULL_CPU
108 #define FILLP_DEFAULT_BFULL_CPU  FILLP_TRUE
109 #endif
110 
111 #ifndef FILLP_DEFAULT_INITIAL_RATE
112 #define FILLP_DEFAULT_INITIAL_RATE 2000
113 #endif
114 
115 #ifndef FILLP_DEFAULT_PKT_LOSS_ALLOW
116 #define FILLP_DEFAULT_PKT_LOSS_ALLOW 8
117 #endif
118 
119 #ifndef FILLP_DEFAULT_NACK_REPEAT_TIMES
120 #define FILLP_DEFAULT_NACK_REPEAT_TIMES 5
121 #endif
122 
123 #ifndef FILLP_MIN_PACK_INTERVAL
124 #define FILLP_MIN_PACK_INTERVAL (50 * 1000) /* min packet interval if rtt is less then default rtt */
125 #endif
126 
127 #ifndef FILLP_DEFAULT_APP_PACK_INTERVAL
128 #define FILLP_DEFAULT_APP_PACK_INTERVAL (20 * 1000) /* packet interval (us) */
129 #endif
130 
131 #ifndef FILLP_MINIMUM_SELECT_TIME
132 #define FILLP_MINIMUM_SELECT_TIME 10000 // us
133 #endif
134 
135 #ifndef FILLP_DELAY_NACK_ENABLE
136 #define FILLP_DELAY_NACK_ENABLE FILLP_TRUE
137 #endif
138 
139 #ifndef FILLP_ADHOC_PACK_ENABLE
140 #define FILLP_ADHOC_PACK_ENABLE FILLP_FALSE
141 #endif
142 
143 #ifndef FILLP_TIMING_WHEEL_SLOT_NUM
144 #define FILLP_TIMING_WHEEL_SLOT_NUM 8
145 #endif
146 
147 #ifndef FILLP_TIMING_WHEEL_ACCURACY
148 #define FILLP_TIMING_WHEEL_ACCURACY 100 /* us */
149 #endif
150 
151 #ifndef FILLP_ALG_DEFAULT_TYPE
152 #define FILLP_ALG_DEFAULT_TYPE FILLP_ALG_BASE
153 #endif /* FILLP_ALG_DEFAULT_TYPE */
154 
155 #ifndef FILLP_DYMM_INCREASE_STEP_SEND
156 #define FILLP_DYMM_INCREASE_STEP_SEND 1024
157 #endif /* FILLP_DYMM_INCREASE_STEP_SEND */
158 
159 #ifndef FILLP_DYMM_INCREASE_STEP_RECV
160 #define FILLP_DYMM_INCREASE_STEP_RECV 1024
161 #endif /* FILLP_DYMM_INCREASE_STEP_RECV */
162 
163 #ifndef FILLP_INST_UNSEND_BOX_SIZE
164 #define FILLP_INST_UNSEND_BOX_SIZE 819200
165 #endif
166 
167 #ifndef FILLP_DYMM_INST_RECV_BUF_SIZE
168 #define FILLP_DYMM_INST_RECV_BUF_SIZE 819200
169 #endif
170 
171 #ifndef FILLP_DYMM_INST_SEND_BUF_SIZE
172 #define FILLP_DYMM_INST_SEND_BUF_SIZE 819200
173 #endif
174 
175 #ifndef FILLP_PRIV_RECV_SIZE
176 #define FILLP_PRIV_RECV_SIZE 10
177 #endif
178 
179 #ifndef FILLP_DEFAULT_APP_TX_BURST
180 /* GlobalAppResource structure default values start */
181 #ifdef FILLP_LINUX
182 #define FILLP_DEFAULT_APP_TX_BURST 102400 /* tx burst */
183 #else
184 #define FILLP_DEFAULT_APP_TX_BURST 1400 /* tx burst */
185 #endif
186 #endif
187 
188 #ifndef FILLP_DEFAULT_RX_BURST
189 /* GlobalResource structure default values start */
190 #ifdef FILLP_LINUX
191 
192 #define FILLP_DEFAULT_RX_BURST 102400 /* max pkt number to recv each cycle */
193 #else
194 #define FILLP_DEFAULT_RX_BURST 1400 /* max pkt number to recv each cycle */
195 #endif
196 #endif
197 
198 #ifndef FILLP_DEFAULT_DISCONNECT_TIMER_INTERVAL
199 #define FILLP_DEFAULT_DISCONNECT_TIMER_INTERVAL 200 /* ms */
200 #endif
201 
202 #ifndef FILLP_DEFAULT_CONNECT_RETRY_TIMER_INTERVAL
203 #define FILLP_DEFAULT_CONNECT_RETRY_TIMER_INTERVAL 200 /* ms */
204 #endif
205 
206 #ifndef FILLP_DEFAULT_APP_CONNECT_TIMEOUT
207 #define FILLP_DEFAULT_APP_CONNECT_TIMEOUT (10 * 1000) /* ms */
208 #endif
209 
210 #ifndef FILLP_CPU_PAUSE_TIME
211 #define FILLP_CPU_PAUSE_TIME 100 /* sleep time */
212 #endif
213 
214 #ifndef FILLP_DEFAULT_NACK_DELAY_TIME
215 #define FILLP_DEFAULT_NACK_DELAY_TIME 20000
216 #endif
217 
218 #ifndef FILLP_DEFAULT_NACK_RETRY_LEN
219 #define FILLP_DEFAULT_NACK_RETRY_LEN 128
220 #endif
221 
222 #ifndef FILLP_DEFAULT_NACK_RETRY_NUM
223 #define FILLP_DEFAULT_NACK_RETRY_NUM 1
224 #endif
225 
226 #ifndef FILLP_DEFAULT_PACK_RETRY_NACK
227 #define FILLP_DEFAULT_PACK_RETRY_NACK FILLP_FALSE
228 #endif
229 
230 #ifndef FILLP_DEFAULT_ENLARGE_PACK_INTERVAL
231 #define FILLP_DEFAULT_ENLARGE_PACK_INTERVAL FILLP_TRUE
232 #endif
233 
234 #ifndef FILLP_UNSEND_BOX_LOOP_CHECK_BURST
235 
236 #define FILLP_UNSEND_BOX_LOOP_CHECK_BURST 1024
237 #endif
238 
239 #ifndef FILLP_DEFAULT_UDP_SEND_BUFSIZE
240 #ifdef FILLP_MAC
241 #define FILLP_DEFAULT_UDP_SEND_BUFSIZE (1 * 1024 * 1024) /* send buffer size */
242 #else
243 #define FILLP_DEFAULT_UDP_SEND_BUFSIZE (16 * 1024 * 1024) /* send buffer size */
244 #endif
245 #endif
246 
247 #ifndef FILLP_DEFAULT_UDP_RECV_BUFSIZE
248 #ifdef FILLP_MAC
249 #define FILLP_DEFAULT_UDP_RECV_BUFSIZE (1 * 1024 * 1024) /* recv buffer size */
250 #else
251 #define FILLP_DEFAULT_UDP_RECV_BUFSIZE (16 * 1024 * 1024) /* recv buffer size */
252 #endif
253 #endif
254 
255 #ifndef FILLP_DEFAULT_MAX_RECV_RATE
256 #define FILLP_DEFAULT_MAX_RECV_RATE FILLP_DEFAULT_MAX_RATE
257 #endif
258 
259 #ifndef FILLP_DEFAULT_RECV_CACHE_PKT_NUM_BUFFER_SIZE
260 #define FILLP_DEFAULT_RECV_CACHE_PKT_NUM_BUFFER_SIZE 100
261 #endif
262 
263 #ifndef FILLP_DEFAULT_RECV_CACHE_PKT_NUM_BUFFER_TIMEOUT
264 #define FILLP_DEFAULT_RECV_CACHE_PKT_NUM_BUFFER_TIMEOUT 25
265 #endif
266 
267 #ifndef FILLP_DEFAULT_BOUT_OF_ORDER_CACHE_FEATURE
268 #define FILLP_DEFAULT_BOUT_OF_ORDER_CACHE_FEATURE FILLP_FALSE
269 #endif
270 
271 #ifndef FILLP_DEFAULT_CPU_CORE_USE
272 #define FILLP_DEFAULT_CPU_CORE_USE 0
273 #endif
274 
275 #ifndef FILLP_DEFAULT_MIN_RATE
276 #define FILLP_DEFAULT_MIN_RATE 350
277 #endif
278 
279 #ifndef FILLP_DEFAULT_MMSG_SUPPORT
280 #define FILLP_DEFAULT_MMSG_SUPPORT FILLP_FALSE
281 #endif
282 
283 #ifndef FILLP_DEFAULT_UDP_SEND_MSG_NUM
284 #define FILLP_DEFAULT_UDP_SEND_MSG_NUM 1
285 #endif
286 
287 #ifndef FILLP_FC_PKT_LOSS_IN_RANGE_THRESHOLD
288 #define FILLP_FC_PKT_LOSS_IN_RANGE_THRESHOLD 15
289 #endif
290 
291 #ifndef FILLP_FC_PKT_LOSS_PROBE_THRESH_MAX
292 #define FILLP_FC_PKT_LOSS_PROBE_THRESH_MAX 3
293 #endif
294 
295 #ifndef FILLP_FC_PKT_LOSS_PROBE_THRESH_MIN
296 #define FILLP_FC_PKT_LOSS_PROBE_THRESH_MIN 2
297 #endif
298 
299 #ifndef FILLP_FC_MULTI_ADJUST_CONST
300 #define FILLP_FC_MULTI_ADJUST_CONST 1.00
301 #endif
302 
303 #ifndef FILLP_FLOW_CONTROL_MULTI_NUM_STEP
304 #define FILLP_FLOW_CONTROL_MULTI_NUM_STEP 0.10
305 #endif
306 
307 #ifndef FILLP_FC_NINETY_PERCENT_VAL
308 #define FILLP_FC_NINETY_PERCENT_VAL(value) ((value) * 0.8)
309 #endif
310 
311 #ifndef FILLP_FLOW_CONTROL_MULTI_NUM_INITIAL_VAL
312 #define FILLP_FLOW_CONTROL_MULTI_NUM_INITIAL_VAL 2.4
313 #endif
314 
315 #ifndef FILLP_RETRANSMIT_CMP_TIME
316 #define FILLP_RETRANSMIT_CMP_TIME 1
317 #endif
318 
319 #ifndef FILLP_LOG_WITH_TIME
320 #define FILLP_LOG_WITH_TIME 1
321 #endif
322 
323 #ifndef FILLP_DYMM_INIT_SEND_SIZE
324 #define FILLP_DYMM_INIT_SEND_SIZE 4096
325 #endif
326 
327 #ifndef FILLP_DYMM_INIT_RECV_SIZE
328 #define FILLP_DYMM_INIT_RECV_SIZE 4096
329 #endif
330 
331 #ifndef FILLP_APP_FC_STASTICS_INTERVAL
332 #define FILLP_APP_FC_STASTICS_INTERVAL (500 * 1000) // 500ms
333 #endif
334 
335 #ifndef FILLP_APP_FC_STASTICS_MAX_INTERVAL
336 #define FILLP_APP_FC_STASTICS_MAX_INTERVAL (1000 * 1000) // 1s
337 #endif
338 
339 #ifndef FILLP_DEFAULT_CONST_RATE_ENABLE
340 #define FILLP_DEFAULT_CONST_RATE_ENABLE FILLP_FALSE
341 #endif
342 
343 #ifndef FILLP_FRAME_MTU
344 #define FILLP_FRAME_MTU 1500
345 #endif
346 
347 #ifndef FILLP_HLEN
348 #define FILLP_HLEN 12
349 #endif
350 
351 #ifndef FILLP_MAX_SEND_INTERVAL
352 #define FILLP_MAX_SEND_INTERVAL (10000 << 3)
353 #endif
354 
355 #ifndef FILLP_MAX_CONNECT_TIMEOUT
356 #define FILLP_MAX_CONNECT_TIMEOUT (300 * 1000) /* ms */
357 #endif
358 
359 #ifndef FILLP_MAX_CONNECT_RETRY_TIMER_INTERVAL
360 #define FILLP_MAX_CONNECT_RETRY_TIMER_INTERVAL (10 * 1000) /* ms */
361 #endif
362 
363 #ifndef FILLP_MAX_DISCONNECT_TIMER_INTERVAL
364 #define FILLP_MAX_DISCONNECT_TIMER_INTERVAL (10 * 1000) /* ms */
365 #endif
366 
367 #ifndef FILLP_MAX_KEEP_ALIVE_TIME
368 #define FILLP_MAX_KEEP_ALIVE_TIME (3600 * 1000) // ms
369 #endif
370 
371 #ifndef FILLP_MIN_KEEP_ALIVE_TIMER
372 #define FILLP_MIN_KEEP_ALIVE_TIMER 100 // ms
373 #endif
374 
375 #ifndef FILLP_MAX_SOCK_NUMBER
376 #define FILLP_MAX_SOCK_NUMBER (1024 * 2)
377 #endif
378 
379 #ifndef FILLP_MAX_CONN_NUMBER
380 #define FILLP_MAX_CONN_NUMBER (1024 * 2)
381 #endif
382 
383 #ifndef FILLP_MAX_STACK_OPPOSITE_SET_RATE
384 #define FILLP_MAX_STACK_OPPOSITE_SET_RATE (10 * 1000 * 1000) /* max opposite set rate value */
385 #endif
386 
387 #ifndef FILLP_MAX_TX_RX_BURST
388 #define FILLP_MAX_TX_RX_BURST 0x7fff
389 #endif
390 
391 #ifndef FILLP_MIN_APP_PACK_INTERVAL
392 #define FILLP_MIN_APP_PACK_INTERVAL (1 * 1000) /* (1 * 1000)us */
393 #endif
394 
395 #ifndef FILLP_MAX_APP_PACK_INTERVAL
396 #define FILLP_MAX_APP_PACK_INTERVAL (1000 * 1000) /* (1000 * 1000)us */
397 #endif
398 
399 /* App have to take care when configuring tx burst, because if it
400                                       is configured as big value, then the no of cycles of sending the
401                                             data will be more. This will make performance dip to the app */
402 /* In FillpProcessConnConfirm, there is a multiplication with pktSize which
403    should not cross the FILLP_MAX_INT_VALUE. As the pktSize cannot be exceeded
404    more than 1500, below MAX value is changed from 0x7FFFFFFF to 1431648 (0x15D860).
405    This is at the server side, default value is 81920. Thed MAX value is big
406    enough for real time usecase scenario, hence no impact with this change
407 */
408 #ifndef FILLP_MAX_SERVER_ALLOW_SEND_RECV_CACHE
409 #define FILLP_MAX_SERVER_ALLOW_SEND_RECV_CACHE 0x15D860 /* max server allow send or recv cache */
410 #endif
411 
412 #ifndef FILLP_MAX_ALLOW_SEND_RECV_CACHE
413 #define FILLP_MAX_ALLOW_SEND_RECV_CACHE FILLP_MAX_SERVER_ALLOW_SEND_RECV_CACHE /* Max allow send or recv cache */
414 #endif
415 
416 #ifndef FILLP_MAX_TIMER_RECV_CACHE_PKT_NUMBUFF
417 #define FILLP_MAX_TIMER_RECV_CACHE_PKT_NUMBUFF 300 /* max value of recv catche  number buffer timer */
418 #endif
419 
420 #ifndef FILLP_MIN_TIMER_RECV_CACHE_PKT_NUMBUFF
421 #define FILLP_MIN_TIMER_RECV_CACHE_PKT_NUMBUFF 10 /* min value of recv catche  number buffer timer */
422 #endif
423 
424 #ifndef FILLP_MAX_STACK_RECV_CACHE_PKT_NUM_BUFF_SIZE
425 #define FILLP_MAX_STACK_RECV_CACHE_PKT_NUM_BUFF_SIZE 10000 /* max value of stacak recv catche pakt num buff size */
426 #endif
427 
428 #ifndef FILLP_MAX_STACK_OPPOSITE_SET_PERCENTAGE
429 #define FILLP_MAX_STACK_OPPOSITE_SET_PERCENTAGE 100 /* max value of stack opposite set percentage */
430 #endif
431 
432 #ifndef FILLP_MAX_STACK_NACK_REPEAT_TIMES
433 #define FILLP_MAX_STACK_NACK_REPEAT_TIMES 0xFF /* max stack nack repeat times */
434 #endif
435 
436 #ifndef FILLP_MAX_STACK_PACKET_LOSS_ALLOWED
437 #define FILLP_MAX_STACK_PACKET_LOSS_ALLOWED 100 /* max packet loss allowed */
438 #endif
439 
440 #ifndef FILLP_MAX_STACK_RATE_PERCENTAGE
441 #define FILLP_MAX_STACK_RATE_PERCENTAGE 100 /* max stack rate percentage */
442 #endif
443 
444 #ifndef FILLP_DEFAULT_DAT_OPT_TIMESTAMP_ENABLE
445 #define FILLP_DEFAULT_DAT_OPT_TIMESTAMP_ENABLE FILLP_FALSE
446 #endif
447 
448 #ifndef FILLP_MAXIMAL_ACK_NUM_LIMITATION
449 #define FILLP_MAXIMAL_ACK_NUM_LIMITATION 0
450 #endif
451 
452 #ifndef FILLP_SEND_ONE_ACK_NUM
453 #define FILLP_SEND_ONE_ACK_NUM 0
454 #endif
455 
456 #ifndef MAX_RANDOM_LEV
457 #define MAX_RANDOM_LEV 1024
458 #endif
459 
460 #ifndef FILLP_UNACK_HASH_SIZE
461 #define FILLP_UNACK_HASH_SIZE 512
462 #endif
463 
464 #ifndef FILLP_MAX_PKTSEQ_HASH_SIZE
465 #define FILLP_MAX_PKTSEQ_HASH_SIZE 512    // Be sure it is power of 2
466 #endif
467 
468 #ifndef FILLP_DEFAULT_STACK_CORE_LIMIT_RATE
469 #define FILLP_DEFAULT_STACK_CORE_LIMIT_RATE 0
470 #endif
471 
472 #ifndef FILLP_FC_PKT_LOSS_PROBE_THRESH_MAX_EXT
473 #define FILLP_FC_PKT_LOSS_PROBE_THRESH_MAX_EXT 5
474 #endif
475 
476 #ifndef FILLP_TIMING_WHEEL_ACCURACY_EXT
477 #define FILLP_TIMING_WHEEL_ACCURACY_EXT 64
478 #endif
479 
480 #ifndef FILLP_MAXIMAL_ACK_NUM_LIMITATION_EXT
481 #define FILLP_MAXIMAL_ACK_NUM_LIMITATION_EXT 0
482 #endif
483 
484 #ifndef FILLP_SEND_ONE_ACK_NUM_EXT
485 #define FILLP_SEND_ONE_ACK_NUM_EXT 0
486 #endif
487 
488 #ifndef FILLP_CPU_PAUSE_TIME_EXT
489 #define FILLP_CPU_PAUSE_TIME_EXT 100
490 #endif
491 
492 #ifndef FILLP_RETRANSMIT_CMP_TIME_EXT
493 #define FILLP_RETRANSMIT_CMP_TIME_EXT 1
494 #endif
495 
496 #ifndef FILLP_DEFAULT_MIN_RATE_EXT
497 #define FILLP_DEFAULT_MIN_RATE_EXT 500
498 #endif
499 
500 #ifndef FILLP_MIN_PACK_INTERVAL_EXT
501 #define FILLP_MIN_PACK_INTERVAL_EXT 30000
502 #endif
503 
504 #ifndef FILLP_UNSEND_BOX_LOOP_CHECK_BURST_EXT
505 #define FILLP_UNSEND_BOX_LOOP_CHECK_BURST_EXT 1024
506 #endif
507 
508 #ifndef FILLP_INST_UNSEND_BOX_SIZE_EXT
509 #define FILLP_INST_UNSEND_BOX_SIZE_EXT 8192
510 #endif
511 
512 #ifndef FILLP_DEFAULT_NACK_RETRY_LEN_EXT
513 #define FILLP_DEFAULT_NACK_RETRY_LEN_EXT 120
514 #endif
515 
516 #ifndef FILLP_FLOW_CONTROL_MULTI_NUM_INITIAL_VAL_EXT
517 #define FILLP_FLOW_CONTROL_MULTI_NUM_INITIAL_VAL_EXT 2.4
518 #endif
519 
520 #ifndef FILLP_FC_MULTI_ADJUST_CONST_EXT
521 #define FILLP_FC_MULTI_ADJUST_CONST_EXT 1.2
522 #endif
523 
524 #ifndef FILLP_FLOW_CONTROL_MULTI_NUM_STEP_EXT
525 #define FILLP_FLOW_CONTROL_MULTI_NUM_STEP_EXT 0.042
526 #endif
527 
528 #ifndef FILLP_FC_NINETY_PERCENT_VAL_EXT
529 #define FILLP_FC_NINETY_PERCENT_VAL_EXT 0.8
530 #endif
531 
532 #ifndef FILLP_DEFAULT_BFULL_CPU_THRESHOLD_RATE_EXT
533 #define FILLP_DEFAULT_BFULL_CPU_THRESHOLD_RATE_EXT (500 * 1000) /* In kbps */
534 #endif
535 
536 #ifndef FILLP_DEFAULT_DESTROY_STACK_WITHOUT_WAIT_SOCKET_CLOSE
537 #define FILLP_DEFAULT_DESTROY_STACK_WITHOUT_WAIT_SOCKET_CLOSE FILLP_FALSE
538 #endif
539 
540 #ifndef FILLP_DEFAULT_SUPPORT_CHARACTERS
541 #define FILLP_DEFAULT_SUPPORT_CHARACTERS 0
542 #endif
543 
544 #ifndef FILLP_DEFAULT_RECVBOX_BRUST
545 #define FILLP_DEFAULT_RECVBOX_BRUST 100
546 #endif
547 
548 #ifdef __cplusplus
549 }
550 #endif /* __cplusplus */
551 
552 #endif /* FILLP_PDT_FLOWCONTROL_H */
553