mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
gve: Use extack to log xdp config verification errors
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
40fef85ceb
commit
091a3b6ff2
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user