On 06/17/2017 01:57 AM, Jakub Kicinski wrote:
Add an installation-time flag for requesting that the program
be installed only if it can be offloaded to HW.

Internally new command for ndo_xdp is added, this way we avoid
putting checks into drivers since they all return -EINVAL on
an unknown command.

Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com>
[...]
diff --git a/net/core/dev.c b/net/core/dev.c
index a04db264aa1c..05cec8e2cd82 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6959,7 +6959,10 @@ static int dev_xdp_install(struct net_device *dev, 
xdp_op_t xdp_op,
        struct netdev_xdp xdp;

        memset(&xdp, 0, sizeof(xdp));
-       xdp.command = XDP_SETUP_PROG;
+       if (flags & XDP_FLAGS_HW_MODE)
+               xdp.command = XDP_SETUP_PROG_HW;
+       else
+               xdp.command = XDP_SETUP_PROG;
        xdp.extack = extack;
        xdp.flags = flags;
        xdp.prog = prog;

One thing I'm not sure I follow is that while you pass flags to the ndo
in patch 1, add a new XDP_SETUP_PROG_HW command here in patch 2 based on
the flags, and later on in patch 6, you don't really make use of it, but
look at the flags anyway? Then, why adding separate XDP_SETUP_PROG_HW
in the first place?

[patch 6:]
@@ -3338,6 +3341,7 @@ static int nfp_net_xdp(struct net_device *netdev, struct 
netdev_xdp *xdp)

        switch (xdp->command) {
        case XDP_SETUP_PROG:
+       case XDP_SETUP_PROG_HW:
                return nfp_net_xdp_setup(nn, xdp->prog, xdp->flags,
                                         xdp->extack);

Reply via email to