OSDN Git Service

net: liquidio: reject unsupported coalescing params
authorJakub Kicinski <kuba@kernel.org>
Tue, 10 Mar 2020 02:15:06 +0000 (19:15 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 10 Mar 2020 23:28:53 +0000 (16:28 -0700)
Set ethtool_ops->supported_coalesce_params to let
the core reject unsupported coalescing parameters.

This driver did not previously reject unsupported parameters.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
include/linux/ethtool.h

index 2b27e3a..16eebfc 100644 (file)
@@ -3097,7 +3097,17 @@ static int lio_set_fecparam(struct net_device *netdev,
        return 0;
 }
 
+#define LIO_ETHTOOL_COALESCE   (ETHTOOL_COALESCE_RX_USECS |            \
+                                ETHTOOL_COALESCE_MAX_FRAMES |          \
+                                ETHTOOL_COALESCE_USE_ADAPTIVE |        \
+                                ETHTOOL_COALESCE_RX_MAX_FRAMES_LOW |   \
+                                ETHTOOL_COALESCE_TX_MAX_FRAMES_LOW |   \
+                                ETHTOOL_COALESCE_RX_MAX_FRAMES_HIGH |  \
+                                ETHTOOL_COALESCE_TX_MAX_FRAMES_HIGH |  \
+                                ETHTOOL_COALESCE_PKT_RATE_RX_USECS)
+
 static const struct ethtool_ops lio_ethtool_ops = {
+       .supported_coalesce_params = LIO_ETHTOOL_COALESCE,
        .get_link_ksettings     = lio_get_link_ksettings,
        .set_link_ksettings     = lio_set_link_ksettings,
        .get_fecparam           = lio_get_fecparam,
@@ -3128,6 +3138,7 @@ static const struct ethtool_ops lio_ethtool_ops = {
 };
 
 static const struct ethtool_ops lio_vf_ethtool_ops = {
+       .supported_coalesce_params = LIO_ETHTOOL_COALESCE,
        .get_link_ksettings     = lio_get_link_ksettings,
        .get_link               = ethtool_op_get_link,
        .get_drvinfo            = lio_get_vf_drvinfo,
index e464c94..9efeebd 100644 (file)
@@ -211,6 +211,11 @@ bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
         ETHTOOL_COALESCE_TX_MAX_FRAMES_IRQ)
 #define ETHTOOL_COALESCE_USE_ADAPTIVE                                  \
        (ETHTOOL_COALESCE_USE_ADAPTIVE_RX | ETHTOOL_COALESCE_USE_ADAPTIVE_TX)
+#define ETHTOOL_COALESCE_PKT_RATE_RX_USECS                             \
+       (ETHTOOL_COALESCE_USE_ADAPTIVE_RX |                             \
+        ETHTOOL_COALESCE_RX_USECS_LOW | ETHTOOL_COALESCE_RX_USECS_HIGH | \
+        ETHTOOL_COALESCE_PKT_RATE_LOW | ETHTOOL_COALESCE_PKT_RATE_HIGH | \
+        ETHTOOL_COALESCE_RATE_SAMPLE_INTERVAL)
 
 /**
  * struct ethtool_ops - optional netdev operations