On Mon, 19 Aug 2024 00:44:27 +0900 Taehee Yoo wrote: > > @@ -9537,6 +9540,10 @@ static int dev_xdp_attach(struct net_device *dev, struct netlink_ext_ack *extack > > NL_SET_ERR_MSG(extack, "Native and generic XDP can't be active at the same time"); > > return -EEXIST; > > } > > + if (dev_get_max_mp_channel(dev) != -1) { > > + NL_SET_ERR_MSG(extack, "XDP can't be installed on a netdev using memory providers"); > > + return -EINVAL; > > + } > > Should we consider virtual interfaces like bonding, bridge, etc? > Virtual interfaces as an upper interface of physical interfaces can > still install XDP prog. > > # ip link add bond0 type bond > # ip link set eth0 master bond0 > # ip link set bond0 xdp pin /sys/fs/bpf/x/y > and > # ip link set bond0 xdpgeneric pin /sys/fs/bpf/x/y > > All virtual interfaces can install generic XDP prog. > The bonding interface can install native XDP prog. Good point. We may need some common helpers to place the checks for XDP. They are spread all over the place now.