summaryrefslogtreecommitdiff
path: root/net/core/rtnetlink.c
diff options
context:
space:
mode:
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)