xref: /OK3568_Linux_fs/kernel/include/linux/if_eql.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Equalizer Load-balancer for serial network interfaces.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
5*4882a593Smuzhiyun  * NCM: Network and Communications Management, Inc.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *	This software may be used and distributed according to the terms
9*4882a593Smuzhiyun  *	of the GNU General Public License, incorporated herein by reference.
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  * The author may be reached as simon@ncm.com, or C/O
12*4882a593Smuzhiyun  *    NCM
13*4882a593Smuzhiyun  *    Attn: Simon Janes
14*4882a593Smuzhiyun  *    6803 Whittier Ave
15*4882a593Smuzhiyun  *    McLean VA 22101
16*4882a593Smuzhiyun  *    Phone: 1-703-847-0040 ext 103
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun #ifndef _LINUX_IF_EQL_H
19*4882a593Smuzhiyun #define _LINUX_IF_EQL_H
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #include <linux/timer.h>
23*4882a593Smuzhiyun #include <linux/spinlock.h>
24*4882a593Smuzhiyun #include <uapi/linux/if_eql.h>
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun typedef struct slave {
27*4882a593Smuzhiyun 	struct list_head	list;
28*4882a593Smuzhiyun 	struct net_device	*dev;
29*4882a593Smuzhiyun 	long			priority;
30*4882a593Smuzhiyun 	long			priority_bps;
31*4882a593Smuzhiyun 	long			priority_Bps;
32*4882a593Smuzhiyun 	long			bytes_queued;
33*4882a593Smuzhiyun } slave_t;
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun typedef struct slave_queue {
36*4882a593Smuzhiyun 	spinlock_t		lock;
37*4882a593Smuzhiyun 	struct list_head	all_slaves;
38*4882a593Smuzhiyun 	int			num_slaves;
39*4882a593Smuzhiyun 	struct net_device	*master_dev;
40*4882a593Smuzhiyun } slave_queue_t;
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun typedef struct equalizer {
43*4882a593Smuzhiyun 	slave_queue_t		queue;
44*4882a593Smuzhiyun 	int			min_slaves;
45*4882a593Smuzhiyun 	int			max_slaves;
46*4882a593Smuzhiyun 	struct timer_list	timer;
47*4882a593Smuzhiyun } equalizer_t;
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun #endif /* _LINUX_EQL_H */
50