Lines Matching +full:sock +full:- +full:priv
1 // SPDX-License-Identifier: GPL-2.0-or-later
17 #include <net/sock.h>
50 eth_broadcast_addr(dev->broadcast); in l2tp_eth_dev_init()
58 struct l2tp_eth *priv = netdev_priv(dev); in l2tp_eth_dev_uninit() local
61 spriv = l2tp_session_priv(priv->session); in l2tp_eth_dev_uninit()
62 RCU_INIT_POINTER(spriv->dev, NULL); in l2tp_eth_dev_uninit()
70 struct l2tp_eth *priv = netdev_priv(dev); in l2tp_eth_dev_xmit() local
71 struct l2tp_session *session = priv->session; in l2tp_eth_dev_xmit()
72 unsigned int len = skb->len; in l2tp_eth_dev_xmit()
98 dev->priv_flags &= ~IFF_TX_SKB_SHARING; in l2tp_eth_dev_setup()
99 dev->lltx = true; in l2tp_eth_dev_setup()
100 dev->netdev_ops = &l2tp_eth_netdev_ops; in l2tp_eth_dev_setup()
101 dev->needs_free_netdev = true; in l2tp_eth_dev_setup()
102 dev->pcpu_stat_type = NETDEV_PCPU_STAT_DSTATS; in l2tp_eth_dev_setup()
116 skb->ip_summed = CHECKSUM_NONE; in l2tp_eth_dev_recv()
118 /* drop outer flow-hash */ in l2tp_eth_dev_recv()
125 dev = rcu_dereference(spriv->dev); in l2tp_eth_dev_recv()
153 dev = rtnl_dereference(spriv->dev); in l2tp_eth_delete()
171 dev = rcu_dereference(spriv->dev); in l2tp_eth_show()
179 seq_printf(m, " interface %s\n", dev->name); in l2tp_eth_show()
193 if (tunnel->encap == L2TP_ENCAPTYPE_UDP) { in l2tp_eth_adjust_mtu()
195 dev->needed_headroom += sizeof(struct udphdr); in l2tp_eth_adjust_mtu()
198 lock_sock(tunnel->sock); in l2tp_eth_adjust_mtu()
199 l3_overhead = kernel_sock_ip_overhead(tunnel->sock); in l2tp_eth_adjust_mtu()
200 release_sock(tunnel->sock); in l2tp_eth_adjust_mtu()
204 * because tunnel->sock was NULL or the socket's in l2tp_eth_adjust_mtu()
210 /* Adjust MTU, factor overhead - underlay L3, overlay L2 hdr in l2tp_eth_adjust_mtu()
213 overhead += session->hdr_len + ETH_HLEN + l3_overhead; in l2tp_eth_adjust_mtu()
215 mtu = l2tp_tunnel_dst_mtu(tunnel) - overhead; in l2tp_eth_adjust_mtu()
216 if (mtu < dev->min_mtu || mtu > dev->max_mtu) in l2tp_eth_adjust_mtu()
217 dev->mtu = ETH_DATA_LEN - overhead; in l2tp_eth_adjust_mtu()
219 dev->mtu = mtu; in l2tp_eth_adjust_mtu()
221 dev->needed_headroom += session->hdr_len; in l2tp_eth_adjust_mtu()
232 struct l2tp_eth *priv; in l2tp_eth_create() local
236 if (cfg->ifname) { in l2tp_eth_create()
237 strscpy(name, cfg->ifname, IFNAMSIZ); in l2tp_eth_create()
251 dev = alloc_netdev(sizeof(*priv), name, name_assign_type, in l2tp_eth_create()
254 rc = -ENOMEM; in l2tp_eth_create()
259 dev->min_mtu = 0; in l2tp_eth_create()
260 dev->max_mtu = ETH_MAX_MTU; in l2tp_eth_create()
263 priv = netdev_priv(dev); in l2tp_eth_create()
264 priv->session = session; in l2tp_eth_create()
266 session->recv_skb = l2tp_eth_dev_recv; in l2tp_eth_create()
267 session->session_close = l2tp_eth_delete; in l2tp_eth_create()
269 session->show = l2tp_eth_show; in l2tp_eth_create()
273 refcount_inc(&session->ref_count); in l2tp_eth_create()
279 * unregister, even if it happened to run before we assign spriv->dev. in l2tp_eth_create()
297 strscpy(session->ifname, dev->name, IFNAMSIZ); in l2tp_eth_create()
298 rcu_assign_pointer(spriv->dev, dev); in l2tp_eth_create()