/net/hsr/ |
D | hsr_device.c | 62 hsr_for_each_port(master->hsr, port) { in hsr_check_carrier() 76 struct hsr_priv *hsr; in hsr_check_announce() local 78 hsr = netdev_priv(hsr_dev); in hsr_check_announce() 81 if (!timer_pending(&hsr->announce_timer)) { in hsr_check_announce() 82 hsr->announce_count = 0; in hsr_check_announce() 83 mod_timer(&hsr->announce_timer, jiffies + in hsr_check_announce() 88 timer_delete(&hsr->announce_timer); in hsr_check_announce() 92 void hsr_check_carrier_and_operstate(struct hsr_priv *hsr) in hsr_check_carrier_and_operstate() argument 97 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_check_carrier_and_operstate() 106 int hsr_get_max_mtu(struct hsr_priv *hsr) in hsr_get_max_mtu() argument [all …]
|
D | hsr_framereg.c | 39 bool hsr_addr_is_self(struct hsr_priv *hsr, unsigned char *addr) in hsr_addr_is_self() argument 45 sn = rcu_dereference(hsr->self_node); in hsr_addr_is_self() 77 int hsr_create_self_node(struct hsr_priv *hsr, in hsr_create_self_node() argument 90 spin_lock_bh(&hsr->list_lock); in hsr_create_self_node() 91 old = rcu_replace_pointer(hsr->self_node, sn, in hsr_create_self_node() 92 lockdep_is_held(&hsr->list_lock)); in hsr_create_self_node() 93 spin_unlock_bh(&hsr->list_lock); in hsr_create_self_node() 100 void hsr_del_self_node(struct hsr_priv *hsr) in hsr_del_self_node() argument 104 spin_lock_bh(&hsr->list_lock); in hsr_del_self_node() 105 old = rcu_replace_pointer(hsr->self_node, NULL, in hsr_del_self_node() [all …]
|
D | hsr_slave.c | 28 struct hsr_priv *hsr; in hsr_handle_frame() local 43 hsr = port->hsr; in hsr_handle_frame() 45 if (hsr_addr_is_self(port->hsr, eth_hdr(skb)->h_source)) { in hsr_handle_frame() 58 hsr->proto_ops->invalid_dan_ingress_frame && in hsr_handle_frame() 59 hsr->proto_ops->invalid_dan_ingress_frame(protocol)) in hsr_handle_frame() 64 if ((!hsr->prot_version && protocol == htons(ETH_P_PRP)) || in hsr_handle_frame() 125 static int hsr_portdev_setup(struct hsr_priv *hsr, struct net_device *dev, in hsr_portdev_setup() argument 137 if (!port->hsr->fwd_offloaded) { in hsr_portdev_setup() 143 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_portdev_setup() 160 if (!port->hsr->fwd_offloaded) in hsr_portdev_setup() [all …]
|
D | hsr_main.c | 21 static bool hsr_slave_empty(struct hsr_priv *hsr) in hsr_slave_empty() argument 25 hsr_for_each_port(hsr, port) in hsr_slave_empty() 36 struct hsr_priv *hsr; in hsr_netdev_notify() local 46 hsr = netdev_priv(dev); in hsr_netdev_notify() 47 port = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_netdev_notify() 53 hsr = port->hsr; in hsr_netdev_notify() 60 hsr_check_carrier_and_operstate(hsr); in hsr_netdev_notify() 75 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_netdev_notify() 84 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); in hsr_netdev_notify() 85 res = hsr_create_self_node(hsr, in hsr_netdev_notify() [all …]
|
D | hsr_netlink.c | 107 struct hsr_priv *hsr = netdev_priv(dev); in hsr_dellink() local 109 del_timer_sync(&hsr->prune_timer); in hsr_dellink() 110 del_timer_sync(&hsr->announce_timer); in hsr_dellink() 112 hsr_debugfs_term(hsr); in hsr_dellink() 113 hsr_del_ports(hsr); in hsr_dellink() 115 hsr_del_self_node(hsr); in hsr_dellink() 116 hsr_del_nodes(&hsr->node_db); in hsr_dellink() 123 struct hsr_priv *hsr = netdev_priv(dev); in hsr_fill_info() local 127 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A); in hsr_fill_info() 133 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); in hsr_fill_info() [all …]
|
D | hsr_forward.c | 35 static bool is_supervision_frame(struct hsr_priv *hsr, struct sk_buff *skb) in is_supervision_frame() argument 48 hsr->sup_multicast_addr)) in is_supervision_frame() 63 if (hsr_V1_hdr->hsr.encap_proto != htons(ETH_P_PRP)) in is_supervision_frame() 201 lane_id |= port->hsr->net_id; in prp_set_lan_id() 320 return hsr_fill_tag(skb, frame, port, port->hsr->prot_version); in hsr_create_tagged_frame() 417 hsr_for_each_port(frame->port_rcv->hsr, port) { in hsr_forward_do() 418 struct hsr_priv *hsr = port->hsr; in hsr_forward_do() local 453 if (hsr->proto_ops->drop_frame && in hsr_forward_do() 454 hsr->proto_ops->drop_frame(frame, port)) in hsr_forward_do() 458 skb = hsr->proto_ops->create_tagged_frame(frame, port); in hsr_forward_do() [all …]
|
D | hsr_framereg.h | 31 void hsr_del_self_node(struct hsr_priv *hsr); 37 bool hsr_addr_is_self(struct hsr_priv *hsr, unsigned char *addr); 50 int hsr_create_self_node(struct hsr_priv *hsr, 54 void *hsr_get_next_node(struct hsr_priv *hsr, void *_pos, 57 int hsr_get_node_data(struct hsr_priv *hsr,
|
D | Makefile | 6 obj-$(CONFIG_HSR) += hsr.o 8 hsr-y := hsr_main.o hsr_framereg.o hsr_device.o \ 10 hsr-$(CONFIG_DEBUG_FS) += hsr_debugfs.o
|
D | hsr_device.h | 16 void hsr_del_ports(struct hsr_priv *hsr); 21 void hsr_check_carrier_and_operstate(struct hsr_priv *hsr); 22 int hsr_get_max_mtu(struct hsr_priv *hsr);
|
D | hsr_main.h | 118 struct hsr_tag hsr; member 162 struct hsr_priv *hsr; member 221 #define hsr_for_each_port(hsr, port) \ argument 222 list_for_each_entry_rcu((port), &(hsr)->ports, port_list) 224 struct hsr_port *hsr_port_get_hsr(struct hsr_priv *hsr, enum hsr_port_type pt);
|
D | hsr_netlink.h | 23 void hsr_nl_ringerror(struct hsr_priv *hsr, unsigned char addr[ETH_ALEN], 25 void hsr_nl_nodedown(struct hsr_priv *hsr, unsigned char addr[ETH_ALEN]);
|
D | hsr_slave.h | 17 int hsr_add_port(struct hsr_priv *hsr, struct net_device *dev,
|
/net/dsa/ |
D | port.h | 106 int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr); 107 void dsa_port_hsr_leave(struct dsa_port *dp, struct net_device *hsr);
|
D | port.c | 2027 int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr) in dsa_port_hsr_join() argument 2035 dp->hsr_dev = hsr; in dsa_port_hsr_join() 2037 err = ds->ops->port_hsr_join(ds, dp->index, hsr); in dsa_port_hsr_join() 2044 void dsa_port_hsr_leave(struct dsa_port *dp, struct net_device *hsr) in dsa_port_hsr_leave() argument 2052 err = ds->ops->port_hsr_leave(ds, dp->index, hsr); in dsa_port_hsr_leave() 2056 dp->index, hsr->name, ERR_PTR(err)); in dsa_port_hsr_leave()
|
/net/ |
D | Makefile | 74 obj-$(CONFIG_HSR) += hsr/
|
D | Kconfig | 265 source "net/hsr/Kconfig"
|