Hi Ivan, > > [...] > > >+ > >+static int netsec_xdp(struct net_device *ndev, struct netdev_bpf *xdp) > >+{ > >+ struct netsec_priv *priv = netdev_priv(ndev); > >+ > >+ switch (xdp->command) { > >+ case XDP_SETUP_PROG: > >+ return netsec_xdp_setup(priv, xdp->prog, xdp->extack); > >+ case XDP_QUERY_PROG: > >+ xdp->prog_id = priv->xdp_prog ? priv->xdp_prog->aux->id : 0; > xdp_attachment family to save bpf flags? Sure why not. This can always be added later though since many drivers are already doing it similarly no?
> > >+ return 0; > >+ default: > >+ return -EINVAL; > >+ } > >+} > >+ > >static const struct net_device_ops netsec_netdev_ops = { > > .ndo_init = netsec_netdev_init, > > .ndo_uninit = netsec_netdev_uninit, > >@@ -1537,6 +1842,8 @@ static const struct net_device_ops netsec_netdev_ops = > >{ > > .ndo_set_mac_address = eth_mac_addr, > > .ndo_validate_addr = eth_validate_addr, > > .ndo_do_ioctl = netsec_netdev_ioctl, > >+ .ndo_xdp_xmit = netsec_xdp_xmit, > >+ .ndo_bpf = netsec_xdp, > >}; > > > >static int netsec_of_probe(struct platform_device *pdev, > >-- > >2.20.1 > > > > -- > Regards, > Ivan Khoronzhuk Thanks /Ilias