mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2024-11-15 22:15:13 +08:00
abf70ef494
Using a 32 bit field to represent time in nanoseconds results in a maximum value of about 4.3 seconds, which is well below many observed delays in WiFi and LTE, and barely in the ballpark for a trip past the Earth's moon, Luna. Using 64 bit time fields in nanoseconds allows us to simulate network diameters of several hundred light-years. However, only conversions to and from ns, us, ms, and seconds are provided. The iproute2 64 bit api uses signed values for time. Being able to represent positive or negative time allows us to calculate +/- deltas between, for example, the CLOCK_TAI and CLOCK_REALTIME clocks. Time related utility functions in tc_util.c are moved to lib/utils.c. Signed-off-by: Yousuk Seung <ysseung@google.com> Signed-off-by: Dave Taht <dave.taht@gmail.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David Ahern <dsahern@gmail.com>
34 lines
891 B
C
34 lines
891 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _TC_CORE_H_
|
|
#define _TC_CORE_H_ 1
|
|
|
|
#include <asm/types.h>
|
|
#include <linux/pkt_sched.h>
|
|
|
|
enum link_layer {
|
|
LINKLAYER_UNSPEC,
|
|
LINKLAYER_ETHERNET,
|
|
LINKLAYER_ATM,
|
|
};
|
|
|
|
|
|
int tc_core_time2big(unsigned time);
|
|
unsigned tc_core_time2tick(unsigned time);
|
|
unsigned tc_core_tick2time(unsigned tick);
|
|
unsigned tc_core_time2ktime(unsigned time);
|
|
unsigned tc_core_ktime2time(unsigned ktime);
|
|
unsigned tc_calc_xmittime(__u64 rate, unsigned size);
|
|
unsigned tc_calc_xmitsize(__u64 rate, unsigned ticks);
|
|
int tc_calc_rtable(struct tc_ratespec *r, __u32 *rtab,
|
|
int cell_log, unsigned mtu, enum link_layer link_layer);
|
|
int tc_calc_size_table(struct tc_sizespec *s, __u16 **stab);
|
|
|
|
int tc_setup_estimator(unsigned A, unsigned time_const, struct tc_estimator *est);
|
|
|
|
int tc_core_init(void);
|
|
|
|
extern struct rtnl_handle g_rth;
|
|
extern int is_batch_mode;
|
|
|
|
#endif
|