Lines Matching refs:hsr
62 hsr_for_each_port(master->hsr, port) { in hsr_check_carrier()
77 struct hsr_priv *hsr; in hsr_check_announce() local
79 hsr = netdev_priv(hsr_dev); in hsr_check_announce()
83 hsr->announce_count = 0; in hsr_check_announce()
84 mod_timer(&hsr->announce_timer, in hsr_check_announce()
90 del_timer(&hsr->announce_timer); in hsr_check_announce()
93 void hsr_check_carrier_and_operstate(struct hsr_priv *hsr) in hsr_check_carrier_and_operstate() argument
99 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_check_carrier_and_operstate()
109 int hsr_get_max_mtu(struct hsr_priv *hsr) in hsr_get_max_mtu() argument
115 hsr_for_each_port(hsr, port) in hsr_get_max_mtu()
126 struct hsr_priv *hsr; in hsr_dev_change_mtu() local
128 hsr = netdev_priv(dev); in hsr_dev_change_mtu()
130 if (new_mtu > hsr_get_max_mtu(hsr)) { in hsr_dev_change_mtu()
143 struct hsr_priv *hsr; in hsr_dev_open() local
147 hsr = netdev_priv(dev); in hsr_dev_open()
150 hsr_for_each_port(hsr, port) { in hsr_dev_open()
180 static netdev_features_t hsr_features_recompute(struct hsr_priv *hsr, in hsr_features_recompute() argument
196 hsr_for_each_port(hsr, port) in hsr_features_recompute()
207 struct hsr_priv *hsr = netdev_priv(dev); in hsr_fix_features() local
209 return hsr_features_recompute(hsr, features); in hsr_fix_features()
214 struct hsr_priv *hsr = netdev_priv(dev); in hsr_dev_xmit() local
217 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_dev_xmit()
222 spin_lock_bh(&hsr->seqnr_lock); in hsr_dev_xmit()
224 spin_unlock_bh(&hsr->seqnr_lock); in hsr_dev_xmit()
239 struct hsr_priv *hsr = master->hsr; in hsr_init_skb() local
260 hsr->sup_multicast_addr, in hsr_init_skb()
279 struct hsr_priv *hsr = master->hsr; in send_hsr_supervision_frame() local
286 if (hsr->announce_count < 3 && hsr->prot_version == 0) { in send_hsr_supervision_frame()
289 hsr->announce_count++; in send_hsr_supervision_frame()
299 set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf)); in send_hsr_supervision_frame()
300 set_hsr_stag_HSR_ver(hsr_stag, hsr->prot_version); in send_hsr_supervision_frame()
303 spin_lock_bh(&hsr->seqnr_lock); in send_hsr_supervision_frame()
304 if (hsr->prot_version > 0) { in send_hsr_supervision_frame()
305 hsr_stag->sequence_nr = htons(hsr->sup_sequence_nr); in send_hsr_supervision_frame()
306 hsr->sup_sequence_nr++; in send_hsr_supervision_frame()
308 hsr_stag->sequence_nr = htons(hsr->sequence_nr); in send_hsr_supervision_frame()
309 hsr->sequence_nr++; in send_hsr_supervision_frame()
314 hsr_stag->HSR_TLV_length = hsr->prot_version ? in send_hsr_supervision_frame()
322 spin_unlock_bh(&hsr->seqnr_lock); in send_hsr_supervision_frame()
327 spin_unlock_bh(&hsr->seqnr_lock); in send_hsr_supervision_frame()
334 struct hsr_priv *hsr = master->hsr; in send_prp_supervision_frame() local
347 set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf)); in send_prp_supervision_frame()
348 set_hsr_stag_HSR_ver(hsr_stag, (hsr->prot_version ? 1 : 0)); in send_prp_supervision_frame()
351 spin_lock_bh(&hsr->seqnr_lock); in send_prp_supervision_frame()
352 hsr_stag->sequence_nr = htons(hsr->sup_sequence_nr); in send_prp_supervision_frame()
353 hsr->sup_sequence_nr++; in send_prp_supervision_frame()
362 spin_unlock_bh(&hsr->seqnr_lock); in send_prp_supervision_frame()
367 spin_unlock_bh(&hsr->seqnr_lock); in send_prp_supervision_frame()
374 struct hsr_priv *hsr; in hsr_announce() local
378 hsr = from_timer(hsr, t, announce_timer); in hsr_announce()
381 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_announce()
382 hsr->proto_ops->send_sv_frame(master, &interval); in hsr_announce()
385 mod_timer(&hsr->announce_timer, jiffies + interval); in hsr_announce()
390 void hsr_del_ports(struct hsr_priv *hsr) in hsr_del_ports() argument
394 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A); in hsr_del_ports()
398 port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); in hsr_del_ports()
402 port = hsr_port_get_hsr(hsr, HSR_PT_MASTER); in hsr_del_ports()
485 struct hsr_priv *hsr; in hsr_dev_finalize() local
488 hsr = netdev_priv(hsr_dev); in hsr_dev_finalize()
489 INIT_LIST_HEAD(&hsr->ports); in hsr_dev_finalize()
490 INIT_LIST_HEAD(&hsr->node_db); in hsr_dev_finalize()
491 INIT_LIST_HEAD(&hsr->self_node_db); in hsr_dev_finalize()
492 spin_lock_init(&hsr->list_lock); in hsr_dev_finalize()
501 hsr->net_id = PRP_LAN_ID << 1; in hsr_dev_finalize()
502 hsr->proto_ops = &prp_ops; in hsr_dev_finalize()
504 hsr->proto_ops = &hsr_ops; in hsr_dev_finalize()
508 res = hsr_create_self_node(hsr, hsr_dev->dev_addr, in hsr_dev_finalize()
513 spin_lock_init(&hsr->seqnr_lock); in hsr_dev_finalize()
515 hsr->sequence_nr = HSR_SEQNR_START; in hsr_dev_finalize()
516 hsr->sup_sequence_nr = HSR_SUP_SEQNR_START; in hsr_dev_finalize()
518 timer_setup(&hsr->announce_timer, hsr_announce, 0); in hsr_dev_finalize()
519 timer_setup(&hsr->prune_timer, hsr_prune_nodes, 0); in hsr_dev_finalize()
521 ether_addr_copy(hsr->sup_multicast_addr, def_multicast_addr); in hsr_dev_finalize()
522 hsr->sup_multicast_addr[ETH_ALEN - 1] = multicast_spec; in hsr_dev_finalize()
524 hsr->prot_version = protocol_version; in hsr_dev_finalize()
539 res = hsr_add_port(hsr, hsr_dev, HSR_PT_MASTER, extack); in hsr_dev_finalize()
549 res = hsr_add_port(hsr, slave[0], HSR_PT_SLAVE_A, extack); in hsr_dev_finalize()
553 res = hsr_add_port(hsr, slave[1], HSR_PT_SLAVE_B, extack); in hsr_dev_finalize()
557 hsr_debugfs_init(hsr, hsr_dev); in hsr_dev_finalize()
558 mod_timer(&hsr->prune_timer, jiffies + msecs_to_jiffies(PRUNE_PERIOD)); in hsr_dev_finalize()
563 hsr_del_ports(hsr); in hsr_dev_finalize()
565 hsr_del_self_node(hsr); in hsr_dev_finalize()