From: Jesper Dangaard Brouer <bro...@redhat.com> Date: Fri, 28 Jun 2019 15:35:52 +0200
> On Fri, 28 Jun 2019 13:39:15 +0300 > Ilias Apalodimas <ilias.apalodi...@linaro.org> wrote: > >> +static int netsec_xdp_setup(struct netsec_priv *priv, struct bpf_prog *prog, >> + struct netlink_ext_ack *extack) >> +{ >> + struct net_device *dev = priv->ndev; >> + struct bpf_prog *old_prog; >> + >> + /* For now just support only the usual MTU sized frames */ >> + if (prog && dev->mtu > 1500) { >> + NL_SET_ERR_MSG_MOD(extack, "Jumbo frames not supported on XDP"); >> + return -EOPNOTSUPP; >> + } >> + >> + if (netif_running(dev)) >> + netsec_netdev_stop(dev); >> + >> + /* Detach old prog, if any */ >> + old_prog = xchg(&priv->xdp_prog, prog); >> + if (old_prog) >> + bpf_prog_put(old_prog); >> + >> + if (netif_running(dev)) >> + netsec_netdev_open(dev); > > Shouldn't the if-statement be if (!netif_running(dev)) Hmmm, does netsec_netdev_stop() clear the running flag? That just runs the driver internal routine and doesn't update IFF_UP et al. which the core networking would do.