Lines Matching +full:sock +full:- +full:priv

1 // SPDX-License-Identifier: GPL-2.0-or-later
17 #include <net/sock.h>
51 eth_broadcast_addr(dev->broadcast); in l2tp_eth_dev_init()
59 struct l2tp_eth *priv = netdev_priv(dev); in l2tp_eth_dev_uninit() local
62 spriv = l2tp_session_priv(priv->session); in l2tp_eth_dev_uninit()
63 RCU_INIT_POINTER(spriv->dev, NULL); in l2tp_eth_dev_uninit()
71 struct l2tp_eth *priv = netdev_priv(dev); in l2tp_eth_dev_xmit() local
72 struct l2tp_session *session = priv->session; in l2tp_eth_dev_xmit()
73 unsigned int len = skb->len; in l2tp_eth_dev_xmit()
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()
117 skb->ip_summed = CHECKSUM_NONE; in l2tp_eth_dev_recv()
119 /* drop outer flow-hash */ in l2tp_eth_dev_recv()
126 dev = rcu_dereference(spriv->dev); in l2tp_eth_dev_recv()
154 dev = rtnl_dereference(spriv->dev); in l2tp_eth_delete()
172 dev = rcu_dereference(spriv->dev); in l2tp_eth_show()
180 seq_printf(m, " interface %s\n", dev->name); in l2tp_eth_show()
194 if (tunnel->encap == L2TP_ENCAPTYPE_UDP) { in l2tp_eth_adjust_mtu()
196 dev->needed_headroom += sizeof(struct udphdr); in l2tp_eth_adjust_mtu()
199 lock_sock(tunnel->sock); in l2tp_eth_adjust_mtu()
200 l3_overhead = kernel_sock_ip_overhead(tunnel->sock); in l2tp_eth_adjust_mtu()
201 release_sock(tunnel->sock); in l2tp_eth_adjust_mtu()
205 * because tunnel->sock was NULL or the socket's in l2tp_eth_adjust_mtu()
211 /* Adjust MTU, factor overhead - underlay L3, overlay L2 hdr in l2tp_eth_adjust_mtu()
214 overhead += session->hdr_len + ETH_HLEN + l3_overhead; in l2tp_eth_adjust_mtu()
216 mtu = l2tp_tunnel_dst_mtu(tunnel) - overhead; 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()
233 struct l2tp_eth *priv; in l2tp_eth_create() local
237 if (cfg->ifname) { in l2tp_eth_create()
238 strscpy(name, cfg->ifname, IFNAMSIZ); in l2tp_eth_create()
252 dev = alloc_netdev(sizeof(*priv), name, name_assign_type, in l2tp_eth_create()
255 rc = -ENOMEM; in l2tp_eth_create()
260 dev->min_mtu = 0; in l2tp_eth_create()
261 dev->max_mtu = ETH_MAX_MTU; in l2tp_eth_create()
264 priv = netdev_priv(dev); in l2tp_eth_create()
265 priv->session = session; in l2tp_eth_create()
267 session->recv_skb = l2tp_eth_dev_recv; in l2tp_eth_create()
268 session->session_close = l2tp_eth_delete; in l2tp_eth_create()
270 session->show = l2tp_eth_show; in l2tp_eth_create()
274 refcount_inc(&session->ref_count); in l2tp_eth_create()
280 * unregister, even if it happened to run before we assign spriv->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()