> On Wed, 16 Oct 2019 23:03:09 +0200, Lorenzo Bianconi wrote: > > Add basic XDP support to mvneta driver for devices that rely on software > > buffer management. Currently supported verdicts are: > > - XDP_DROP > > - XDP_PASS > > - XDP_REDIRECT > > - XDP_ABORTED > > > > - iptables drop: > > $iptables -t raw -I PREROUTING -p udp --dport 9 -j DROP > > $nstat -n && sleep 1 && nstat > > IpInReceives 151169 0.0 > > IpExtInOctets 6953544 0.0 > > IpExtInNoECTPkts 151165 0.0 > > > > - XDP_DROP via xdp1 > > $./samples/bpf/xdp1 3 > > proto 0: 421419 pkt/s > > proto 0: 421444 pkt/s > > proto 0: 421393 pkt/s > > proto 0: 421440 pkt/s > > proto 0: 421184 pkt/s > > > > Tested-by: Matteo Croce <mcr...@redhat.com> > > Signed-off-by: Lorenzo Bianconi <lore...@kernel.org> > > > +static int mvneta_xdp_setup(struct net_device *dev, struct bpf_prog *prog, > > + struct netlink_ext_ack *extack) > > +{ > > + struct mvneta_port *pp = netdev_priv(dev); > > + struct bpf_prog *old_prog; > > + > > + if (prog && dev->mtu > MVNETA_MAX_RX_BUF_SIZE) { > > + NL_SET_ERR_MSG_MOD(extack, "Jumbo frames not supported on XDP"); > > + return -EOPNOTSUPP; > > + } > > + > > + if (netif_running(dev)) > > + mvneta_stop(dev); > > Actually if pp->prog && prog you don't have to stop/start, right? > You just gotta restart if !!pp->prog != !!prog?
uhm..right :). I will fix in in v5. Regards, Lorenzo > > > + old_prog = xchg(&pp->xdp_prog, prog); > > + if (old_prog) > > + bpf_prog_put(old_prog); > > + > > + if (netif_running(dev)) > > + return mvneta_open(dev); > > + > > + return 0; > > +}
signature.asc
Description: PGP signature