tun.c (954b3c4397792c8614aa4aaf25030ae87ece8307) | tun.c (1efba987c48629c0c64703bb4ea76ca1a3771d17) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * TUN - Universal TUN/TAP device driver. 4 * Copyright (C) 1999-2002 Maxim Krasnyansky <maxk@qualcomm.com> 5 * 6 * $Id: tun.c,v 1.15 2002/03/01 02:44:24 maxk Exp $ 7 */ 8 --- 1704 unchanged lines hidden (view full) --- 1713 if (act == XDP_REDIRECT || act == XDP_TX) { 1714 get_page(alloc_frag->page); 1715 alloc_frag->offset += buflen; 1716 } 1717 err = tun_xdp_act(tun, xdp_prog, &xdp, act); 1718 if (err < 0) 1719 goto err_xdp; 1720 if (err == XDP_REDIRECT) | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * TUN - Universal TUN/TAP device driver. 4 * Copyright (C) 1999-2002 Maxim Krasnyansky <maxk@qualcomm.com> 5 * 6 * $Id: tun.c,v 1.15 2002/03/01 02:44:24 maxk Exp $ 7 */ 8 --- 1704 unchanged lines hidden (view full) --- 1713 if (act == XDP_REDIRECT || act == XDP_TX) { 1714 get_page(alloc_frag->page); 1715 alloc_frag->offset += buflen; 1716 } 1717 err = tun_xdp_act(tun, xdp_prog, &xdp, act); 1718 if (err < 0) 1719 goto err_xdp; 1720 if (err == XDP_REDIRECT) |
1721 xdp_do_flush(); | 1721 xdp_do_flush_map(); |
1722 if (err != XDP_PASS) 1723 goto out; 1724 1725 pad = xdp.data - xdp.data_hard_start; 1726 len = xdp.data_end - xdp.data; 1727 } 1728 rcu_read_unlock(); 1729 local_bh_enable(); --- 201 unchanged lines hidden (view full) --- 1931 local_bh_disable(); 1932 rcu_read_lock(); 1933 xdp_prog = rcu_dereference(tun->xdp_prog); 1934 if (xdp_prog) { 1935 ret = do_xdp_generic(xdp_prog, skb); 1936 if (ret != XDP_PASS) { 1937 rcu_read_unlock(); 1938 local_bh_enable(); | 1722 if (err != XDP_PASS) 1723 goto out; 1724 1725 pad = xdp.data - xdp.data_hard_start; 1726 len = xdp.data_end - xdp.data; 1727 } 1728 rcu_read_unlock(); 1729 local_bh_enable(); --- 201 unchanged lines hidden (view full) --- 1931 local_bh_disable(); 1932 rcu_read_lock(); 1933 xdp_prog = rcu_dereference(tun->xdp_prog); 1934 if (xdp_prog) { 1935 ret = do_xdp_generic(xdp_prog, skb); 1936 if (ret != XDP_PASS) { 1937 rcu_read_unlock(); 1938 local_bh_enable(); |
1939 if (frags) { 1940 tfile->napi.skb = NULL; 1941 mutex_unlock(&tfile->napi_mutex); 1942 } |
|
1939 return total_len; 1940 } 1941 } 1942 rcu_read_unlock(); 1943 local_bh_enable(); 1944 } 1945 1946 /* Compute the costly rx hash only if needed for flow updates. --- 597 unchanged lines hidden (view full) --- 2544 rcu_read_lock(); 2545 2546 for (i = 0; i < n; i++) { 2547 xdp = &((struct xdp_buff *)ctl->ptr)[i]; 2548 tun_xdp_one(tun, tfile, xdp, &flush, &tpage); 2549 } 2550 2551 if (flush) | 1943 return total_len; 1944 } 1945 } 1946 rcu_read_unlock(); 1947 local_bh_enable(); 1948 } 1949 1950 /* Compute the costly rx hash only if needed for flow updates. --- 597 unchanged lines hidden (view full) --- 2548 rcu_read_lock(); 2549 2550 for (i = 0; i < n; i++) { 2551 xdp = &((struct xdp_buff *)ctl->ptr)[i]; 2552 tun_xdp_one(tun, tfile, xdp, &flush, &tpage); 2553 } 2554 2555 if (flush) |
2552 xdp_do_flush(); | 2556 xdp_do_flush_map(); |
2553 2554 rcu_read_unlock(); 2555 local_bh_enable(); 2556 2557 tun_put_page(&tpage); 2558 2559 ret = total_len; 2560 goto out; --- 1186 unchanged lines hidden --- | 2557 2558 rcu_read_unlock(); 2559 local_bh_enable(); 2560 2561 tun_put_page(&tpage); 2562 2563 ret = total_len; 2564 goto out; --- 1186 unchanged lines hidden --- |