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