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