android_kernel_xiaomi_sm8350/drivers
Michael Ellerman 58c5900bda [PATCH] iseries_veth: Try to avoid pathological reset behaviour
The iseries_veth driver contains a state machine which is used to manage
how connections are setup and neogotiated between LPARs.

If one side of a connection resets for some reason, the two LPARs can get
stuck in a race to re-setup the connection. This can lead to the connection
being declared dead by one or both ends. In practice the connection is
declared dead by one or both ends approximately 8/10 times a connection is
reset, although it is rare for connections to be reset.

(an example here: http://michael.ellerman.id.au/files/misc/veth-trace.html)

The core of the problem is that the end that resets the connection doesn't
wait for the other end to become aware of the reset. So the resetting end
starts setting the connection back up, and then receives a reset from the
other end (which is the response to the initial reset). And so on.

We're severely limited in what we can do to fix this. The protocol between
LPARs is essentially fixed, as we have to interoperate with both OS/400
and old Linux drivers. Which also means we need a fix that only changes the
code on one end.

The only fix I've found given that, is to just blindly sleep for a bit when
resetting the connection, in the hope that the other end will get itself
sorted.  Needless to say I'd love it if someone has a better idea.

This does work, I've so far been unable to get it to break, whereas without
the fix a reset of one end will lead to a dead connection ~8/10 times.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-08-31 22:37:56 -04:00
..
acorn
acpi [PATCH] acpi_shutdown: Only prepare for power off on power_off 2005-08-27 10:11:40 -07:00
atm [NET]: Store skb->timestamp as offset to a base timestamp 2005-08-29 15:58:24 -07:00
base [PATCH] Fix manual binding infinite loop 2005-08-17 22:02:25 -07:00
block Merge HEAD from master.kernel.org:/pub/scm/linux/kernel/git/paulus/ppc64-2.6 2005-08-29 21:44:33 -07:00
bluetooth [Bluetooth]: Move packet type into the SKB control buffer 2005-08-29 15:55:13 -07:00
cdrom [PATCH] Make MODULE_DEVICE_TABLE work for vio devices 2005-08-30 13:31:56 +10:00
char Merge refs/heads/drm-latest from master.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6 2005-08-30 07:45:15 -07:00
cpufreq
crypto
dio
eisa
fc4
firmware
hwmon [PATCH] I2C hwmon: kfree fixes 2005-08-26 19:37:12 -07:00
i2c
ide [PATCH] serverworks: add support for new southbridge IDE 2005-08-18 22:30:35 +02:00
ieee1394 [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
infiniband [PATCH] IB: move include files to include/rdma 2005-08-26 20:37:38 -07:00
input
isdn [NET]: Remove explicit initializations of skb->input_dev 2005-08-29 15:33:26 -07:00
macintosh [PATCH] Kconfig fix (PMAC_BACKLIGHT on ppc64) 2005-08-23 18:43:40 -07:00
mca
md [PATCH] md: clear the 'recovery' flags when starting an md array. 2005-08-26 19:37:13 -07:00
media [PATCH] missing include in tda80xx 2005-08-29 10:42:39 -07:00
message
mfd [MFD] Add SA11x0 MCP platform device support 2005-08-18 10:10:46 +01:00
misc
mmc [MMC] Use an IDR for host name indicies 2005-08-19 09:42:52 +01:00
mtd
net [PATCH] iseries_veth: Try to avoid pathological reset behaviour 2005-08-31 22:37:56 -04:00
nubus
oprofile
parisc
parport Merge HEAD from master.kernel.org:/home/rmk/linux-2.6-serial.git 2005-08-29 10:34:59 -07:00
pci [PATCH] x86: pci_assign_unassigned_resources() update 2005-08-30 11:14:48 -07:00
pcmcia [PATCH] missing include in pcmcia_resource.c 2005-08-23 18:43:43 -07:00
pnp [PATCH] broken error path in drivers/pnp/card.c 2005-08-18 08:43:59 -07:00
s390 [PATCH] zfcp: bugfix and compile fixes 2005-08-28 13:53:48 -07:00
sbus
scsi Merge refs/heads/upstream from master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev 2005-08-29 22:04:58 -07:00
serial Merge HEAD from master.kernel.org:/home/rmk/linux-2.6-serial.git 2005-08-29 10:34:59 -07:00
sh
sn
tc
telephony
usb [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
video [PATCH] Kconfig fix (VGA console on arm/versatile) 2005-08-23 18:43:42 -07:00
w1 [NETLINK]: Add "groups" argument to netlink_kernel_create 2005-08-29 16:01:11 -07:00
zorro
Kconfig [MFD] Add multimedia communication port core support 2005-08-18 10:06:59 +01:00
Makefile [MFD] Add multimedia communication port core support 2005-08-18 10:06:59 +01:00