xsk: add usage of XDP features flags
authorMarek Majtyka <alardam@gmail.com>
Wed, 1 Feb 2023 10:24:19 +0000 (11:24 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 3 Feb 2023 04:48:23 +0000 (20:48 -0800)
Change necessary condition check for XSK from ndo functions to
xdp features flags.

Signed-off-by: Marek Majtyka <alardam@gmail.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/45a98ec67b4556a6a22dfd85df3eb8276beeeb74.1675245258.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
net/xdp/xsk_buff_pool.c

index ed6c718..b2df1e0 100644 (file)
@@ -140,6 +140,10 @@ static void xp_disable_drv_zc(struct xsk_buff_pool *pool)
        }
 }
 
+#define NETDEV_XDP_ACT_ZC      (NETDEV_XDP_ACT_BASIC |         \
+                                NETDEV_XDP_ACT_REDIRECT |      \
+                                NETDEV_XDP_ACT_XSK_ZEROCOPY)
+
 int xp_assign_dev(struct xsk_buff_pool *pool,
                  struct net_device *netdev, u16 queue_id, u16 flags)
 {
@@ -178,8 +182,7 @@ int xp_assign_dev(struct xsk_buff_pool *pool,
                /* For copy-mode, we are done. */
                return 0;
 
-       if (!netdev->netdev_ops->ndo_bpf ||
-           !netdev->netdev_ops->ndo_xsk_wakeup) {
+       if ((netdev->xdp_features & NETDEV_XDP_ACT_ZC) != NETDEV_XDP_ACT_ZC) {
                err = -EOPNOTSUPP;
                goto err_unreg_pool;
        }