forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net/hsr: Add support for the High-availability Seamless Redundancy pr…
…otocol (HSRv0) High-availability Seamless Redundancy ("HSR") provides instant failover redundancy for Ethernet networks. It requires a special network topology where all nodes are connected in a ring (each node having two physical network interfaces). It is suited for applications that demand high availability and very short reaction time. HSR acts on the Ethernet layer, using a registered Ethernet protocol type to send special HSR frames in both directions over the ring. The driver creates virtual network interfaces that can be used just like any ordinary Linux network interface, for IP/TCP/UDP traffic etc. All nodes in the network ring must be HSR capable. This code is a "best effort" to comply with the HSR standard as described in IEC 62439-3:2010 (HSRv0). Signed-off-by: Arvid Brodin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
- Loading branch information
Showing
15 changed files
with
2,403 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* | ||
* Copyright 2011-2013 Autronica Fire and Security AS | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the Free | ||
* Software Foundation; either version 2 of the License, or (at your option) | ||
* any later version. | ||
* | ||
* Author(s): | ||
* 2011-2013 Arvid Brodin, [email protected] | ||
*/ | ||
|
||
#ifndef __UAPI_HSR_NETLINK_H | ||
#define __UAPI_HSR_NETLINK_H | ||
|
||
/* Generic Netlink HSR family definition | ||
*/ | ||
|
||
/* attributes */ | ||
enum { | ||
HSR_A_UNSPEC, | ||
HSR_A_NODE_ADDR, | ||
HSR_A_IFINDEX, | ||
HSR_A_IF1_AGE, | ||
HSR_A_IF2_AGE, | ||
HSR_A_NODE_ADDR_B, | ||
HSR_A_IF1_SEQ, | ||
HSR_A_IF2_SEQ, | ||
HSR_A_IF1_IFINDEX, | ||
HSR_A_IF2_IFINDEX, | ||
HSR_A_ADDR_B_IFINDEX, | ||
__HSR_A_MAX, | ||
}; | ||
#define HSR_A_MAX (__HSR_A_MAX - 1) | ||
|
||
|
||
/* commands */ | ||
enum { | ||
HSR_C_UNSPEC, | ||
HSR_C_RING_ERROR, | ||
HSR_C_NODE_DOWN, | ||
HSR_C_GET_NODE_STATUS, | ||
HSR_C_SET_NODE_STATUS, | ||
HSR_C_GET_NODE_LIST, | ||
HSR_C_SET_NODE_LIST, | ||
__HSR_C_MAX, | ||
}; | ||
#define HSR_C_MAX (__HSR_C_MAX - 1) | ||
|
||
#endif /* __UAPI_HSR_NETLINK_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# | ||
# 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), but no compliancy tests have | ||
been made. | ||
|
||
You need to perform any and all necessary tests yourself before | ||
relying on this code in a safety critical system! | ||
|
||
If unsure, say N. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# | ||
# Makefile for HSR | ||
# | ||
|
||
obj-$(CONFIG_HSR) += hsr.o | ||
|
||
hsr-y := hsr_main.o hsr_framereg.o hsr_device.o hsr_netlink.o |
Oops, something went wrong.