libata: Add ATA_HORKAGE_NO_NCQ_ON_ATI for Samsung 860 and 870 SSD.
[linux-2.6-microblaze.git] / include / linux / ethtool.h
index 232daae..849524b 100644 (file)
 
 #include <linux/bitmap.h>
 #include <linux/compat.h>
+#include <linux/netlink.h>
 #include <uapi/linux/ethtool.h>
 
-#ifdef CONFIG_COMPAT
-
 struct compat_ethtool_rx_flow_spec {
        u32             flow_type;
        union ethtool_flow_union h_u;
@@ -38,8 +37,6 @@ struct compat_ethtool_rxnfc {
        u32                             rule_locs[];
 };
 
-#endif /* CONFIG_COMPAT */
-
 #include <linux/rculist.h>
 
 /**
@@ -176,6 +173,11 @@ extern int
 __ethtool_get_link_ksettings(struct net_device *dev,
                             struct ethtool_link_ksettings *link_ksettings);
 
+struct kernel_ethtool_coalesce {
+       u8 use_cqe_mode_tx;
+       u8 use_cqe_mode_rx;
+};
+
 /**
  * ethtool_intersect_link_masks - Given two link masks, AND them together
  * @dst: first mask and where result is stored
@@ -215,7 +217,9 @@ bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
 #define ETHTOOL_COALESCE_TX_USECS_HIGH         BIT(19)
 #define ETHTOOL_COALESCE_TX_MAX_FRAMES_HIGH    BIT(20)
 #define ETHTOOL_COALESCE_RATE_SAMPLE_INTERVAL  BIT(21)
-#define ETHTOOL_COALESCE_ALL_PARAMS            GENMASK(21, 0)
+#define ETHTOOL_COALESCE_USE_CQE_RX            BIT(22)
+#define ETHTOOL_COALESCE_USE_CQE_TX            BIT(23)
+#define ETHTOOL_COALESCE_ALL_PARAMS            GENMASK(23, 0)
 
 #define ETHTOOL_COALESCE_USECS                                         \
        (ETHTOOL_COALESCE_RX_USECS | ETHTOOL_COALESCE_TX_USECS)
@@ -241,6 +245,8 @@ bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
         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)
+#define ETHTOOL_COALESCE_USE_CQE                                       \
+       (ETHTOOL_COALESCE_USE_CQE_RX | ETHTOOL_COALESCE_USE_CQE_TX)
 
 #define ETHTOOL_STAT_NOT_SET   (~0ULL)
 
@@ -606,8 +612,14 @@ struct ethtool_ops {
                              struct ethtool_eeprom *, u8 *);
        int     (*set_eeprom)(struct net_device *,
                              struct ethtool_eeprom *, u8 *);
-       int     (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
-       int     (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
+       int     (*get_coalesce)(struct net_device *,
+                               struct ethtool_coalesce *,
+                               struct kernel_ethtool_coalesce *,
+                               struct netlink_ext_ack *);
+       int     (*set_coalesce)(struct net_device *,
+                               struct ethtool_coalesce *,
+                               struct kernel_ethtool_coalesce *,
+                               struct netlink_ext_ack *);
        void    (*get_ringparam)(struct net_device *,
                                 struct ethtool_ringparam *);
        int     (*set_ringparam)(struct net_device *,