summaryrefslogtreecommitdiff
path: root/net/hsr/Kconfig
blob: 4b683fd0abf128d617b15f6e0722058de81c08b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#
# IEC 62439-3 High-availability Seamless Redundancy
#

config HSR
	tristate "High-availability Seamless Redundancy (HSR)"
	---help---
	  If you say Y here, then your Linux box will be able to act as a
	  DANH ("Doubly attached node implementing HSR"). For this to work,
	  your Linux box needs (at least) two physical Ethernet interfaces,
	  and it must be connected as a node in a ring network together with
	  other HSR capable nodes.

	  All Ethernet frames sent over the hsr device will be sent in both
	  directions on the ring (over both slave ports), giving a redundant,
	  instant fail-over network. Each HSR node in the ring acts like a
	  bridge for HSR frames, but filters frames that have been forwarded
	  earlier.

	  This code is a "best effort" to comply with the HSR standard as
	  described in IEC 62439-3:2010 (HSRv0) and IEC 62439-3:2012 (HSRv1),
	  but no compliancy tests have been made. Use iproute2 to select
	  the version you desire.

	  You need to perform any and all necessary tests yourself before
	  relying on this code in a safety critical system!

	  If unsure, say N.
it.cgi/linux/net-next.git/tree/net/ieee802154?h=nds-private-remove&id=ae4a3e028bb8b59e7cfeb0cc9ef03d885182ce8b'>net/ieee802154 parent49def1853334396f948dcb4cedb9347abb318df5 (diff)
dmaengine: cppi41: Fix runtime PM timeouts with USB mass storage
Commit fdea2d09b997 ("dmaengine: cppi41: Add basic PM runtime support") added runtime PM support for cppi41, but had corner case issues. Some of the issues were fixed with commit 098de42ad670 ("dmaengine: cppi41: Fix unpaired pm runtime when only a USB hub is connected"). That fix however caused a new regression where we can get error -115 messages with USB on BeagleBone when connecting a USB mass storage device to a hub. This is because when connecting a USB mass storage device to a hub, the initial DMA transfers can take over 200ms to complete and cppi41 autosuspend delay times out. To fix the issue, we want to implement refcounting for chan_busy array that contains the active dma transfers. Increasing the autosuspend delay won't help as that the delay could be potentially seconds, and it's best to let the USB subsystem to deal with the timeouts on errors. The earlier attempt for runtime PM was buggy as the pm_runtime_get/put() calls could get unpaired easily as they did not follow the state of the chan_busy array as described in commit 098de42ad670 ("dmaengine: cppi41: Fix unpaired pm runtime when only a USB hub is connected". Let's fix the issue by adding pm_runtime_get() to where a new transfer is added to the chan_busy array, and calls to pm_runtime_put() where chan_busy array entry is cleared. This prevents any autosuspend timeouts from happening while dma transfers are active. Fixes: 098de42ad670 ("dmaengine: cppi41: Fix unpaired pm runtime when only a USB hub is connected") Fixes: fdea2d09b997 ("dmaengine: cppi41: Add basic PM runtime support") Cc: Andy Shevchenko <andy.shevchenko@gmail.com> Cc: Bin Liu <b-liu@ti.com> Cc: Grygorii Strashko <grygorii.strashko@ti.com> Cc: Kevin Hilman <khilman@baylibre.com> Cc: Patrick Titiano <ptitiano@baylibre.com> Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Tested-by: Bin Liu <b-liu@ti.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'net/ieee802154')