mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
net: hsr: Create and export hsr_get_port_ndev()
Create an API to get the net_device to the slave port of HSR device. The API will take hsr net_device and enum hsr_port_type for which we want the net_device as arguments. This API can be used by client drivers who support HSR and want to get the net_devcie of slave ports from the hsr device. Export this API for the same. This API needs the enum hsr_port_type to be accessible by the drivers using hsr. Move the enum hsr_port_type from net/hsr/hsr_main.h to include/linux/if_hsr.h for the same. Signed-off-by: MD Danish Anwar <danishanwar@ti.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
04508d20b0
commit
9c10dd8eed
|
@ -13,6 +13,15 @@ enum hsr_version {
|
||||||
PRP_V1,
|
PRP_V1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum hsr_port_type {
|
||||||
|
HSR_PT_NONE = 0, /* Must be 0, used by framereg */
|
||||||
|
HSR_PT_SLAVE_A,
|
||||||
|
HSR_PT_SLAVE_B,
|
||||||
|
HSR_PT_INTERLINK,
|
||||||
|
HSR_PT_MASTER,
|
||||||
|
HSR_PT_PORTS, /* This must be the last item in the enum */
|
||||||
|
};
|
||||||
|
|
||||||
/* HSR Tag.
|
/* HSR Tag.
|
||||||
* As defined in IEC-62439-3:2010, the HSR tag is really { ethertype = 0x88FB,
|
* 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,
|
* path, LSDU_size, sequence Nr }. But we let eth_header() create { h_dest,
|
||||||
|
@ -32,6 +41,8 @@ struct hsr_tag {
|
||||||
#if IS_ENABLED(CONFIG_HSR)
|
#if IS_ENABLED(CONFIG_HSR)
|
||||||
extern bool is_hsr_master(struct net_device *dev);
|
extern bool is_hsr_master(struct net_device *dev);
|
||||||
extern int hsr_get_version(struct net_device *dev, enum hsr_version *ver);
|
extern int hsr_get_version(struct net_device *dev, enum hsr_version *ver);
|
||||||
|
struct net_device *hsr_get_port_ndev(struct net_device *ndev,
|
||||||
|
enum hsr_port_type pt);
|
||||||
#else
|
#else
|
||||||
static inline bool is_hsr_master(struct net_device *dev)
|
static inline bool is_hsr_master(struct net_device *dev)
|
||||||
{
|
{
|
||||||
|
@ -42,6 +53,12 @@ static inline int hsr_get_version(struct net_device *dev,
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline struct net_device *hsr_get_port_ndev(struct net_device *ndev,
|
||||||
|
enum hsr_port_type pt)
|
||||||
|
{
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
}
|
||||||
#endif /* CONFIG_HSR */
|
#endif /* CONFIG_HSR */
|
||||||
|
|
||||||
#endif /*_LINUX_IF_HSR_H_*/
|
#endif /*_LINUX_IF_HSR_H_*/
|
||||||
|
|
|
@ -663,6 +663,19 @@ bool is_hsr_master(struct net_device *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(is_hsr_master);
|
EXPORT_SYMBOL(is_hsr_master);
|
||||||
|
|
||||||
|
struct net_device *hsr_get_port_ndev(struct net_device *ndev,
|
||||||
|
enum hsr_port_type pt)
|
||||||
|
{
|
||||||
|
struct hsr_priv *hsr = netdev_priv(ndev);
|
||||||
|
struct hsr_port *port;
|
||||||
|
|
||||||
|
hsr_for_each_port(hsr, port)
|
||||||
|
if (port->type == pt)
|
||||||
|
return port->dev;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(hsr_get_port_ndev);
|
||||||
|
|
||||||
/* Default multicast address for HSR Supervision frames */
|
/* Default multicast address for HSR Supervision frames */
|
||||||
static const unsigned char def_multicast_addr[ETH_ALEN] __aligned(2) = {
|
static const unsigned char def_multicast_addr[ETH_ALEN] __aligned(2) = {
|
||||||
0x01, 0x15, 0x4e, 0x00, 0x01, 0x00
|
0x01, 0x15, 0x4e, 0x00, 0x01, 0x00
|
||||||
|
|
|
@ -121,15 +121,6 @@ struct hsrv1_ethhdr_sp {
|
||||||
struct hsr_sup_tag hsr_sup;
|
struct hsr_sup_tag hsr_sup;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
enum hsr_port_type {
|
|
||||||
HSR_PT_NONE = 0, /* Must be 0, used by framereg */
|
|
||||||
HSR_PT_SLAVE_A,
|
|
||||||
HSR_PT_SLAVE_B,
|
|
||||||
HSR_PT_INTERLINK,
|
|
||||||
HSR_PT_MASTER,
|
|
||||||
HSR_PT_PORTS, /* This must be the last item in the enum */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* PRP Redunancy Control Trailor (RCT).
|
/* PRP Redunancy Control Trailor (RCT).
|
||||||
* As defined in IEC-62439-4:2012, the PRP RCT is really { sequence Nr,
|
* As defined in IEC-62439-4:2012, the PRP RCT is really { sequence Nr,
|
||||||
* Lan indentifier (LanId), LSDU_size and PRP_suffix = 0x88FB }.
|
* Lan indentifier (LanId), LSDU_size and PRP_suffix = 0x88FB }.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user