if_shaper.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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