]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/ethtool.h
ENGR00293323 PXP: add WC and cacheable dma buffer support for PXP device
[karo-tx-linux.git] / include / linux / ethtool.h
index 0a114d05f68d35bd275924a7290a6c3b75ef17fd..e658229fee39c17ea8673eadcf7b49cfdce508e1 100644 (file)
@@ -154,13 +154,20 @@ static inline u32 ethtool_rxfh_indir_default(u32 index, u32 n_rx_rings)
  * @reset: Reset (part of) the device, as specified by a bitmask of
  *     flags from &enum ethtool_reset_flags.  Returns a negative
  *     error code or zero.
+ * @get_rxfh_key_size: Get the size of the RX flow hash key.
+ *     Returns zero if not supported for this specific device.
  * @get_rxfh_indir_size: Get the size of the RX flow hash indirection table.
  *     Returns zero if not supported for this specific device.
- * @get_rxfh_indir: Get the contents of the RX flow hash indirection table.
- *     Will not be called if @get_rxfh_indir_size returns zero.
+ * @get_rxfh: Get the contents of the RX flow hash indirection table and hash
+ *     key.
+ *     Will only be called if one or both of @get_rxfh_indir_size and
+ *     @get_rxfh_key_size are implemented and return non-zero.
  *     Returns a negative error code or zero.
- * @set_rxfh_indir: Set the contents of the RX flow hash indirection table.
- *     Will not be called if @get_rxfh_indir_size returns zero.
+ * @set_rxfh: Set the contents of the RX flow hash indirection table and/or
+ *     hash key.  In case only the indirection table or hash key is to be
+ *     changed, the other argument will be %NULL.
+ *     Will only be called if one or both of @get_rxfh_indir_size and
+ *     @get_rxfh_key_size are implemented and return non-zero.
  *     Returns a negative error code or zero.
  * @get_channels: Get number of channels.
  * @set_channels: Set number of channels.  Returns a negative error code or
@@ -232,9 +239,11 @@ struct ethtool_ops {
        int     (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
        int     (*flash_device)(struct net_device *, struct ethtool_flash *);
        int     (*reset)(struct net_device *, u32 *);
+       u32     (*get_rxfh_key_size)(struct net_device *);
        u32     (*get_rxfh_indir_size)(struct net_device *);
-       int     (*get_rxfh_indir)(struct net_device *, u32 *);
-       int     (*set_rxfh_indir)(struct net_device *, const u32 *);
+       int     (*get_rxfh)(struct net_device *, u32 *indir, u8 *key);
+       int     (*set_rxfh)(struct net_device *, const u32 *indir,
+                           const u8 *key);
        void    (*get_channels)(struct net_device *, struct ethtool_channels *);
        int     (*set_channels)(struct net_device *, struct ethtool_channels *);
        int     (*get_dump_flag)(struct net_device *, struct ethtool_dump *);