Blame view
include/net/pkt_sched.h
3.33 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 |
#ifndef __NET_PKT_SCHED_H #define __NET_PKT_SCHED_H |
538e43a4b [PKT_SCHED]: Use ... |
3 |
#include <linux/jiffies.h> |
641b9e0e8 [NET_SCHED]: Use ... |
4 |
#include <linux/ktime.h> |
1da177e4c Linux-2.6.12-rc2 |
5 |
#include <net/sch_generic.h> |
fd2c3ef76 net: cleanup incl... |
6 |
struct qdisc_walker { |
1da177e4c Linux-2.6.12-rc2 |
7 8 9 10 11 |
int stop; int skip; int count; int (*fn)(struct Qdisc *, unsigned long cl, struct qdisc_walker *); }; |
5d944c640 gen_estimator: de... |
12 |
#define QDISC_ALIGNTO 64 |
3d54b82fd [PKT_SCHED]: Clea... |
13 |
#define QDISC_ALIGN(len) (((len) + QDISC_ALIGNTO-1) & ~(QDISC_ALIGNTO-1)) |
1da177e4c Linux-2.6.12-rc2 |
14 15 16 |
static inline void *qdisc_priv(struct Qdisc *q) { |
3d54b82fd [PKT_SCHED]: Clea... |
17 |
return (char *) q + QDISC_ALIGN(sizeof(struct Qdisc)); |
1da177e4c Linux-2.6.12-rc2 |
18 19 20 21 22 23 24 25 26 27 28 29 30 |
} /* Timer resolution MUST BE < 10% of min_schedulable_packet_size/bandwidth Normal IP packet size ~ 512byte, hence: 0.5Kbyte/1Mbyte/sec = 0.5msec, so that we need 50usec timer for 10Mbit ethernet. 10msec resolution -> <50Kbit/sec. The result: [34]86 is not good choice for QoS router :-( |
25985edce Fix common misspe... |
31 |
The things are not so bad, because we may use artificial |
1da177e4c Linux-2.6.12-rc2 |
32 33 |
clock evaluated by integration of network data flow in the most critical places. |
1da177e4c Linux-2.6.12-rc2 |
34 |
*/ |
1da177e4c Linux-2.6.12-rc2 |
35 36 |
typedef u64 psched_time_t; typedef long psched_tdiff_t; |
a4a710c4a pkt_sched: Change... |
37 38 |
/* Avoid doing 64 bit divide */ #define PSCHED_SHIFT 6 |
ca44d6e60 pkt_sched: Rename... |
39 40 |
#define PSCHED_TICKS2NS(x) ((s64)(x) << PSCHED_SHIFT) #define PSCHED_NS2TICKS(x) ((x) >> PSCHED_SHIFT) |
1da177e4c Linux-2.6.12-rc2 |
41 |
|
ca44d6e60 pkt_sched: Rename... |
42 |
#define PSCHED_TICKS_PER_SEC PSCHED_NS2TICKS(NSEC_PER_SEC) |
a084980dc [NET_SCHED]: kill... |
43 |
#define PSCHED_PASTPERFECT 0 |
1da177e4c Linux-2.6.12-rc2 |
44 |
|
3bebcda28 [NET_SCHED]: turn... |
45 46 |
static inline psched_time_t psched_get_time(void) { |
ca44d6e60 pkt_sched: Rename... |
47 |
return PSCHED_NS2TICKS(ktime_to_ns(ktime_get())); |
3bebcda28 [NET_SCHED]: turn... |
48 |
} |
03cc45c0a [NET_SCHED]: turn... |
49 50 51 52 53 |
static inline psched_tdiff_t psched_tdiff_bounded(psched_time_t tv1, psched_time_t tv2, psched_time_t bound) { return min(tv1 - tv2, bound); } |
4179477f6 [NET_SCHED]: Add ... |
54 55 56 57 58 59 60 61 62 |
struct qdisc_watchdog { struct hrtimer timer; struct Qdisc *qdisc; }; extern void qdisc_watchdog_init(struct qdisc_watchdog *wd, struct Qdisc *qdisc); extern void qdisc_watchdog_schedule(struct qdisc_watchdog *wd, psched_time_t expires); extern void qdisc_watchdog_cancel(struct qdisc_watchdog *wd); |
1da177e4c Linux-2.6.12-rc2 |
63 64 |
extern struct Qdisc_ops pfifo_qdisc_ops; extern struct Qdisc_ops bfifo_qdisc_ops; |
57dbb2d83 sched: add head d... |
65 |
extern struct Qdisc_ops pfifo_head_drop_qdisc_ops; |
1da177e4c Linux-2.6.12-rc2 |
66 |
|
fb0305ce1 net-sched: consol... |
67 68 69 |
extern int fifo_set_limit(struct Qdisc *q, unsigned int limit); extern struct Qdisc *fifo_create_dflt(struct Qdisc *sch, struct Qdisc_ops *ops, unsigned int limit); |
1da177e4c Linux-2.6.12-rc2 |
70 71 |
extern int register_qdisc(struct Qdisc_ops *qops); extern int unregister_qdisc(struct Qdisc_ops *qops); |
f6e0b239a pkt_sched: Fix qd... |
72 |
extern void qdisc_list_del(struct Qdisc *q); |
1da177e4c Linux-2.6.12-rc2 |
73 74 |
extern struct Qdisc *qdisc_lookup(struct net_device *dev, u32 handle); extern struct Qdisc *qdisc_lookup_class(struct net_device *dev, u32 handle); |
1da177e4c Linux-2.6.12-rc2 |
75 |
extern struct qdisc_rate_table *qdisc_get_rtab(struct tc_ratespec *r, |
1e90474c3 [NET_SCHED]: Conv... |
76 |
struct nlattr *tab); |
1da177e4c Linux-2.6.12-rc2 |
77 |
extern void qdisc_put_rtab(struct qdisc_rate_table *tab); |
175f9c1bb net_sched: Add si... |
78 |
extern void qdisc_put_stab(struct qdisc_size_table *tab); |
b00355db3 pkt_sched: sch_hf... |
79 |
extern void qdisc_warn_nonwc(char *txt, struct Qdisc *qdisc); |
bbd8a0d3a net: Avoid enqueu... |
80 81 82 |
extern int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q, struct net_device *dev, struct netdev_queue *txq, spinlock_t *root_lock); |
1da177e4c Linux-2.6.12-rc2 |
83 |
|
37437bb2e pkt_sched: Schedu... |
84 |
extern void __qdisc_run(struct Qdisc *q); |
1da177e4c Linux-2.6.12-rc2 |
85 |
|
37437bb2e pkt_sched: Schedu... |
86 |
static inline void qdisc_run(struct Qdisc *q) |
1da177e4c Linux-2.6.12-rc2 |
87 |
{ |
bc135b23d net: Define acces... |
88 |
if (qdisc_run_begin(q)) |
37437bb2e pkt_sched: Schedu... |
89 |
__qdisc_run(q); |
1da177e4c Linux-2.6.12-rc2 |
90 |
} |
dc7f9f6e8 net: sched: const... |
91 |
extern int tc_classify_compat(struct sk_buff *skb, const struct tcf_proto *tp, |
73ca4918f [NET_SCHED]: act_... |
92 |
struct tcf_result *res); |
dc7f9f6e8 net: sched: const... |
93 |
extern int tc_classify(struct sk_buff *skb, const struct tcf_proto *tp, |
73ca4918f [NET_SCHED]: act_... |
94 |
struct tcf_result *res); |
1da177e4c Linux-2.6.12-rc2 |
95 96 97 98 |
/* Calculate maximal size of packet seen by hard_start_xmit routine of this device. */ |
3b04ddde0 [NET]: Move hardw... |
99 |
static inline unsigned psched_mtu(const struct net_device *dev) |
1da177e4c Linux-2.6.12-rc2 |
100 |
{ |
3b04ddde0 [NET]: Move hardw... |
101 |
return dev->mtu + dev->hard_header_len; |
1da177e4c Linux-2.6.12-rc2 |
102 103 104 |
} #endif |