sfc: add ethtool ops and miscellaneous ndos to EF100
Mostly just calls to existing common functions. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c77289b433
commit
4404c0898d
|
@ -17,8 +17,49 @@
|
||||||
#include "ef100_ethtool.h"
|
#include "ef100_ethtool.h"
|
||||||
#include "mcdi_functions.h"
|
#include "mcdi_functions.h"
|
||||||
|
|
||||||
|
/* This is the maximum number of descriptor rings supported by the QDMA */
|
||||||
|
#define EFX_EF100_MAX_DMAQ_SIZE 16384UL
|
||||||
|
|
||||||
|
static void ef100_ethtool_get_ringparam(struct net_device *net_dev,
|
||||||
|
struct ethtool_ringparam *ring)
|
||||||
|
{
|
||||||
|
struct efx_nic *efx = netdev_priv(net_dev);
|
||||||
|
|
||||||
|
ring->rx_max_pending = EFX_EF100_MAX_DMAQ_SIZE;
|
||||||
|
ring->tx_max_pending = EFX_EF100_MAX_DMAQ_SIZE;
|
||||||
|
ring->rx_pending = efx->rxq_entries;
|
||||||
|
ring->tx_pending = efx->txq_entries;
|
||||||
|
}
|
||||||
|
|
||||||
/* Ethtool options available
|
/* Ethtool options available
|
||||||
*/
|
*/
|
||||||
const struct ethtool_ops ef100_ethtool_ops = {
|
const struct ethtool_ops ef100_ethtool_ops = {
|
||||||
.get_drvinfo = efx_ethtool_get_drvinfo,
|
.get_drvinfo = efx_ethtool_get_drvinfo,
|
||||||
|
.get_msglevel = efx_ethtool_get_msglevel,
|
||||||
|
.set_msglevel = efx_ethtool_set_msglevel,
|
||||||
|
.get_pauseparam = efx_ethtool_get_pauseparam,
|
||||||
|
.set_pauseparam = efx_ethtool_set_pauseparam,
|
||||||
|
.get_sset_count = efx_ethtool_get_sset_count,
|
||||||
|
.self_test = efx_ethtool_self_test,
|
||||||
|
.get_strings = efx_ethtool_get_strings,
|
||||||
|
.get_link_ksettings = efx_ethtool_get_link_ksettings,
|
||||||
|
.set_link_ksettings = efx_ethtool_set_link_ksettings,
|
||||||
|
.get_link = ethtool_op_get_link,
|
||||||
|
.get_ringparam = ef100_ethtool_get_ringparam,
|
||||||
|
.get_fecparam = efx_ethtool_get_fecparam,
|
||||||
|
.set_fecparam = efx_ethtool_set_fecparam,
|
||||||
|
.get_ethtool_stats = efx_ethtool_get_stats,
|
||||||
|
.get_rxnfc = efx_ethtool_get_rxnfc,
|
||||||
|
.set_rxnfc = efx_ethtool_set_rxnfc,
|
||||||
|
.reset = efx_ethtool_reset,
|
||||||
|
|
||||||
|
.get_rxfh_indir_size = efx_ethtool_get_rxfh_indir_size,
|
||||||
|
.get_rxfh_key_size = efx_ethtool_get_rxfh_key_size,
|
||||||
|
.get_rxfh = efx_ethtool_get_rxfh,
|
||||||
|
.set_rxfh = efx_ethtool_set_rxfh,
|
||||||
|
.get_rxfh_context = efx_ethtool_get_rxfh_context,
|
||||||
|
.set_rxfh_context = efx_ethtool_set_rxfh_context,
|
||||||
|
|
||||||
|
.get_module_info = efx_ethtool_get_module_info,
|
||||||
|
.get_module_eeprom = efx_ethtool_get_module_eeprom,
|
||||||
};
|
};
|
||||||
|
|
|
@ -217,9 +217,13 @@ static const struct net_device_ops ef100_netdev_ops = {
|
||||||
.ndo_open = ef100_net_open,
|
.ndo_open = ef100_net_open,
|
||||||
.ndo_stop = ef100_net_stop,
|
.ndo_stop = ef100_net_stop,
|
||||||
.ndo_start_xmit = ef100_hard_start_xmit,
|
.ndo_start_xmit = ef100_hard_start_xmit,
|
||||||
|
.ndo_tx_timeout = efx_watchdog,
|
||||||
.ndo_get_stats64 = efx_net_stats,
|
.ndo_get_stats64 = efx_net_stats,
|
||||||
|
.ndo_change_mtu = efx_change_mtu,
|
||||||
.ndo_validate_addr = eth_validate_addr,
|
.ndo_validate_addr = eth_validate_addr,
|
||||||
|
.ndo_set_mac_address = efx_set_mac_address,
|
||||||
.ndo_set_rx_mode = efx_set_rx_mode, /* Lookout */
|
.ndo_set_rx_mode = efx_set_rx_mode, /* Lookout */
|
||||||
|
.ndo_set_features = efx_set_features,
|
||||||
.ndo_get_phys_port_id = efx_get_phys_port_id,
|
.ndo_get_phys_port_id = efx_get_phys_port_id,
|
||||||
.ndo_get_phys_port_name = efx_get_phys_port_name,
|
.ndo_get_phys_port_name = efx_get_phys_port_name,
|
||||||
#ifdef CONFIG_RFS_ACCEL
|
#ifdef CONFIG_RFS_ACCEL
|
||||||
|
|
|
@ -684,7 +684,7 @@ static unsigned int ef100_check_caps(const struct efx_nic *efx,
|
||||||
/* NIC level access functions
|
/* NIC level access functions
|
||||||
*/
|
*/
|
||||||
#define EF100_OFFLOAD_FEATURES (NETIF_F_HW_CSUM | NETIF_F_RXCSUM | \
|
#define EF100_OFFLOAD_FEATURES (NETIF_F_HW_CSUM | NETIF_F_RXCSUM | \
|
||||||
NETIF_F_HIGHDMA | NETIF_F_SG | NETIF_F_FRAGLIST | \
|
NETIF_F_HIGHDMA | NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_NTUPLE | \
|
||||||
NETIF_F_RXHASH | NETIF_F_RXFCS | NETIF_F_TSO_ECN | NETIF_F_RXALL | \
|
NETIF_F_RXHASH | NETIF_F_RXFCS | NETIF_F_TSO_ECN | NETIF_F_RXALL | \
|
||||||
NETIF_F_TSO_MANGLEID | NETIF_F_HW_VLAN_CTAG_TX)
|
NETIF_F_TSO_MANGLEID | NETIF_F_HW_VLAN_CTAG_TX)
|
||||||
|
|
||||||
|
@ -757,6 +757,7 @@ const struct efx_nic_type ef100_pf_nic_type = {
|
||||||
.rx_restore_rss_contexts = efx_mcdi_rx_restore_rss_contexts,
|
.rx_restore_rss_contexts = efx_mcdi_rx_restore_rss_contexts,
|
||||||
|
|
||||||
.reconfigure_mac = ef100_reconfigure_mac,
|
.reconfigure_mac = ef100_reconfigure_mac,
|
||||||
|
.reconfigure_port = efx_mcdi_port_reconfigure,
|
||||||
.test_nvram = efx_new_mcdi_nvram_test_all,
|
.test_nvram = efx_new_mcdi_nvram_test_all,
|
||||||
.describe_stats = ef100_describe_stats,
|
.describe_stats = ef100_describe_stats,
|
||||||
.start_stats = efx_mcdi_mac_start_stats,
|
.start_stats = efx_mcdi_mac_start_stats,
|
||||||
|
@ -1158,6 +1159,10 @@ static int ef100_probe_main(struct efx_nic *efx)
|
||||||
goto fail;
|
goto fail;
|
||||||
/* Reset (most) configuration for this function */
|
/* Reset (most) configuration for this function */
|
||||||
rc = efx_mcdi_reset(efx, RESET_TYPE_ALL);
|
rc = efx_mcdi_reset(efx, RESET_TYPE_ALL);
|
||||||
|
if (rc)
|
||||||
|
goto fail;
|
||||||
|
/* Enable event logging */
|
||||||
|
rc = efx_mcdi_log_ctrl(efx, true, false, 0);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue