xref: /linux-6.15/include/linux/if_eql.h (revision 5f10376b)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * Equalizer Load-balancer for serial network interfaces.
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
51da177e4SLinus Torvalds  * NCM: Network and Communications Management, Inc.
61da177e4SLinus Torvalds  *
71da177e4SLinus Torvalds  *
81da177e4SLinus Torvalds  *	This software may be used and distributed according to the terms
91da177e4SLinus Torvalds  *	of the GNU General Public License, incorporated herein by reference.
101da177e4SLinus Torvalds  *
111da177e4SLinus Torvalds  * The author may be reached as [email protected], or C/O
121da177e4SLinus Torvalds  *    NCM
131da177e4SLinus Torvalds  *    Attn: Simon Janes
141da177e4SLinus Torvalds  *    6803 Whittier Ave
151da177e4SLinus Torvalds  *    McLean VA 22101
161da177e4SLinus Torvalds  *    Phone: 1-703-847-0040 ext 103
171da177e4SLinus Torvalds  */
181da177e4SLinus Torvalds #ifndef _LINUX_IF_EQL_H
191da177e4SLinus Torvalds #define _LINUX_IF_EQL_H
201da177e4SLinus Torvalds 
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds #include <linux/timer.h>
231da177e4SLinus Torvalds #include <linux/spinlock.h>
24*5f10376bSJakub Kicinski #include <net/net_trackers.h>
25607ca46eSDavid Howells #include <uapi/linux/if_eql.h>
261da177e4SLinus Torvalds 
271da177e4SLinus Torvalds typedef struct slave {
281da177e4SLinus Torvalds 	struct list_head	list;
291da177e4SLinus Torvalds 	struct net_device	*dev;
3008f0b22dSEric Dumazet 	netdevice_tracker	dev_tracker;
311da177e4SLinus Torvalds 	long			priority;
321da177e4SLinus Torvalds 	long			priority_bps;
331da177e4SLinus Torvalds 	long			priority_Bps;
341da177e4SLinus Torvalds 	long			bytes_queued;
351da177e4SLinus Torvalds } slave_t;
361da177e4SLinus Torvalds 
371da177e4SLinus Torvalds typedef struct slave_queue {
381da177e4SLinus Torvalds 	spinlock_t		lock;
391da177e4SLinus Torvalds 	struct list_head	all_slaves;
401da177e4SLinus Torvalds 	int			num_slaves;
411da177e4SLinus Torvalds 	struct net_device	*master_dev;
421da177e4SLinus Torvalds } slave_queue_t;
431da177e4SLinus Torvalds 
441da177e4SLinus Torvalds typedef struct equalizer {
451da177e4SLinus Torvalds 	slave_queue_t		queue;
461da177e4SLinus Torvalds 	int			min_slaves;
471da177e4SLinus Torvalds 	int			max_slaves;
481da177e4SLinus Torvalds 	struct timer_list	timer;
491da177e4SLinus Torvalds } equalizer_t;
501da177e4SLinus Torvalds 
511da177e4SLinus Torvalds #endif /* _LINUX_EQL_H */
52