[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210709125431.3597a126@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
Date: Fri, 9 Jul 2021 12:54:31 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Paolo Abeni <pabeni@...hat.com>
Cc: netdev@...r.kernel.org, "David S. Miller" <davem@...emloft.net>,
toke@...hat.com
Subject: Re: [RFC PATCH 1/3] veth: implement support for set_channel ethtool
op
On Fri, 9 Jul 2021 11:39:48 +0200 Paolo Abeni wrote:
> + /* accept changes only on rx/tx */
> + if (ch->combined_count != min(dev->real_num_rx_queues, dev->real_num_tx_queues))
> + return -EINVAL;
Ah damn, I must have missed the get_channels being added. I believe the
correct interpretation of the params is rx means NAPI with just Rx
queue(s), tx NAPI with just Tx queue(s) and combined has both.
IOW combined != min(rx, tx).
Instead real_rx = combined + rx; real_tx = combined + tx.
Can we still change this?
> + /* respect contraint posed at device creation time */
> + if (ch->rx_count > dev->num_rx_queues || ch->tx_count > dev->num_tx_queues)
> + return -EINVAL;
Could you lift this check into ethtool core?
> + if (!ch->rx_count || !ch->tx_count)
> + return -EINVAL;
You wouldn't need this with the right interpretation of combined :(
> + /* avoid braking XDP, if that is enabled */
> + if (priv->_xdp_prog && ch->rx_count < priv->peer->real_num_tx_queues)
> + return -EINVAL;
> +
> + peer_priv = netdev_priv(priv->peer);
> + if (peer_priv->_xdp_prog && ch->tx_count > priv->peer->real_num_rx_queues)
> + return -EINVAL;
> +
> + if (netif_running(dev))
> + veth_close(dev);
> +
> + priv->num_tx_queues = ch->tx_count;
> + priv->num_rx_queues = ch->rx_count;
> +
> + if (netif_running(dev))
> + veth_open(dev);
Powered by blists - more mailing lists