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 19 #ifndef _LINUX_IF_EQL_H 20 #define _LINUX_IF_EQL_H 21 22 #define EQL_DEFAULT_SLAVE_PRIORITY 28800 23 #define EQL_DEFAULT_MAX_SLAVES 4 24 #define EQL_DEFAULT_MTU 576 25 #define EQL_DEFAULT_RESCHED_IVAL 100 26 27 #define EQL_ENSLAVE (SIOCDEVPRIVATE) 28 #define EQL_EMANCIPATE (SIOCDEVPRIVATE + 1) 29 30 #define EQL_GETSLAVECFG (SIOCDEVPRIVATE + 2) 31 #define EQL_SETSLAVECFG (SIOCDEVPRIVATE + 3) 32 33 #define EQL_GETMASTRCFG (SIOCDEVPRIVATE + 4) 34 #define EQL_SETMASTRCFG (SIOCDEVPRIVATE + 5) 35 36 #ifdef __KERNEL__ 37 38 #include <linux/timer.h> 39 #include <linux/spinlock.h> 40 41 typedef struct slave { 42 struct list_head list; 43 struct net_device *dev; 44 long priority; 45 long priority_bps; 46 long priority_Bps; 47 long bytes_queued; 48 } slave_t; 49 50 typedef struct slave_queue { 51 spinlock_t lock; 52 struct list_head all_slaves; 53 int num_slaves; 54 struct net_device *master_dev; 55 } slave_queue_t; 56 57 typedef struct equalizer { 58 slave_queue_t queue; 59 int min_slaves; 60 int max_slaves; 61 struct timer_list timer; 62 } equalizer_t; 63 64 #endif /* __KERNEL__ */ 65 66 typedef struct master_config { 67 char master_name[16]; 68 int max_slaves; 69 int min_slaves; 70 } master_config_t; 71 72 typedef struct slave_config { 73 char slave_name[16]; 74 long priority; 75 } slave_config_t; 76 77 typedef struct slaving_request { 78 char slave_name[16]; 79 long priority; 80 } slaving_request_t; 81 82 83 #endif /* _LINUX_EQL_H */ 84