Lines Matching refs:dev

45 	struct net_device __rcu *dev;  member
48 static int l2tp_eth_dev_init(struct net_device *dev) in l2tp_eth_dev_init() argument
50 eth_hw_addr_random(dev); in l2tp_eth_dev_init()
51 eth_broadcast_addr(dev->broadcast); in l2tp_eth_dev_init()
52 netdev_lockdep_set_classes(dev); in l2tp_eth_dev_init()
57 static void l2tp_eth_dev_uninit(struct net_device *dev) in l2tp_eth_dev_uninit() argument
59 struct l2tp_eth *priv = netdev_priv(dev); in l2tp_eth_dev_uninit()
63 RCU_INIT_POINTER(spriv->dev, NULL); in l2tp_eth_dev_uninit()
69 static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev) in l2tp_eth_dev_xmit() argument
71 struct l2tp_eth *priv = netdev_priv(dev); in l2tp_eth_dev_xmit()
77 dev_dstats_tx_add(dev, len); in l2tp_eth_dev_xmit()
79 dev_dstats_tx_dropped(dev); in l2tp_eth_dev_xmit()
95 static void l2tp_eth_dev_setup(struct net_device *dev) in l2tp_eth_dev_setup() argument
97 SET_NETDEV_DEVTYPE(dev, &l2tpeth_type); in l2tp_eth_dev_setup()
98 ether_setup(dev); in l2tp_eth_dev_setup()
99 dev->priv_flags &= ~IFF_TX_SKB_SHARING; in l2tp_eth_dev_setup()
100 dev->lltx = true; in l2tp_eth_dev_setup()
101 dev->netdev_ops = &l2tp_eth_netdev_ops; in l2tp_eth_dev_setup()
102 dev->needs_free_netdev = true; in l2tp_eth_dev_setup()
103 dev->pcpu_stat_type = NETDEV_PCPU_STAT_DSTATS; in l2tp_eth_dev_setup()
109 struct net_device *dev; in l2tp_eth_dev_recv() local
126 dev = rcu_dereference(spriv->dev); in l2tp_eth_dev_recv()
127 if (!dev) in l2tp_eth_dev_recv()
130 if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS) in l2tp_eth_dev_recv()
131 dev_dstats_rx_add(dev, data_len); in l2tp_eth_dev_recv()
133 DEV_STATS_INC(dev, rx_errors); in l2tp_eth_dev_recv()
148 struct net_device *dev; in l2tp_eth_delete() local
154 dev = rtnl_dereference(spriv->dev); in l2tp_eth_delete()
155 if (dev) { in l2tp_eth_delete()
156 unregister_netdevice(dev); in l2tp_eth_delete()
169 struct net_device *dev; in l2tp_eth_show() local
172 dev = rcu_dereference(spriv->dev); in l2tp_eth_show()
173 if (!dev) { in l2tp_eth_show()
177 dev_hold(dev); in l2tp_eth_show()
180 seq_printf(m, " interface %s\n", dev->name); in l2tp_eth_show()
182 dev_put(dev); in l2tp_eth_show()
187 struct net_device *dev) in l2tp_eth_adjust_mtu() argument
196 dev->needed_headroom += sizeof(struct udphdr); in l2tp_eth_adjust_mtu()
217 if (mtu < dev->min_mtu || mtu > dev->max_mtu) in l2tp_eth_adjust_mtu()
218 dev->mtu = ETH_DATA_LEN - overhead; in l2tp_eth_adjust_mtu()
220 dev->mtu = mtu; in l2tp_eth_adjust_mtu()
222 dev->needed_headroom += session->hdr_len; in l2tp_eth_adjust_mtu()
230 struct net_device *dev; in l2tp_eth_create() local
252 dev = alloc_netdev(sizeof(*priv), name, name_assign_type, in l2tp_eth_create()
254 if (!dev) { in l2tp_eth_create()
259 dev_net_set(dev, net); in l2tp_eth_create()
260 dev->min_mtu = 0; in l2tp_eth_create()
261 dev->max_mtu = ETH_MAX_MTU; in l2tp_eth_create()
262 l2tp_eth_adjust_mtu(tunnel, session, dev); in l2tp_eth_create()
264 priv = netdev_priv(dev); in l2tp_eth_create()
288 rc = register_netdevice(dev); in l2tp_eth_create()
293 free_netdev(dev); in l2tp_eth_create()
298 strscpy(session->ifname, dev->name, IFNAMSIZ); in l2tp_eth_create()
299 rcu_assign_pointer(spriv->dev, dev); in l2tp_eth_create()
311 free_netdev(dev); in l2tp_eth_create()