OSDN Git Service

sfc: add ethtool ops and miscellaneous ndos to EF100
authorEdward Cree <ecree@solarflare.com>
Mon, 7 Sep 2020 16:14:52 +0000 (17:14 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 7 Sep 2020 21:46:13 +0000 (14:46 -0700)
Mostly just calls to existing common functions.

Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/sfc/ef100_ethtool.c
drivers/net/ethernet/sfc/ef100_netdev.c
drivers/net/ethernet/sfc/ef100_nic.c

index 729c425..835c838 100644 (file)
 #include "ef100_ethtool.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
  */
 const struct ethtool_ops ef100_ethtool_ops = {
        .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,
 };
index 63c311b..67fe44d 100644 (file)
@@ -217,9 +217,13 @@ static const struct net_device_ops ef100_netdev_ops = {
        .ndo_open               = ef100_net_open,
        .ndo_stop               = ef100_net_stop,
        .ndo_start_xmit         = ef100_hard_start_xmit,
+       .ndo_tx_timeout         = efx_watchdog,
        .ndo_get_stats64        = efx_net_stats,
+       .ndo_change_mtu         = efx_change_mtu,
        .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_features       = efx_set_features,
        .ndo_get_phys_port_id   = efx_get_phys_port_id,
        .ndo_get_phys_port_name = efx_get_phys_port_name,
 #ifdef CONFIG_RFS_ACCEL
index 9cf5b8f..fb7752d 100644 (file)
@@ -684,7 +684,7 @@ static unsigned int ef100_check_caps(const struct efx_nic *efx,
 /*     NIC level access functions
  */
 #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_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,
 
        .reconfigure_mac = ef100_reconfigure_mac,
+       .reconfigure_port = efx_mcdi_port_reconfigure,
        .test_nvram = efx_new_mcdi_nvram_test_all,
        .describe_stats = ef100_describe_stats,
        .start_stats = efx_mcdi_mac_start_stats,
@@ -1160,6 +1161,10 @@ static int ef100_probe_main(struct efx_nic *efx)
        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)
+               goto fail;
 
        rc = efx_get_pf_index(efx, &nic_data->pf_index);
        if (rc)