]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gve: Use extack to log xdp config verification errors
authorAnkit Garg <nktgrg@google.com>
Thu, 6 Nov 2025 19:27:44 +0000 (11:27 -0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 11 Nov 2025 01:36:37 +0000 (17:36 -0800)
Plumb extack as it allows us to send more detailed error messages back
and append 'gve' suffix to method name per convention.

NL_SET_ERR_MSG_FMT_MOD doesn't support format string longer than 80
chars so keeping netdev warning with actual queue count details.

Signed-off-by: Ankit Garg <nktgrg@google.com>
Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Joshua Washington <joshwash@google.com>
Link: https://patch.msgid.link/20251106192746.243525-3-joshwash@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/google/gve/gve_main.c

index 8d825218965ab2287d73920afb9dd7beadd03536..616182f4fb81b938eff2ccd49bb3ebb9cf90206c 100644 (file)
@@ -1707,18 +1707,21 @@ static int gve_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags)
        return 0;
 }
 
-static int verify_xdp_configuration(struct net_device *dev)
+static int gve_verify_xdp_configuration(struct net_device *dev,
+                                       struct netlink_ext_ack *extack)
 {
        struct gve_priv *priv = netdev_priv(dev);
        u16 max_xdp_mtu;
 
        if (dev->features & NETIF_F_LRO) {
-               netdev_warn(dev, "XDP is not supported when LRO is on.\n");
+               NL_SET_ERR_MSG_MOD(extack,
+                                  "XDP is not supported when LRO is on.");
                return -EOPNOTSUPP;
        }
 
        if (priv->header_split_enabled) {
-               netdev_warn(dev, "XDP is not supported when header-data split is enabled.\n");
+               NL_SET_ERR_MSG_MOD(extack,
+                                  "XDP is not supported when header-data split is enabled.");
                return -EOPNOTSUPP;
        }
 
@@ -1727,17 +1730,20 @@ static int verify_xdp_configuration(struct net_device *dev)
                max_xdp_mtu -= GVE_RX_PAD;
 
        if (dev->mtu > max_xdp_mtu) {
-               netdev_warn(dev, "XDP is not supported for mtu %d.\n",
-                           dev->mtu);
+               NL_SET_ERR_MSG_FMT_MOD(extack,
+                                      "XDP is not supported for mtu %d.",
+                                      dev->mtu);
                return -EOPNOTSUPP;
        }
 
        if (priv->rx_cfg.num_queues != priv->tx_cfg.num_queues ||
            (2 * priv->tx_cfg.num_queues > priv->tx_cfg.max_queues)) {
-               netdev_warn(dev, "XDP load failed: The number of configured RX queues %d should be equal to the number of configured TX queues %d and the number of configured RX/TX queues should be less than or equal to half the maximum number of RX/TX queues %d",
-                           priv->rx_cfg.num_queues,
-                           priv->tx_cfg.num_queues,
+               netdev_warn(dev,
+                           "XDP load failed: The number of configured RX queues %d should be equal to the number of configured TX queues %d and the number of configured RX/TX queues should be less than or equal to half the maximum number of RX/TX queues %d.",
+                           priv->rx_cfg.num_queues, priv->tx_cfg.num_queues,
                            priv->tx_cfg.max_queues);
+               NL_SET_ERR_MSG_MOD(extack,
+                                  "XDP load failed: The number of configured RX queues should be equal to the number of configured TX queues and the number of configured RX/TX queues should be less than or equal to half the maximum number of RX/TX queues");
                return -EINVAL;
        }
        return 0;
@@ -1748,7 +1754,7 @@ static int gve_xdp(struct net_device *dev, struct netdev_bpf *xdp)
        struct gve_priv *priv = netdev_priv(dev);
        int err;
 
-       err = verify_xdp_configuration(dev);
+       err = gve_verify_xdp_configuration(dev, xdp->extack);
        if (err)
                return err;
        switch (xdp->command) {