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 [PATCH] ARM: switch fd1772.c from sleep_on to wait_event 2005-08-07 14:23:42 +01:00
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 Here are two possible cleanups in cpufreq.c: 2005-07-28 09:43:56 -07:00
crypto [CRYPTO] Update IV correctly for Padlock CBC encryption 2005-07-06 13:54:09 -07:00
dio
eisa
fc4 [SCSI] fc4 warning fix 2005-07-30 09:47:53 -05:00
firmware [PATCH] PCDP: if PCDP contains parity information, use it 2005-07-28 08:39:02 -07:00
hwmon [PATCH] I2C hwmon: kfree fixes 2005-08-26 19:37:12 -07:00
i2c [PATCH] Build fix for the Sibyte I2C driver 2005-08-09 12:08:21 -07:00
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 [PATCH] ns558 list handling fix 2005-08-10 11:03:02 -07:00
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 [PATCH] I2O: added pci_request_regions() before using the controller 2005-08-09 17:59:52 -07:00
mfd [MFD] Add SA11x0 MCP platform device support 2005-08-18 10:10:46 +01:00
misc [PATCH] IBM_ASM Kconfig corrections 2005-07-12 16:01:02 -07:00
mmc [MMC] Use an IDR for host name indicies 2005-08-19 09:42:52 +01:00
mtd [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
net [PATCH] iseries_veth: Try to avoid pathological reset behaviour 2005-08-31 22:37:56 -04:00
nubus
oprofile [PATCH] clean up inline static vs static inline 2005-07-27 16:26:20 -07:00
parisc [PATCH] acpi bridge hotadd: ACPI based root bridge hot-add 2005-06-27 21:52:39 -07:00
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 [SPARC]: envctrl: ERR_PTR() --> PTR_ERR() 2005-08-09 14:43:14 -07:00
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 [PATCH] pcmcia: remove references to pcmcia/version.h 2005-07-07 18:24:07 -07:00
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