Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /****************************************************************************
0003  * Driver for Solarflare network controllers and boards
0004  * Copyright 2018 Solarflare Communications Inc.
0005  * Copyright 2019-2020 Xilinx Inc.
0006  *
0007  * This program is free software; you can redistribute it and/or modify it
0008  * under the terms of the GNU General Public License version 2 as published
0009  * by the Free Software Foundation, incorporated herein by reference.
0010  */
0011 #include <linux/module.h>
0012 #include <linux/netdevice.h>
0013 #include "net_driver.h"
0014 #include "efx.h"
0015 #include "mcdi_port_common.h"
0016 #include "ethtool_common.h"
0017 #include "ef100_ethtool.h"
0018 #include "mcdi_functions.h"
0019 
0020 /* This is the maximum number of descriptor rings supported by the QDMA */
0021 #define EFX_EF100_MAX_DMAQ_SIZE 16384UL
0022 
0023 static void
0024 ef100_ethtool_get_ringparam(struct net_device *net_dev,
0025                 struct ethtool_ringparam *ring,
0026                 struct kernel_ethtool_ringparam *kernel_ring,
0027                 struct netlink_ext_ack *extack)
0028 {
0029     struct efx_nic *efx = efx_netdev_priv(net_dev);
0030 
0031     ring->rx_max_pending = EFX_EF100_MAX_DMAQ_SIZE;
0032     ring->tx_max_pending = EFX_EF100_MAX_DMAQ_SIZE;
0033     ring->rx_pending = efx->rxq_entries;
0034     ring->tx_pending = efx->txq_entries;
0035 }
0036 
0037 /*  Ethtool options available
0038  */
0039 const struct ethtool_ops ef100_ethtool_ops = {
0040     .get_drvinfo        = efx_ethtool_get_drvinfo,
0041     .get_msglevel       = efx_ethtool_get_msglevel,
0042     .set_msglevel       = efx_ethtool_set_msglevel,
0043     .get_pauseparam         = efx_ethtool_get_pauseparam,
0044     .set_pauseparam         = efx_ethtool_set_pauseparam,
0045     .get_sset_count     = efx_ethtool_get_sset_count,
0046     .self_test      = efx_ethtool_self_test,
0047     .get_strings        = efx_ethtool_get_strings,
0048     .get_link_ksettings = efx_ethtool_get_link_ksettings,
0049     .set_link_ksettings = efx_ethtool_set_link_ksettings,
0050     .get_link       = ethtool_op_get_link,
0051     .get_ringparam      = ef100_ethtool_get_ringparam,
0052     .get_fecparam       = efx_ethtool_get_fecparam,
0053     .set_fecparam       = efx_ethtool_set_fecparam,
0054     .get_ethtool_stats  = efx_ethtool_get_stats,
0055     .get_rxnfc              = efx_ethtool_get_rxnfc,
0056     .set_rxnfc              = efx_ethtool_set_rxnfc,
0057     .reset                  = efx_ethtool_reset,
0058 
0059     .get_rxfh_indir_size    = efx_ethtool_get_rxfh_indir_size,
0060     .get_rxfh_key_size  = efx_ethtool_get_rxfh_key_size,
0061     .get_rxfh       = efx_ethtool_get_rxfh,
0062     .set_rxfh       = efx_ethtool_set_rxfh,
0063     .get_rxfh_context   = efx_ethtool_get_rxfh_context,
0064     .set_rxfh_context   = efx_ethtool_set_rxfh_context,
0065 
0066     .get_module_info    = efx_ethtool_get_module_info,
0067     .get_module_eeprom  = efx_ethtool_get_module_eeprom,
0068 };