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