]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/linux/ethtool.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[net-next-2.6.git] / include / linux / ethtool.h
index 2c8af093d8b3f0cafc5a43d6286b8f7a9426423b..991269e5b152f1179aefb68e947111104d25bce0 100644 (file)
@@ -379,11 +379,22 @@ struct ethtool_rxnfc {
        __u32                           flow_type;
        /* The rx flow hash value or the rule DB size */
        __u64                           data;
+       /* The following fields are not valid and must not be used for
+        * the ETHTOOL_{G,X}RXFH commands. */
        struct ethtool_rx_flow_spec     fs;
        __u32                           rule_cnt;
        __u32                           rule_locs[0];
 };
 
+struct ethtool_rxfh_indir {
+       __u32   cmd;
+       /* On entry, this is the array size of the user buffer.  On
+        * return from ETHTOOL_GRXFHINDIR, this is the array size of
+        * the hardware indirection table. */
+       __u32   size;
+       __u32   ring_index[0];  /* ring/queue index for each hash value */
+};
+
 struct ethtool_rx_ntuple_flow_spec {
        __u32            flow_type;
        union {
@@ -457,7 +468,7 @@ int ethtool_op_set_tso(struct net_device *dev, u32 data);
 u32 ethtool_op_get_ufo(struct net_device *dev);
 int ethtool_op_set_ufo(struct net_device *dev, u32 data);
 u32 ethtool_op_get_flags(struct net_device *dev);
-int ethtool_op_set_flags(struct net_device *dev, u32 data);
+int ethtool_op_set_flags(struct net_device *dev, u32 data, u32 supported);
 void ethtool_ntuple_flush(struct net_device *dev);
 
 /**
@@ -576,6 +587,10 @@ struct ethtool_ops {
        int     (*set_rx_ntuple)(struct net_device *,
                                 struct ethtool_rx_ntuple *);
        int     (*get_rx_ntuple)(struct net_device *, u32 stringset, void *);
+       int     (*get_rxfh_indir)(struct net_device *,
+                                 struct ethtool_rxfh_indir *);
+       int     (*set_rxfh_indir)(struct net_device *,
+                                 const struct ethtool_rxfh_indir *);
 };
 #endif /* __KERNEL__ */
 
@@ -637,6 +652,8 @@ struct ethtool_ops {
 #define ETHTOOL_SRXNTUPLE      0x00000035 /* Add an n-tuple filter to device */
 #define ETHTOOL_GRXNTUPLE      0x00000036 /* Get n-tuple filters from device */
 #define ETHTOOL_GSSET_INFO     0x00000037 /* Get string set info */
+#define ETHTOOL_GRXFHINDIR     0x00000038 /* Get RX flow hash indir'n table */
+#define ETHTOOL_SRXFHINDIR     0x00000039 /* Set RX flow hash indir'n table */
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET         ETHTOOL_GSET