Commit 14e493dd authored by Robert-Ionut Alexa's avatar Robert-Ionut Alexa Committed by David S. Miller

net: dpaa2-eth: add support to query the number of queues through ethtool

The .get_channels() ethtool_ops callback is implemented and exports the
number of queues: Rx, Tx, Tx conf and Rx err.
The last two ones, Tx confirmation and Rx err, are counted as 'others'.

The .set_channels() callback is not implemented since the DPAA2
software/firmware architecture does not allow the dynamic
reconfiguration of the number of queues.
Signed-off-by: default avatarRobert-Ionut Alexa <robert-ionut.alexa@nxp.com>
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3bd5549b
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/* Copyright 2014-2016 Freescale Semiconductor Inc.
* Copyright 2016 NXP
* Copyright 2020 NXP
* Copyright 2016-2022 NXP
*/
#include <linux/net_tstamp.h>
......@@ -876,6 +875,29 @@ static int dpaa2_eth_set_coalesce(struct net_device *dev,
return err;
}
static void dpaa2_eth_get_channels(struct net_device *net_dev,
struct ethtool_channels *channels)
{
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
int queue_count = dpaa2_eth_queue_count(priv);
channels->max_rx = queue_count;
channels->max_tx = queue_count;
channels->rx_count = queue_count;
channels->tx_count = queue_count;
/* Tx confirmation and Rx error */
channels->max_other = queue_count + 1;
channels->max_combined = channels->max_rx +
channels->max_tx +
channels->max_other;
/* Tx conf and Rx err */
channels->other_count = queue_count + 1;
channels->combined_count = channels->rx_count +
channels->tx_count +
channels->other_count;
}
const struct ethtool_ops dpaa2_ethtool_ops = {
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
ETHTOOL_COALESCE_USE_ADAPTIVE_RX,
......@@ -896,4 +918,5 @@ const struct ethtool_ops dpaa2_ethtool_ops = {
.set_tunable = dpaa2_eth_set_tunable,
.get_coalesce = dpaa2_eth_get_coalesce,
.set_coalesce = dpaa2_eth_set_coalesce,
.get_channels = dpaa2_eth_get_channels,
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment