OSDN Git Service

enic: let core reject the unsupported coalescing parameters
authorJakub Kicinski <kuba@kernel.org>
Thu, 5 Mar 2020 05:15:33 +0000 (21:15 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 5 Mar 2020 20:12:34 +0000 (12:12 -0800)
Set ethtool_ops->supported_coalesce_params to let
the core reject unsupported coalescing parameters.

This driver correctly rejects all unsupported parameters.
The error code changes from EINVAL to EOPNOTSUPP.

v3: adjust commit message for new error code and member name

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cisco/enic/enic_ethtool.c

index 84ff0e6..4d8e0aa 100644 (file)
@@ -323,25 +323,6 @@ static int enic_coalesce_valid(struct enic *enic,
        u32 rx_coalesce_usecs_low = min_t(u32, coalesce_usecs_max,
                                          ec->rx_coalesce_usecs_low);
 
-       if (ec->rx_max_coalesced_frames         ||
-           ec->rx_coalesce_usecs_irq           ||
-           ec->rx_max_coalesced_frames_irq     ||
-           ec->tx_max_coalesced_frames         ||
-           ec->tx_coalesce_usecs_irq           ||
-           ec->tx_max_coalesced_frames_irq     ||
-           ec->stats_block_coalesce_usecs      ||
-           ec->use_adaptive_tx_coalesce        ||
-           ec->pkt_rate_low                    ||
-           ec->rx_max_coalesced_frames_low     ||
-           ec->tx_coalesce_usecs_low           ||
-           ec->tx_max_coalesced_frames_low     ||
-           ec->pkt_rate_high                   ||
-           ec->rx_max_coalesced_frames_high    ||
-           ec->tx_coalesce_usecs_high          ||
-           ec->tx_max_coalesced_frames_high    ||
-           ec->rate_sample_interval)
-               return -EINVAL;
-
        if ((vnic_dev_get_intr_mode(enic->vdev) != VNIC_DEV_INTR_MODE_MSIX) &&
            ec->tx_coalesce_usecs)
                return -EINVAL;
@@ -635,6 +616,10 @@ static int enic_get_ts_info(struct net_device *netdev,
 }
 
 static const struct ethtool_ops enic_ethtool_ops = {
+       .supported_coalesce_params = ETHTOOL_COALESCE_USECS |
+                                    ETHTOOL_COALESCE_USE_ADAPTIVE_RX |
+                                    ETHTOOL_COALESCE_RX_USECS_LOW |
+                                    ETHTOOL_COALESCE_RX_USECS_HIGH,
        .get_drvinfo = enic_get_drvinfo,
        .get_msglevel = enic_get_msglevel,
        .set_msglevel = enic_set_msglevel,