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 (5L*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 unsigned long locked; 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 wait_queue_head_t wait_queue; 42 struct timer_list timer; 43 }; 44 45 #endif 46 47 #define SHAPER_SET_DEV 0x0001 48 #define SHAPER_SET_SPEED 0x0002 49 #define SHAPER_GET_DEV 0x0003 50 #define SHAPER_GET_SPEED 0x0004 51 52 struct shaperconf 53 { 54 __u16 ss_cmd; 55 union 56 { 57 char ssu_name[14]; 58 __u32 ssu_speed; 59 } ss_u; 60 #define ss_speed ss_u.ssu_speed 61 #define ss_name ss_u.ssu_name 62 }; 63 64 #endif 65