]> www.infradead.org Git - users/jedix/linux-maple.git/commit
SPARC64: ldmvsw: tx queue stuck in stopped state after LDC reset
authorAaron Young <Aaron.Young@oracle.com>
Wed, 2 Nov 2016 17:00:29 +0000 (13:00 -0400)
committerAllen Pais <allen.pais@oracle.com>
Sun, 22 Jan 2017 15:37:02 +0000 (21:07 +0530)
commit9c7c9046d76093285e620e52f9c030aa014d4348
treed3dbe65c6e1df2b6ed903f250c72a77f96b1f803
parentc37016d26d5013bbb55d630b5489a6312b90e09d
SPARC64: ldmvsw: tx queue stuck in stopped state after LDC reset

The following patch fixes an issue with the ldmvsw driver where
the network connection of a guest domain becomes non-functional after
the guest domain has panic'd and rebooted.

The root cause was determined to be from the following series of
events:

1. Guest domain panics - resulting in the guest no longer processing
   network packets (from ldmvsw driver)
2. The ldmvsw driver (in the control domain) eventually exerts flow
   control due to no more available tx drings and stops the tx queue
   for the guest domain
3. The LDC of the network connection for the guest is reset when
   the guest domain reboots after the panic.
4. The LDC reset event is received by the ldmvsw driver and the ldmvsw
   responds by clearing the tx queue for the guest.
5. ldmvsw waits indefinitely for a DATA ACK from the guest - which is
   the normal method to re-enable the tx queue. But the ACK never comes
   because the tx queue was cleared due to the LDC reset.

To fix this issue, in addition to clearing the tx queue, re-enable the
tx queue on a LDC reset. This prevents the ldmvsw from getting caught in
this deadlocked state of waiting for a DATA ACK which will never come.

Signed-off-by: Aaron Young <Aaron.Young@oracle.com>
Acked-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Orabug: 24714685
(cherry picked from commit d84ad41602ceb070c05d2633bc09d81f66796e15)
Signed-off-by: Allen Pais <allen.pais@oracle.com>
drivers/net/ethernet/sun/sunvnet_common.c