hsr_device.c (2d65685a4a6ff6ef6bfe42717222db92c04224c2) hsr_device.c (8f4c0e01789c18674acdf17cae3822b3dc3db715)
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright 2011-2014 Autronica Fire and Security AS
3 *
4 * Author(s):
5 * 2011-2014 Arvid Brodin, arvid.brodin@alten.se
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright 2011-2014 Autronica Fire and Security AS
3 *
4 * Author(s):
5 * 2011-2014 Arvid Brodin, arvid.brodin@alten.se
6 *
7 * This file contains device methods for creating, using and destroying
6 * This file contains device methods for creating, using and destroying
8 * virtual HSR devices.
7 * virtual HSR or PRP devices.
9 */
10
11#include <linux/netdevice.h>
12#include <linux/skbuff.h>
13#include <linux/etherdevice.h>
14#include <linux/rtnetlink.h>
15#include <linux/pkt_sched.h>
16#include "hsr_device.h"

--- 188 unchanged lines hidden (view full) ---

205static netdev_features_t hsr_fix_features(struct net_device *dev,
206 netdev_features_t features)
207{
208 struct hsr_priv *hsr = netdev_priv(dev);
209
210 return hsr_features_recompute(hsr, features);
211}
212
8 */
9
10#include <linux/netdevice.h>
11#include <linux/skbuff.h>
12#include <linux/etherdevice.h>
13#include <linux/rtnetlink.h>
14#include <linux/pkt_sched.h>
15#include "hsr_device.h"

--- 188 unchanged lines hidden (view full) ---

204static netdev_features_t hsr_fix_features(struct net_device *dev,
205 netdev_features_t features)
206{
207 struct hsr_priv *hsr = netdev_priv(dev);
208
209 return hsr_features_recompute(hsr, features);
210}
211
213static int hsr_dev_xmit(struct sk_buff *skb, struct net_device *dev)
212static netdev_tx_t hsr_dev_xmit(struct sk_buff *skb, struct net_device *dev)
214{
215 struct hsr_priv *hsr = netdev_priv(dev);
216 struct hsr_port *master;
217
218 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER);
219 if (master) {
220 skb->dev = master->dev;
221 hsr_forward_skb(skb, master);

--- 200 unchanged lines hidden (view full) ---

422 hsr = netdev_priv(hsr_dev);
423 INIT_LIST_HEAD(&hsr->ports);
424 INIT_LIST_HEAD(&hsr->node_db);
425 INIT_LIST_HEAD(&hsr->self_node_db);
426 spin_lock_init(&hsr->list_lock);
427
428 ether_addr_copy(hsr_dev->dev_addr, slave[0]->dev_addr);
429
213{
214 struct hsr_priv *hsr = netdev_priv(dev);
215 struct hsr_port *master;
216
217 master = hsr_port_get_hsr(hsr, HSR_PT_MASTER);
218 if (master) {
219 skb->dev = master->dev;
220 hsr_forward_skb(skb, master);

--- 200 unchanged lines hidden (view full) ---

421 hsr = netdev_priv(hsr_dev);
422 INIT_LIST_HEAD(&hsr->ports);
423 INIT_LIST_HEAD(&hsr->node_db);
424 INIT_LIST_HEAD(&hsr->self_node_db);
425 spin_lock_init(&hsr->list_lock);
426
427 ether_addr_copy(hsr_dev->dev_addr, slave[0]->dev_addr);
428
429 /* currently PRP is not supported */
430 if (protocol_version == PRP_V1)
431 return -EPROTONOSUPPORT;
432
430 /* Make sure we recognize frames from ourselves in hsr_rcv() */
431 res = hsr_create_self_node(hsr, hsr_dev->dev_addr,
432 slave[1]->dev_addr);
433 if (res < 0)
434 return res;
435
436 spin_lock_init(&hsr->seqnr_lock);
437 /* Overflow soon to find bugs easier: */

--- 56 unchanged lines hidden ---
433 /* Make sure we recognize frames from ourselves in hsr_rcv() */
434 res = hsr_create_self_node(hsr, hsr_dev->dev_addr,
435 slave[1]->dev_addr);
436 if (res < 0)
437 return res;
438
439 spin_lock_init(&hsr->seqnr_lock);
440 /* Overflow soon to find bugs easier: */

--- 56 unchanged lines hidden ---