Lines Matching refs:hsr

41 bool hsr_addr_is_self(struct hsr_priv *hsr, unsigned char *addr)  in hsr_addr_is_self()  argument
45 node = list_first_or_null_rcu(&hsr->self_node_db, struct hsr_node, in hsr_addr_is_self()
78 int hsr_create_self_node(struct hsr_priv *hsr, in hsr_create_self_node() argument
82 struct list_head *self_node_db = &hsr->self_node_db; in hsr_create_self_node()
92 spin_lock_bh(&hsr->list_lock); in hsr_create_self_node()
97 spin_unlock_bh(&hsr->list_lock); in hsr_create_self_node()
101 spin_unlock_bh(&hsr->list_lock); in hsr_create_self_node()
107 void hsr_del_self_node(struct hsr_priv *hsr) in hsr_del_self_node() argument
109 struct list_head *self_node_db = &hsr->self_node_db; in hsr_del_self_node()
112 spin_lock_bh(&hsr->list_lock); in hsr_del_self_node()
118 spin_unlock_bh(&hsr->list_lock); in hsr_del_self_node()
147 static struct hsr_node *hsr_add_node(struct hsr_priv *hsr, in hsr_add_node() argument
174 if (san && hsr->proto_ops->handle_san_frame) in hsr_add_node()
175 hsr->proto_ops->handle_san_frame(san, rx_port, new_node); in hsr_add_node()
177 spin_lock_bh(&hsr->list_lock); in hsr_add_node()
179 lockdep_is_held(&hsr->list_lock)) { in hsr_add_node()
186 spin_unlock_bh(&hsr->list_lock); in hsr_add_node()
189 spin_unlock_bh(&hsr->list_lock); in hsr_add_node()
209 struct hsr_priv *hsr = port->hsr; in hsr_get_node() local
223 if (hsr->proto_ops->update_san_info) in hsr_get_node()
224 hsr->proto_ops->update_san_info(node, is_sup); in hsr_get_node()
228 if (hsr->proto_ops->update_san_info) in hsr_get_node()
229 hsr->proto_ops->update_san_info(node, is_sup); in hsr_get_node()
254 return hsr_add_node(hsr, node_db, ethhdr->h_source, seq_out, in hsr_get_node()
266 struct hsr_priv *hsr = port_rcv->hsr; in hsr_handle_sup_frame() local
300 node_db = &port_rcv->hsr->node_db; in hsr_handle_sup_frame()
304 node_real = hsr_add_node(hsr, node_db, hsr_sp->macaddress_A, in hsr_handle_sup_frame()
326 spin_lock_bh(&hsr->list_lock); in hsr_handle_sup_frame()
328 spin_unlock_bh(&hsr->list_lock); in hsr_handle_sup_frame()
377 node_dst = find_node_by_addr_A(&port->hsr->node_db, in hsr_addr_subst_dest()
426 static struct hsr_port *get_late_port(struct hsr_priv *hsr, in get_late_port() argument
430 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A); in get_late_port()
432 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); in get_late_port()
437 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A); in get_late_port()
441 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); in get_late_port()
451 struct hsr_priv *hsr = from_timer(hsr, t, prune_timer); in hsr_prune_nodes() local
458 spin_lock_bh(&hsr->list_lock); in hsr_prune_nodes()
459 list_for_each_entry_safe(node, tmp, &hsr->node_db, mac_list) { in hsr_prune_nodes()
465 if (hsr_addr_is_self(hsr, node->macaddress_A)) in hsr_prune_nodes()
492 port = get_late_port(hsr, node); in hsr_prune_nodes()
494 hsr_nl_ringerror(hsr, node->macaddress_A, port); in hsr_prune_nodes()
501 hsr_nl_nodedown(hsr, node->macaddress_A); in hsr_prune_nodes()
507 spin_unlock_bh(&hsr->list_lock); in hsr_prune_nodes()
510 mod_timer(&hsr->prune_timer, in hsr_prune_nodes()
514 void *hsr_get_next_node(struct hsr_priv *hsr, void *_pos, in hsr_get_next_node() argument
520 node = list_first_or_null_rcu(&hsr->node_db, in hsr_get_next_node()
528 list_for_each_entry_continue_rcu(node, &hsr->node_db, mac_list) { in hsr_get_next_node()
536 int hsr_get_node_data(struct hsr_priv *hsr, in hsr_get_node_data() argument
549 node = find_node_by_addr_A(&hsr->node_db, addr); in hsr_get_node_data()
580 port = hsr_port_get_hsr(hsr, node->addr_B_port); in hsr_get_node_data()