Contributors: 7
Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
George McCollister |
51 |
42.15% |
1 |
7.14% |
Arvid Brodin |
33 |
27.27% |
2 |
14.29% |
Murali Karicheri |
15 |
12.40% |
3 |
21.43% |
Taehee Yoo |
10 |
8.26% |
3 |
21.43% |
Jakub Kiciński |
6 |
4.96% |
1 |
7.14% |
Linus Torvalds (pre-git) |
5 |
4.13% |
3 |
21.43% |
Michal Kubeček |
1 |
0.83% |
1 |
7.14% |
Total |
121 |
|
14 |
|
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IF_HSR_H_
#define _LINUX_IF_HSR_H_
#include <linux/types.h>
struct net_device;
/* used to differentiate various protocols */
enum hsr_version {
HSR_V0 = 0,
HSR_V1,
PRP_V1,
};
/* HSR Tag.
* As defined in IEC-62439-3:2010, the HSR tag is really { ethertype = 0x88FB,
* path, LSDU_size, sequence Nr }. But we let eth_header() create { h_dest,
* h_source, h_proto = 0x88FB }, and add { path, LSDU_size, sequence Nr,
* encapsulated protocol } instead.
*
* Field names as defined in the IEC:2010 standard for HSR.
*/
struct hsr_tag {
__be16 path_and_LSDU_size;
__be16 sequence_nr;
__be16 encap_proto;
} __packed;
#define HSR_HLEN 6
#if IS_ENABLED(CONFIG_HSR)
extern bool is_hsr_master(struct net_device *dev);
extern int hsr_get_version(struct net_device *dev, enum hsr_version *ver);
#else
static inline bool is_hsr_master(struct net_device *dev)
{
return false;
}
static inline int hsr_get_version(struct net_device *dev,
enum hsr_version *ver)
{
return -EINVAL;
}
#endif /* CONFIG_HSR */
#endif /*_LINUX_IF_HSR_H_*/