linux/drivers/net
John Fastabend 72979a6c35 virtio_net: xdp, add slowpath case for non contiguous buffers
virtio_net XDP support expects receive buffers to be contiguous.
If this is not the case we enable a slowpath to allow connectivity
to continue but at a significan performance overhead associated with
linearizing data. To make it painfully aware to users that XDP is
running in a degraded mode we throw an xdp buffer error.

To linearize packets we allocate a page and copy the segments of
the data, including the header, into it. After this the page can be
handled by XDP code flow as normal.

Then depending on the return code the page is either freed or sent
to the XDP xmit path. There is no attempt to optimize this path.

This case is being handled simple as a precaution in case some
unknown backend were to generate packets in this form. To test this
I had to hack qemu and force it to generate these packets. I do not
expect this case to be generated by "real" backends.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-12-17 11:48:55 -05:00
..
appletalk net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
arcnet
bonding netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
caif
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-10 16:21:55 -05:00
cris net: cris: make eth_v10.c explicitly non-modular 2016-10-31 20:58:34 -04:00
dsa net: dsa: mv88e6xxx: Fix opps when adding vlan bridge 2016-12-16 13:26:50 -05:00
ethernet dpaa_eth: remove redundant dependency on FSL_SOC 2016-12-17 11:42:45 -05:00
fddi net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
fjes net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
hamradio
hippi net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
hyperv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-10 16:21:55 -05:00
ieee802154 ieee802154: atusb: implement .set_frame_retries ops callback 2016-12-08 07:43:29 +01:00
ipvlan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-10 16:21:55 -05:00
irda irda: w83977af_ir: Neaten logging 2016-12-06 21:46:56 -05:00
phy net: phy: phy drivers should not set SUPPORTED_[Asym_]Pause 2016-12-10 23:31:19 -05:00
plip net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ppp netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
slip net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
team genetlink: mark families as __ro_after_init 2016-10-27 16:16:09 -04:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-10 16:21:55 -05:00
vmxnet3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
wimax net: use core MTU range checking in wireless drivers 2016-10-20 14:51:08 -04:00
wireless iwlwifi: use reset to set transport header 2016-12-03 15:49:16 -05:00
xen-netback xen-netback: prefer xenbus_scanf() over xenbus_gather() 2016-11-09 20:24:35 -05:00
dummy.c dummy: expend mtu range for dummy device 2016-12-07 13:29:45 -05:00
eql.c
geneve.c geneve: avoid use-after-free of skb->data 2016-12-02 14:07:11 -05:00
gtp.c netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c macsec: remove first zero and add attribute name in comments 2016-12-08 13:08:21 -05:00
macvlan.c driver: macvlan: Remove the rcu member of macvlan_port 2016-12-07 13:22:07 -05:00
macvtap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-03 12:29:53 -05:00
Makefile
mdio.c
mii.c net: mii: report 0 for unknown lp_advertising 2016-11-09 20:26:58 -05:00
netconsole.c
nlmon.c nlmon: use core MTU range checking in nlmon driver 2016-12-07 13:28:26 -05:00
ntb_netdev.c net: use core MTU range checking in core net infra 2016-10-20 14:51:09 -04:00
rionet.c net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
sb1000.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
Space.c
sungem_phy.c
tun.c tun: Use netif_receive_skb instead of netif_rx 2016-12-06 22:24:59 -05:00
veth.c net: use core MTU range checking in core net infra 2016-10-20 14:51:09 -04:00
virtio_net.c virtio_net: xdp, add slowpath case for non contiguous buffers 2016-12-17 11:48:55 -05:00
vrf.c net: vrf: Drop conntrack data after pass through VRF device on Tx 2016-12-17 10:47:31 -05:00
vxlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-03 12:29:53 -05:00
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-15 10:54:36 -05:00