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 --- |