1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /* 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_*/
|