summaryrefslogtreecommitdiff
path: root/net/core/rtnetlink.c
diff options
context:
space:
mode:
authorJakub Kicinski <jakub.kicinski@netronome.com>2018-07-12 06:36:39 +0300
committerDaniel Borkmann <daniel@iogearbox.net>2018-07-13 21:26:35 +0300
commit6b8675897338f874c41612655a85d8e10cdb23d8 (patch)
tree6226692b2779d9c40bb413c7fad298956a2b778e /net/core/rtnetlink.c
parent4f91da26c81145f255cb153152ffed70014b1c41 (diff)
downloadlinux-6b8675897338f874c41612655a85d8e10cdb23d8.tar.xz
xdp: don't make drivers report attachment mode
prog_attached of struct netdev_bpf should have been superseded by simply setting prog_id long time ago, but we kept it around to allow offloading drivers to communicate attachment mode (drv vs hw). Subsequently drivers were also allowed to report back attachment flags (prog_flags), and since nowadays only programs attached will XDP_FLAGS_HW_MODE can get offloaded, we can tell the attachment mode from the flags driver reports. Remove prog_attached member. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'net/core/rtnetlink.c')
-rw-r--r--net/core/rtnetlink.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index b40242459907..02ebc056a688 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1372,9 +1372,13 @@ static u8 rtnl_xdp_attached_mode(struct net_device *dev, u32 *prog_id)
return XDP_ATTACHED_NONE;
__dev_xdp_query(dev, ops->ndo_bpf, &xdp);
- *prog_id = xdp.prog_id;
+ if (!xdp.prog_id)
+ return XDP_ATTACHED_NONE;
- return xdp.prog_attached;
+ *prog_id = xdp.prog_id;
+ if (xdp.prog_flags & XDP_FLAGS_HW_MODE)
+ return XDP_ATTACHED_HW;
+ return XDP_ATTACHED_DRV;
}
static int rtnl_xdp_fill(struct sk_buff *skb, struct net_device *dev)