if_shaper.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. unsigned long recovery; /* Time we can next clock a packet out on
  22. an empty queue */
  23. spinlock_t lock;
  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. struct timer_list timer;
  39. };
  40. #endif
  41. #define SHAPER_SET_DEV 0x0001
  42. #define SHAPER_SET_SPEED 0x0002
  43. #define SHAPER_GET_DEV 0x0003
  44. #define SHAPER_GET_SPEED 0x0004
  45. struct shaperconf
  46. {
  47. __u16 ss_cmd;
  48. union
  49. {
  50. char ssu_name[14];
  51. __u32 ssu_speed;
  52. } ss_u;
  53. #define ss_speed ss_u.ssu_speed
  54. #define ss_name ss_u.ssu_name
  55. };
  56. #endif