Lines Matching defs:hsr
39 bool hsr_addr_is_self(struct hsr_priv *hsr, unsigned char *addr)
45 sn = rcu_dereference(hsr->self_node);
77 int hsr_create_self_node(struct hsr_priv *hsr,
90 spin_lock_bh(&hsr->list_lock);
91 old = rcu_replace_pointer(hsr->self_node, sn,
92 lockdep_is_held(&hsr->list_lock));
93 spin_unlock_bh(&hsr->list_lock);
100 void hsr_del_self_node(struct hsr_priv *hsr)
104 spin_lock_bh(&hsr->list_lock);
105 old = rcu_replace_pointer(hsr->self_node, NULL,
106 lockdep_is_held(&hsr->list_lock));
107 spin_unlock_bh(&hsr->list_lock);
138 static struct hsr_node *hsr_add_node(struct hsr_priv *hsr,
166 if (san && hsr->proto_ops->handle_san_frame)
167 hsr->proto_ops->handle_san_frame(san, rx_port, new_node);
169 spin_lock_bh(&hsr->list_lock);
171 lockdep_is_held(&hsr->list_lock)) {
178 spin_unlock_bh(&hsr->list_lock);
181 spin_unlock_bh(&hsr->list_lock);
201 struct hsr_priv *hsr = port->hsr;
215 if (hsr->proto_ops->update_san_info)
216 hsr->proto_ops->update_san_info(node, is_sup);
220 if (hsr->proto_ops->update_san_info)
221 hsr->proto_ops->update_san_info(node, is_sup);
250 return hsr_add_node(hsr, node_db, ethhdr->h_source, seq_out,
262 struct hsr_priv *hsr = port_rcv->hsr;
309 node_db = &port_rcv->hsr->node_db;
313 node_real = hsr_add_node(hsr, node_db, hsr_sp->macaddress_A,
368 spin_lock_bh(&hsr->list_lock);
374 spin_unlock_bh(&hsr->list_lock);
419 node_dst = find_node_by_addr_A(&port->hsr->node_db,
422 if (port->hsr->prot_version != PRP_V1 && net_ratelimit())
473 static struct hsr_port *get_late_port(struct hsr_priv *hsr,
477 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A);
479 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B);
484 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A);
488 return hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B);
498 struct hsr_priv *hsr = from_timer(hsr, t, prune_timer);
505 spin_lock_bh(&hsr->list_lock);
506 list_for_each_entry_safe(node, tmp, &hsr->node_db, mac_list) {
512 if (hsr_addr_is_self(hsr, node->macaddress_A))
539 port = get_late_port(hsr, node);
541 hsr_nl_ringerror(hsr, node->macaddress_A, port);
548 hsr_nl_nodedown(hsr, node->macaddress_A);
557 spin_unlock_bh(&hsr->list_lock);
560 mod_timer(&hsr->prune_timer,
564 void *hsr_get_next_node(struct hsr_priv *hsr, void *_pos,
570 node = list_first_or_null_rcu(&hsr->node_db,
578 list_for_each_entry_continue_rcu(node, &hsr->node_db, mac_list) {
586 int hsr_get_node_data(struct hsr_priv *hsr,
599 node = find_node_by_addr_A(&hsr->node_db, addr);
630 port = hsr_port_get_hsr(hsr, node->addr_B_port);