Commit | Line | Data |
---|---|---|
1da177e4 LT |
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; | |
1da177e4 LT |
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 */ |