twx-linux/include/uapi/linux
Jarod Wilson 7b8fc0103b bonding: add a vlan+srcmac tx hashing option
This comes from an end-user request, where they're running multiple VMs on
hosts with bonded interfaces connected to some interest switch topologies,
where 802.3ad isn't an option. They're currently running a proprietary
solution that effectively achieves load-balancing of VMs and bandwidth
utilization improvements with a similar form of transmission algorithm.

Basically, each VM has it's own vlan, so it always sends its traffic out
the same interface, unless that interface fails. Traffic gets split
between the interfaces, maintaining a consistent path, with failover still
available if an interface goes down.

Unlike bond_eth_hash(), this hash function is using the full source MAC
address instead of just the last byte, as there are so few components to
the hash, and in the no-vlan case, we would be returning just the last
byte of the source MAC as the hash value. It's entirely possible to have
two NICs in a bond with the same last byte of their MAC, but not the same
MAC, so this adjustment should guarantee distinct hashes in all cases.

This has been rudimetarily tested to provide similar results to the
proprietary solution it is aiming to replace. A patch for iproute2 is also
posted, to properly support the new mode there as well.

Cc: Jay Vosburgh <j.vosburgh@gmail.com>
Cc: Veaceslav Falico <vfalico@gmail.com>
Cc: Andy Gospodarek <andy@greyhouse.net>
Cc: Thomas Davis <tadavis@lbl.gov>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Link: https://lore.kernel.org/r/20210119010927.1191922-1-jarod@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-01-19 19:30:32 -08:00
..
android binder: add flag to clear buffer on txn complete 2020-12-09 15:41:21 +01:00
byteorder
caif
can can: isotp: add SF_BROADCAST support for functional addressing 2020-12-10 09:31:40 +01:00
cifs cifs: Set witness notification handler for messages from userspace daemon 2020-12-14 09:16:22 -06:00
dvb
genwqe
hdlc
hsi
iio
isdn
mmc
netfilter netfilter: nftables: add set expression flags 2020-12-28 10:50:26 +01:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
sched sched/uclamp: Allow to reset a task uclamp constraint value 2020-11-19 11:25:47 +01:00
spi
sunrpc
tc_act net/sched: act_mpls: Add action to push MPLS LSE before Ethernet header 2020-10-03 17:28:45 -07:00
tc_ematch
usb
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h
auto_dev-ioctl.h
auto_fs4.h
auto_fs.h
auxvec.h
ax25.h
batadv_packet.h
batman_adv.h batman-adv: Allow selection of routing algorithm over rtnetlink 2020-12-04 08:40:52 +01:00
baycom.h
bcache.h bcache: introduce BCH_FEATURE_INCOMPAT_LOG_LARGE_BUCKET_SIZE for large bucket 2021-01-09 09:21:03 -07:00
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h block: fix uapi blkzoned.h comments 2020-10-09 12:47:02 -06:00
bpf_common.h
bpf_perf_event.h
bpf.h bpf: Add instructions for atomic_[cmp]xchg 2021-01-14 18:34:29 -08:00
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs_tree.h btrfs: calculate inline extent buffer page size based on page size 2020-12-09 19:16:10 +01:00
btrfs.h btrfs: introduce ZONED feature flag 2020-12-08 15:54:16 +01:00
can.h can: add optional DLC element to Classical CAN frame structure 2020-11-20 09:43:29 +01:00
capability.h block: grant IOPRIO_CLASS_RT to CAP_SYS_NICE 2020-09-01 19:38:33 -06:00
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h block: scsi_ioctl: Avoid the use of one-element arrays 2020-10-02 17:58:52 -06:00
cec-funcs.h
cec.h
cfm_bridge.h bridge: cfm: Kernel space implementation of CFM. CCM frame RX added. 2020-10-29 18:39:43 -07:00
cgroupstats.h
chio.h
close_range.h fs, close_range: add flag CLOSE_RANGE_CLOEXEC 2020-12-04 12:06:15 +01:00
cm4000_cs.h
cn_proc.h
coda.h
coff.h
connector.h
const.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
coresight-stm.h coresight: stm: Support marked packet 2020-09-17 18:46:04 +02:00
cramfs_fs.h
cryptouser.h
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: use _BITUL() macro instead of BIT() in the UAPI header 2020-12-16 16:16:40 -08:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h dm: export dm_copy_name_and_uuid 2020-10-01 15:03:40 -04:00
dm-log-userspace.h
dma-buf.h
dma-heap.h
dn.h
dns_resolver.h
dqblk_xfs.h quota: Expand comment describing d_itimer 2020-09-10 09:10:06 +02:00
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h arm64: mte: ptrace: Add NT_ARM_TAGGED_ADDR_CTRL regset 2020-09-04 12:46:07 +01:00
errno.h
errqueue.h
erspan.h
ethtool_netlink.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-09-22 16:45:34 -07:00
ethtool.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
eventpoll.h
f2fs.h f2fs: add F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_COMPRESS_FILE 2020-12-03 00:12:08 -08:00
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
fou.h
fpga-dfl.h
fs.h
fscrypt.h fscrypt: remove kernel-internal constants from UAPI header 2020-11-16 11:41:12 -08:00
fsi.h
fsl_hypervisor.h
fsmap.h
fsverity.h fs-verity: move structs needed for file signing to UAPI header 2020-11-23 19:30:14 -08:00
fuse.h fuse: add a flag FUSE_OPEN_KILL_SUIDGID for open() request 2020-11-11 17:22:33 +01:00
futex.h
gameport.h
gen_stats.h
genetlink.h genetlink: allow dumping command-specific policy 2020-10-03 14:18:29 -07:00
gfs2_ondisk.h
gpio.h gpiolib: cdev: allow edge event timestamps to be configured as REALTIME 2020-12-05 23:22:47 +01:00
gsmmux.h
gtp.h GTP: add support for flow based tunneling API 2021-01-15 20:31:49 -08:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h HID: hidraw: Add additional hidraw input/output report ioctls. 2020-11-27 15:48:31 +01:00
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h ICMPv6: Add ICMPv6 Parameter Problem, code 3 definition 2020-10-31 13:16:02 -07:00
idxd.h dmaengine: idxd: add IAX configuration support in the IDXD driver 2020-12-11 19:45:53 +05:30
if_addr.h
if_addrlabel.h
if_alg.h crypto: af_alg - avoid undefined behavior accessing salg_name 2020-11-06 14:29:11 +11:00
if_arcnet.h
if_arp.h
if_bonding.h bonding: add a vlan+srcmac tx hashing option 2021-01-19 19:30:32 -08:00
if_bridge.h net: bridge: mcast: add support for raw L2 multicast groups 2020-10-30 17:49:19 -07:00
if_cablemodem.h
if_eql.h
if_ether.h bridge: uapi: cfm: Added EtherType used by the CFM protocol. 2020-10-29 18:39:43 -07:00
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h GTP: add support for flow based tunneling API 2021-01-15 20:31:49 -08:00
if_ltalk.h
if_macsec.h
if_packet.h net/packet: make packet_fanout.arr size configurable up to 64K 2020-11-09 16:41:40 -08:00
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h GTP: add support for flow based tunneling API 2021-01-15 20:31:49 -08:00
if_vlan.h
if_x25.h
if_xdp.h
if.h
ife.h
igmp.h
ila.h
in6.h
in_route.h
in.h net: Fix some comments 2020-08-27 07:55:59 -07:00
inet_diag.h ip: expose inet sockopts through inet_diag 2020-09-03 15:17:28 -07:00
inotify.h
input-event-codes.h Input: allocate keycode for Fn + right shift 2020-09-08 16:31:14 -07:00
input.h
io_uring.h io_uring: add timeout update 2020-12-09 12:04:01 -07:00
ioctl.h
iommu.h iommu/vt-d: Check UAPI data processed by IOMMU core 2020-10-01 14:52:46 +02:00
ip6_tunnel.h
ip_vs.h
ip.h
ipc.h
ipmi_bmc.h
ipmi_msgdefs.h ipmi:msghandler: retry to get device id on an error 2020-09-15 09:57:45 -05:00
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h
ipx.h
irqnr.h
iso_fs.h
isst_if.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
kcm.h
kcmp.h
kcov.h
kd.h console: Delete unused con_font_copy() callback implementations 2020-11-16 16:27:03 +01:00
kdev_t.h
kernel-page-flags.h
kernel.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
kernelcapi.h
kexec.h
keyboard.h vt: keyboard, sort key types by their number 2020-11-04 16:43:38 +01:00
keyctl.h
kfd_ioctl.h include/uapi/linux: Fix indentation in kfd_smi_event enum 2020-08-31 14:40:29 -04:00
kvm_para.h
kvm.h KVM: SVM: Add support for booting APs in an SEV-ES guest 2021-01-07 18:11:37 -05:00
l2tp.h l2tp: report rx cookie discards in netlink get 2020-09-29 13:26:36 -07:00
libc-compat.h
lightnvm.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
limits.h
lirc.h media: rc: improve LIRC documentation 2020-11-26 14:19:10 +01:00
llc.h
loop.h
lp.h
lwtunnel.h
magic.h
major.h
map_to_7segment.h
matroxfb.h
max2175.h
mdio.h
media-bus-format.h media updates for v5.11-rc1 2020-12-14 11:47:37 -08:00
media.h
mei.h
membarrier.h rseq/membarrier: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ 2020-09-25 14:23:27 +02:00
memfd.h
mempolicy.h
meye.h
mii.h
minix_fs.h
mman.h powerpc/8xx: Support 16k hugepages with 4k pages 2020-09-15 22:13:31 +10:00
mmtimer.h
module.h
mount.h Add a "nosymfollow" mount option. 2020-08-27 16:06:47 -04:00
mpls_iptunnel.h
mpls.h
mptcp.h mptcp: add set_flags command in PM netlink 2021-01-09 18:18:43 -08:00
mqueue.h
mroute6.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
mroute.h ipmr: Add high byte of VIF ID to igmpmsg 2020-09-10 12:25:51 -07:00
mrp_bridge.h bridge: mrp: Implement LC mode for MRP 2020-11-25 13:33:35 -08:00
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h
neighbour.h
net_dropmon.h
net_namespace.h
net_tstamp.h
net.h
netconf.h
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h netfilter: restore NF_INET_NUMHOOKS 2020-10-14 20:28:05 -07:00
netlink_diag.h
netlink.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
netrom.h
nexthop.h
nfc.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag 2020-10-16 09:28:43 -04:00
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfsacl.h NFSACL: Replace PROC() macro with open code 2020-10-02 09:37:41 -04:00
nilfs2_api.h
nilfs2_ondisk.h
nitro_enclaves.h nitro_enclaves: Add ioctl interface definition 2020-09-22 13:58:40 +02:00
nl80211.h nl80211: add common API to configure SAR power limitations 2020-12-11 13:38:54 +01:00
nsfs.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h
openvswitch.h net: openvswitch: fix TTL decrement action netlink message format 2020-11-27 11:03:06 -08:00
packet_diag.h
param.h
parport.h
patchkey.h
pci_regs.h pci-v5.11-changes 2020-12-15 16:49:59 -08:00
pci.h
pcitest.h
perf_event.h perf: Add build id data in mmap2 event 2021-01-14 19:29:58 -08:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pidfd.h pidfd: support PIDFD_NONBLOCK in pidfd_open() 2020-09-04 12:34:50 +02:00
pkt_cls.h
pkt_sched.h
pktcdvd.h
pmu.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h ppp: Fix PPPIOCUNBRIDGECHAN request number 2020-12-21 17:36:48 -08:00
pps.h
pr.h
prctl.h kernel: Implement selective syscall userspace redirection 2020-12-02 15:07:56 +01:00
psample.h
psci.h
psp-sev.h
ptp_clock.h
ptrace.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
raw.h
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
remoteproc_cdev.h
resource.h
rfkill.h rfkill: add a reason to the HW rfkill state 2020-12-11 12:47:17 +01:00
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h media: rockchip: rkisp1: destage Rockchip ISP1 driver 2020-11-17 07:01:17 +01:00
romfs_fs.h
rose.h
route.h
rpl_iptunnel.h
rpl.h
rpmsg_types.h rpmsg: Introduce __rpmsg{16|32|64} types 2020-11-24 10:10:59 -06:00
rpmsg.h
rseq.h
rtc.h
rtnetlink.h net: sched: alias action flags with TCA_ACT_ prefix 2020-11-25 12:34:44 -08:00
rxrpc.h rxrpc: Fix accept on a connection that need securing 2020-10-05 16:35:57 +01:00
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h sctp: add SCTP_REMOTE_UDP_ENCAPS_PORT sockopt 2020-10-30 15:24:11 -07:00
seccomp.h
securebits.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h seg6: add support for the SRv6 End.DT4 behavior 2020-12-04 13:30:50 -08:00
seg6.h
selinux_netlink.h
sem.h
serial_core.h tty: serial: remove pnx8xxx uart driver 2020-11-06 17:04:36 +01:00
serial_reg.h
serial.h
serio.h
shm.h
signal.h
signalfd.h
smc_diag.h
smc.h net/smc: Add support for obtaining SMCR device list 2020-12-01 17:56:13 -08:00
smiapp.h
snmp.h net: udp: introduce UDP_MIB_MEMERRORS for udp_mem 2020-11-09 15:34:44 -08:00
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h uapi: fix statx attribute value overlap for DAX & MOUNT_ROOT 2020-12-03 10:03:14 -08:00
stddef.h
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h uapi: move constants from <linux/kernel.h> to <linux/const.h> 2020-12-15 12:13:36 -08:00
sysinfo.h
target_core_user.h
taskstats.h
tcp_metrics.h
tcp.h Fix whitespace in uapi/linux/tcp.h. 2021-01-11 17:23:26 -08:00
tee.h
termios.h
thermal.h
time_types.h
time.h
timerfd.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h tipc: add automatic rekeying for encryption key 2020-09-18 13:58:37 -07:00
tipc_sockets_diag.h
tipc.h tipc: add automatic rekeying for encryption key 2020-09-18 13:58:37 -07:00
tls.h net/tls: add CHACHA20-POLY1305 specific defines and structures 2020-11-27 14:32:37 -08:00
toshiba.h
tty_flags.h
tty.h
types.h
udf_fs_i.h
udmabuf.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h userfaultfd: add UFFD_USER_MODE_ONLY 2020-12-15 12:13:46 -08:00
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: vicodec: mark the stateless FWHT API as stable 2020-12-03 12:27:33 +01:00
v4l2-dv-timings.h
v4l2-mediabus.h media: v4l2: extend the CSC API to subdevice. 2020-09-26 10:22:29 +02:00
v4l2-subdev.h media: v4l2: extend the CSC API to subdevice. 2020-09-26 10:22:29 +02:00
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
veth.h
vfio_ccw.h
vfio_zdev.h vfio: Introduce capability definitions for VFIO_DEVICE_GET_INFO 2020-10-07 14:23:44 -06:00
vfio.h vfio-ccw: Wire in the request callback 2020-12-03 16:21:08 -07:00
vhost_types.h vhost: vdpa: report iova range 2020-10-23 11:55:28 -04:00
vhost.h vhost: vdpa: report iova range 2020-10-23 11:55:28 -04:00
videodev2.h media: doc: pixfmt-rgb: Clarify naming scheme for RGB formats 2020-12-07 14:02:37 +01:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_crypto.h
virtio_fs.h virtiofs: set up virtio_fs dax_device 2020-09-10 11:39:22 +02:00
virtio_gpu.h virtio-gpu api: Add a comment on VIRTIO_GPU_SHM_ID_HOST_VISIBLE 2020-11-20 10:44:41 +01:00
virtio_ids.h uapi: virtio_ids: add missing device type IDs from OASIS spec 2020-12-18 16:14:31 -05:00
virtio_input.h
virtio_iommu.h
virtio_mem.h
virtio_mmio.h virtio: Implement get_shm_region for MMIO transport 2020-09-10 10:05:58 +02:00
virtio_net.h
virtio_pci.h virtio: Implement get_shm_region for PCI transport 2020-09-10 10:05:58 +02:00
virtio_pmem.h
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h
virtio_vsock.h
vm_sockets_diag.h
vm_sockets.h vm_sockets: Add VMADDR_FLAG_TO_HOST vsock flag 2020-12-14 19:33:39 -08:00
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h
wireless.h
wmi.h
x25.h
xattr.h
xdp_diag.h
xfrm.h
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h