freebsd-dev/sys
Greg Foster 00a80538b4 lacp: short timeout erroneously declares link-flapping
Panasas was seeing a higher-than-expected number of link-flap events.
After joint debugging with the switch vendor, we determined there were
problems on both sides; either of which might cause the occasional
event, but together caused lots of them.

On the switch side, an internal queuing issue was causing LACP PDUs --
which should be sent every second, in short-timeout mode -- to sometimes
be sent slightly later than they should have been. In some cases, two
successive PDUs were late, but we never saw three late PDUs in a row.

On the FreeBSD side, we saw a link-flap event every time there were two
late PDUs, while the spec says that it takes *three* seconds of downtime
to trigger that event. It turns out that if a PDU was received shortly
before the timer code was run, it would decrement less than a full
second after the PDU arrived. Then two delayed PDUs would cause two
additional decrements, causing it to reach zero less than three seconds
after the most-recent on-time PDU.

The solution is to note the time a PDU arrives, and only decrement if at
least a full second has elapsed since then.

Reported by:	Greg Foster <gfoster@panasas.com>
Reviewed by:	gallatin
Tested by:	Greg Foster <gfoster@panasas.com>
MFC after:	3 days
Sponsored by:	Panasas
Differential Revision:	https://reviews.freebsd.org/D35070
2022-04-27 12:41:30 -07:00
..
amd64 Remove dead code. 2022-04-26 19:40:59 +03:00
arm busdma_bounce: Add free_bounce_pages helper function. 2022-04-21 10:42:14 -07:00
arm64 linux(4): Regen for epoll_pwait2 syscall. 2022-04-26 19:35:58 +03:00
bsm
cam ndaasync: sync to SCSI's daasyncs cam_periph_async() calls 2022-04-26 11:01:39 -06:00
cddl zfs: merge openzfs/zfs@a86e08941 (master) into main 2022-03-08 18:53:02 +01:00
compat linux(4): Add epoll_pwai2 syscall. 2022-04-26 19:35:59 +03:00
conf FB_INSTALL_CDEV: Remove this option and related code. 2022-04-21 10:29:14 -07:00
contrib rtw88: deal with debug messages 2022-04-27 15:20:34 +00:00
crypto ccp: Use devclass_find to lookup devclass in db_show_ccp. 2022-04-21 10:29:14 -07:00
ddb
dev firewire: Initialize firewire_devclass in fw_modevent. 2022-04-27 12:26:05 -07:00
dts
fs ext2: plug a set-but-not-used var 2022-04-19 12:45:57 +00:00
gdb
geom g_vfs_done: Only report ENXIO once 2022-04-24 14:01:33 -06:00
gnu
i386 Remove dead code. 2022-04-26 19:40:59 +03:00
isa vgapm: Use devclass_find to lookup the vga devclass in suspend and resume. 2022-04-21 10:29:15 -07:00
kern Add a __witness_used for variables only used under #ifdef WITNESS. 2022-04-27 11:46:16 -07:00
kgssapi kgssapi krb5: Remove unused variables. 2022-04-06 16:45:29 -07:00
libkern libkern: Fix two typos in source code comments 2022-04-09 09:36:34 +02:00
modules linux(4): Add a simple rseq syscall implementation. 2022-04-26 19:35:56 +03:00
net lacp: short timeout erroneously declares link-flapping 2022-04-27 12:41:30 -07:00
net80211 net80211: Fix traffic hang on STA/AP VAPs on a multi-VAP interface 2022-04-21 22:49:01 -07:00
netgraph ng_netflow: Move various variables under INET || INET6. 2022-04-13 16:08:21 -07:00
netinet sctp: improve locking 2022-04-27 16:07:31 +02:00
netinet6 udp6: allow udp_tun_func_t() to indicate it did not eat the packet 2022-04-22 16:55:23 +02:00
netipsec ipsec_encap: setdf is only used for INET. 2022-04-13 16:08:21 -07:00
netpfil pf: Add per-rule timestamps for rule and eth_rule 2022-04-22 19:53:20 +02:00
netsmb smb_smb_treedisconnect: eliminate write only variable mbp 2022-04-04 22:30:57 -06:00
nfs nfs: do not panic on bootpc_init when no interfaces are found 2022-04-07 19:33:26 -03:00
nfsclient
nfsserver
nlm
ofed ofed: Fix a typo in a source code comment 2022-04-09 14:39:36 +02:00
opencrypto KTLS: Add a new recrypt operation to the software backend. 2022-04-22 15:52:50 -07:00
powerpc Remove dead code. 2022-04-26 19:40:59 +03:00
riscv busdma_bounce: Add free_bounce_pages helper function. 2022-04-21 10:42:14 -07:00
rpc svc_vc_rendezvous_stat: eliminiate write only variable stat 2022-04-04 22:31:04 -06:00
security mac_pimd: Support for privilege drop in pimd 2022-04-20 08:07:37 +02:00
sys Add a __witness_used for variables only used under #ifdef WITNESS. 2022-04-27 11:46:16 -07:00
teken teken: color #3 is yellow not brown - use TC_YELLOW as the name 2022-03-12 09:17:29 -05:00
tests
tools syscallarg_t: Add a type for system call arguments 2022-03-28 19:43:03 +01:00
ufs ffs: plug a set-but-not-used var 2022-04-19 16:51:12 +02:00
vm vm_phys: avoid waste in multipage allocation 2022-04-26 02:56:23 -05:00
x86 Remove dead code. 2022-04-26 19:40:59 +03:00
xdr
xen xen: Use __diagused for a variable only used in KASSERT(). 2022-04-13 16:08:20 -07:00
Makefile