if_eql.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Equalizer Load-balancer for serial network interfaces.
  3. *
  4. * (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
  5. * NCM: Network and Communications Management, Inc.
  6. *
  7. *
  8. * This software may be used and distributed according to the terms
  9. * of the GNU General Public License, incorporated herein by reference.
  10. *
  11. * The author may be reached as simon@ncm.com, or C/O
  12. * NCM
  13. * Attn: Simon Janes
  14. * 6803 Whittier Ave
  15. * McLean VA 22101
  16. * Phone: 1-703-847-0040 ext 103
  17. */
  18. #ifndef _LINUX_IF_EQL_H
  19. #define _LINUX_IF_EQL_H
  20. #define EQL_DEFAULT_SLAVE_PRIORITY 28800
  21. #define EQL_DEFAULT_MAX_SLAVES 4
  22. #define EQL_DEFAULT_MTU 576
  23. #define EQL_DEFAULT_RESCHED_IVAL 100
  24. #define EQL_ENSLAVE (SIOCDEVPRIVATE)
  25. #define EQL_EMANCIPATE (SIOCDEVPRIVATE + 1)
  26. #define EQL_GETSLAVECFG (SIOCDEVPRIVATE + 2)
  27. #define EQL_SETSLAVECFG (SIOCDEVPRIVATE + 3)
  28. #define EQL_GETMASTRCFG (SIOCDEVPRIVATE + 4)
  29. #define EQL_SETMASTRCFG (SIOCDEVPRIVATE + 5)
  30. #ifdef __KERNEL__
  31. #include <linux/timer.h>
  32. #include <linux/spinlock.h>
  33. typedef struct slave {
  34. struct list_head list;
  35. struct net_device *dev;
  36. long priority;
  37. long priority_bps;
  38. long priority_Bps;
  39. long bytes_queued;
  40. } slave_t;
  41. typedef struct slave_queue {
  42. spinlock_t lock;
  43. struct list_head all_slaves;
  44. int num_slaves;
  45. struct net_device *master_dev;
  46. } slave_queue_t;
  47. typedef struct equalizer {
  48. slave_queue_t queue;
  49. int min_slaves;
  50. int max_slaves;
  51. struct net_device_stats stats;
  52. struct timer_list timer;
  53. } equalizer_t;
  54. #endif /* __KERNEL__ */
  55. typedef struct master_config {
  56. char master_name[16];
  57. int max_slaves;
  58. int min_slaves;
  59. } master_config_t;
  60. typedef struct slave_config {
  61. char slave_name[16];
  62. long priority;
  63. } slave_config_t;
  64. typedef struct slaving_request {
  65. char slave_name[16];
  66. long priority;
  67. } slaving_request_t;
  68. #endif /* _LINUX_EQL_H */