Lines Matching refs:hsr
52 hsr_for_each_port(master->hsr, port) { in hsr_check_carrier()
66 struct hsr_priv *hsr; in hsr_check_announce() local
68 hsr = netdev_priv(hsr_dev); in hsr_check_announce()
71 if (!timer_pending(&hsr->announce_timer)) { in hsr_check_announce()
72 hsr->announce_count = 0; in hsr_check_announce()
73 mod_timer(&hsr->announce_timer, jiffies + in hsr_check_announce()
77 if (hsr->redbox && !timer_pending(&hsr->announce_proxy_timer)) in hsr_check_announce()
78 mod_timer(&hsr->announce_proxy_timer, jiffies + in hsr_check_announce()
82 timer_delete(&hsr->announce_timer); in hsr_check_announce()
83 if (hsr->redbox) in hsr_check_announce()
84 timer_delete(&hsr->announce_proxy_timer); in hsr_check_announce()
88 void hsr_check_carrier_and_operstate(struct hsr_priv *hsr) in hsr_check_carrier_and_operstate() argument
93 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_check_carrier_and_operstate()
102 int hsr_get_max_mtu(struct hsr_priv *hsr) in hsr_get_max_mtu() argument
108 hsr_for_each_port(hsr, port) in hsr_get_max_mtu()
119 struct hsr_priv *hsr; in hsr_dev_change_mtu() local
121 hsr = netdev_priv(dev); in hsr_dev_change_mtu()
123 if (new_mtu > hsr_get_max_mtu(hsr)) { in hsr_dev_change_mtu()
136 struct hsr_priv *hsr; in hsr_dev_open() local
140 hsr = netdev_priv(dev); in hsr_dev_open()
142 hsr_for_each_port(hsr, port) { in hsr_dev_open()
172 struct hsr_priv *hsr; in hsr_dev_close() local
174 hsr = netdev_priv(dev); in hsr_dev_close()
175 hsr_for_each_port(hsr, port) { in hsr_dev_close()
192 static netdev_features_t hsr_features_recompute(struct hsr_priv *hsr, in hsr_features_recompute() argument
208 hsr_for_each_port(hsr, port) in hsr_features_recompute()
219 struct hsr_priv *hsr = netdev_priv(dev); in hsr_fix_features() local
221 return hsr_features_recompute(hsr, features); in hsr_fix_features()
226 struct hsr_priv *hsr = netdev_priv(dev); in hsr_dev_xmit() local
229 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_dev_xmit()
234 spin_lock_bh(&hsr->seqnr_lock); in hsr_dev_xmit()
236 spin_unlock_bh(&hsr->seqnr_lock); in hsr_dev_xmit()
251 struct hsr_priv *hsr = master->hsr; in hsr_init_skb() local
276 hsr->sup_multicast_addr, in hsr_init_skb()
294 struct hsr_priv *hsr = port->hsr; in send_hsr_supervision_frame() local
303 if (hsr->announce_count < 3 && hsr->prot_version == 0) { in send_hsr_supervision_frame()
306 hsr->announce_count++; in send_hsr_supervision_frame()
309 if (hsr->redbox) in send_hsr_supervision_frame()
320 set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf)); in send_hsr_supervision_frame()
321 set_hsr_stag_HSR_ver(hsr_stag, hsr->prot_version); in send_hsr_supervision_frame()
324 spin_lock_bh(&hsr->seqnr_lock); in send_hsr_supervision_frame()
325 if (hsr->prot_version > 0) { in send_hsr_supervision_frame()
326 hsr_stag->sequence_nr = htons(hsr->sup_sequence_nr); in send_hsr_supervision_frame()
327 hsr->sup_sequence_nr++; in send_hsr_supervision_frame()
329 hsr_stag->sequence_nr = htons(hsr->sequence_nr); in send_hsr_supervision_frame()
330 hsr->sequence_nr++; in send_hsr_supervision_frame()
335 hsr_stag->tlv.HSR_TLV_length = hsr->prot_version ? in send_hsr_supervision_frame()
342 if (hsr->redbox && in send_hsr_supervision_frame()
343 hsr_is_node_in_db(&hsr->proxy_node_db, addr)) { in send_hsr_supervision_frame()
350 ether_addr_copy(hsr_sp->macaddress_A, hsr->macaddress_redbox); in send_hsr_supervision_frame()
354 spin_unlock_bh(&hsr->seqnr_lock); in send_hsr_supervision_frame()
359 spin_unlock_bh(&hsr->seqnr_lock); in send_hsr_supervision_frame()
367 struct hsr_priv *hsr = master->hsr; in send_prp_supervision_frame() local
380 set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf)); in send_prp_supervision_frame()
381 set_hsr_stag_HSR_ver(hsr_stag, (hsr->prot_version ? 1 : 0)); in send_prp_supervision_frame()
384 spin_lock_bh(&hsr->seqnr_lock); in send_prp_supervision_frame()
385 hsr_stag->sequence_nr = htons(hsr->sup_sequence_nr); in send_prp_supervision_frame()
386 hsr->sup_sequence_nr++; in send_prp_supervision_frame()
395 spin_unlock_bh(&hsr->seqnr_lock); in send_prp_supervision_frame()
400 spin_unlock_bh(&hsr->seqnr_lock); in send_prp_supervision_frame()
407 struct hsr_priv *hsr; in hsr_announce() local
411 hsr = from_timer(hsr, t, announce_timer); in hsr_announce()
414 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_announce()
415 hsr->proto_ops->send_sv_frame(master, &interval, master->dev->dev_addr); in hsr_announce()
418 mod_timer(&hsr->announce_timer, jiffies + interval); in hsr_announce()
427 struct hsr_priv *hsr = from_timer(hsr, t, announce_proxy_timer); in hsr_proxy_announce() local
436 interlink = hsr_port_get_hsr(hsr, HSR_PT_INTERLINK); in hsr_proxy_announce()
440 list_for_each_entry_rcu(node, &hsr->proxy_node_db, mac_list) { in hsr_proxy_announce()
441 if (hsr_addr_is_redbox(hsr, node->macaddress_A)) in hsr_proxy_announce()
443 hsr->proto_ops->send_sv_frame(interlink, &interval, in hsr_proxy_announce()
451 mod_timer(&hsr->announce_proxy_timer, jiffies + interval); in hsr_proxy_announce()
458 void hsr_del_ports(struct hsr_priv *hsr) in hsr_del_ports() argument
462 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A); in hsr_del_ports()
466 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); in hsr_del_ports()
470 port = hsr_port_get_hsr(hsr, HSR_PT_INTERLINK); in hsr_del_ports()
474 port = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_del_ports()
482 struct hsr_priv *hsr; in hsr_set_rx_mode() local
484 hsr = netdev_priv(dev); in hsr_set_rx_mode()
486 hsr_for_each_port(hsr, port) { in hsr_set_rx_mode()
504 struct hsr_priv *hsr; in hsr_change_rx_flags() local
506 hsr = netdev_priv(dev); in hsr_change_rx_flags()
508 hsr_for_each_port(hsr, port) { in hsr_change_rx_flags()
531 struct hsr_priv *hsr; in hsr_ndo_vlan_rx_add_vid() local
534 hsr = netdev_priv(dev); in hsr_ndo_vlan_rx_add_vid()
536 hsr_for_each_port(hsr, port) { in hsr_ndo_vlan_rx_add_vid()
578 struct hsr_priv *hsr; in hsr_ndo_vlan_rx_kill_vid() local
580 hsr = netdev_priv(dev); in hsr_ndo_vlan_rx_kill_vid()
582 hsr_for_each_port(hsr, port) { in hsr_ndo_vlan_rx_kill_vid()
669 struct hsr_priv *hsr = netdev_priv(ndev); in hsr_get_port_ndev() local
672 hsr_for_each_port(hsr, port) in hsr_get_port_ndev()
689 struct hsr_priv *hsr; in hsr_dev_finalize() local
692 hsr = netdev_priv(hsr_dev); in hsr_dev_finalize()
693 INIT_LIST_HEAD(&hsr->ports); in hsr_dev_finalize()
694 INIT_LIST_HEAD(&hsr->node_db); in hsr_dev_finalize()
695 INIT_LIST_HEAD(&hsr->proxy_node_db); in hsr_dev_finalize()
696 spin_lock_init(&hsr->list_lock); in hsr_dev_finalize()
705 hsr->net_id = PRP_LAN_ID << 1; in hsr_dev_finalize()
706 hsr->proto_ops = &prp_ops; in hsr_dev_finalize()
708 hsr->proto_ops = &hsr_ops; in hsr_dev_finalize()
712 res = hsr_create_self_node(hsr, hsr_dev->dev_addr, in hsr_dev_finalize()
717 spin_lock_init(&hsr->seqnr_lock); in hsr_dev_finalize()
719 hsr->sequence_nr = HSR_SEQNR_START; in hsr_dev_finalize()
720 hsr->sup_sequence_nr = HSR_SUP_SEQNR_START; in hsr_dev_finalize()
722 timer_setup(&hsr->announce_timer, hsr_announce, 0); in hsr_dev_finalize()
723 timer_setup(&hsr->prune_timer, hsr_prune_nodes, 0); in hsr_dev_finalize()
724 timer_setup(&hsr->prune_proxy_timer, hsr_prune_proxy_nodes, 0); in hsr_dev_finalize()
725 timer_setup(&hsr->announce_proxy_timer, hsr_proxy_announce, 0); in hsr_dev_finalize()
727 ether_addr_copy(hsr->sup_multicast_addr, def_multicast_addr); in hsr_dev_finalize()
728 hsr->sup_multicast_addr[ETH_ALEN - 1] = multicast_spec; in hsr_dev_finalize()
730 hsr->prot_version = protocol_version; in hsr_dev_finalize()
735 res = hsr_add_port(hsr, hsr_dev, HSR_PT_MASTER, extack); in hsr_dev_finalize()
742 hsr->fwd_offloaded = true; in hsr_dev_finalize()
754 res = hsr_add_port(hsr, slave[0], HSR_PT_SLAVE_A, extack); in hsr_dev_finalize()
758 res = hsr_add_port(hsr, slave[1], HSR_PT_SLAVE_B, extack); in hsr_dev_finalize()
763 res = hsr_add_port(hsr, interlink, HSR_PT_INTERLINK, extack); in hsr_dev_finalize()
767 hsr->redbox = true; in hsr_dev_finalize()
768 ether_addr_copy(hsr->macaddress_redbox, interlink->dev_addr); in hsr_dev_finalize()
769 mod_timer(&hsr->prune_proxy_timer, in hsr_dev_finalize()
773 hsr_debugfs_init(hsr, hsr_dev); in hsr_dev_finalize()
774 mod_timer(&hsr->prune_timer, jiffies + msecs_to_jiffies(PRUNE_PERIOD)); in hsr_dev_finalize()
779 hsr_del_ports(hsr); in hsr_dev_finalize()
781 hsr_del_self_node(hsr); in hsr_dev_finalize()