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