3b1b7ba198250955db9e53da9d7006e0616149f9
[linux-2.6.git] / include / linux / if_shaper.h
1 #ifndef __LINUX_SHAPER_H
2 #define __LINUX_SHAPER_H
3
4 #ifdef __KERNEL__
5
6 #define SHAPER_QLEN     10
7 /*
8  *      This is a bit speed dependent (read it shouldn't be a constant!)
9  *
10  *      5 is about right for 28.8 upwards. Below that double for every
11  *      halving of speed or so. - ie about 20 for 9600 baud.
12  */
13 #define SHAPER_LATENCY  (5*HZ)
14 #define SHAPER_MAXSLIP  2
15 #define SHAPER_BURST    (HZ/50)         /* Good for >128K then */
16
17 struct shaper
18 {
19         struct sk_buff_head sendq;
20         __u32 bytespertick;
21         __u32 bitspersec;
22         __u32 shapelatency;
23         __u32 shapeclock;
24         unsigned long recovery; /* Time we can next clock a packet out on
25                                    an empty queue */
26         spinlock_t lock;
27         struct net_device *dev;
28         struct net_device_stats* (*get_stats)(struct net_device *dev);
29         struct timer_list timer;
30 };
31
32 #endif
33
34 #define SHAPER_SET_DEV          0x0001
35 #define SHAPER_SET_SPEED        0x0002
36 #define SHAPER_GET_DEV          0x0003
37 #define SHAPER_GET_SPEED        0x0004
38
39 struct shaperconf
40 {
41         __u16   ss_cmd;
42         union
43         {
44                 char    ssu_name[14];
45                 __u32   ssu_speed;
46         } ss_u;
47 #define ss_speed ss_u.ssu_speed
48 #define ss_name ss_u.ssu_name
49 };
50
51 #endif