Merge branch 'upstream'
[sfrench/cifs-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_stats stats;
28         struct net_device *dev;
29         int  (*hard_start_xmit) (struct sk_buff *skb,
30                 struct net_device *dev);
31         int  (*hard_header) (struct sk_buff *skb,
32                 struct net_device *dev,
33                 unsigned short type,
34                 void *daddr,
35                 void *saddr,
36                 unsigned len);
37         int  (*rebuild_header)(struct sk_buff *skb);
38         int (*hard_header_cache)(struct neighbour *neigh, struct hh_cache *hh);
39         void (*header_cache_update)(struct hh_cache *hh, struct net_device *dev, unsigned char *  haddr);
40         struct net_device_stats* (*get_stats)(struct net_device *dev);
41         struct timer_list timer;
42 };
43
44 #endif
45
46 #define SHAPER_SET_DEV          0x0001
47 #define SHAPER_SET_SPEED        0x0002
48 #define SHAPER_GET_DEV          0x0003
49 #define SHAPER_GET_SPEED        0x0004
50
51 struct shaperconf
52 {
53         __u16   ss_cmd;
54         union
55         {
56                 char    ssu_name[14];
57                 __u32   ssu_speed;
58         } ss_u;
59 #define ss_speed ss_u.ssu_speed
60 #define ss_name ss_u.ssu_name
61 };
62
63 #endif