mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
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: Robert-Ionut Alexa <robert-ionut.alexa@nxp.com> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3bd5549bd4
commit
14e493ddc3
1 changed files with 25 additions and 2 deletions
|
@ -1,7 +1,6 @@
|
|||
// 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,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue