Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 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 net_device_stats stats; |
||
62 | struct timer_list timer; |
||
63 | } equalizer_t; |
||
64 | |||
65 | #endif /* __KERNEL__ */ |
||
66 | |||
67 | typedef struct master_config { |
||
68 | char master_name[16]; |
||
69 | int max_slaves; |
||
70 | int min_slaves; |
||
71 | } master_config_t; |
||
72 | |||
73 | typedef struct slave_config { |
||
74 | char slave_name[16]; |
||
75 | long priority; |
||
76 | } slave_config_t; |
||
77 | |||
78 | typedef struct slaving_request { |
||
79 | char slave_name[16]; |
||
80 | long priority; |
||
81 | } slaving_request_t; |
||
82 | |||
83 | |||
84 | #endif /* _LINUX_EQL_H */ |