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 HZ 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 41typedef 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 50typedef 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 57typedef 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 66typedef struct master_config { 67 char master_name[16]; 68 int max_slaves; 69 int min_slaves; 70} master_config_t; 71 72typedef struct slave_config { 73 char slave_name[16]; 74 long priority; 75} slave_config_t; 76 77typedef struct slaving_request { 78 char slave_name[16]; 79 long priority; 80} slaving_request_t; 81 82 83#endif /* _LINUX_EQL_H */ 84