aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Waskiewicz <peter.p.waskiewicz.jr@intel.com>2010-02-25 20:54:20 -0500
committerDavid S. Miller <davem@davemloft.net>2010-02-26 07:18:43 -0500
commitc79c5ffdce14abb4de3878c5aa8c3c6e5093c69b (patch)
treeecbad9995e46991937010622c183e7e33308187a
parentc43491d73ea04277c92a4aa1a7e63ccab4577756 (diff)
ethtool: Add n-tuple string length to drvinfo and return it
The drvinfo struct should include the number of strings that get_rx_ntuple will return. It will be variable if an underlying driver implements its own get_rx_ntuple routine, so userspace needs to know how much data is coming. Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/linux/ethtool.h1
-rw-r--r--net/core/ethtool.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index cca1c3de140d..f7992a256b71 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -63,6 +63,7 @@ struct ethtool_drvinfo {
63 char reserved2[12]; 63 char reserved2[12];
64 __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */ 64 __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */
65 __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */ 65 __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */
66 __u32 n_ntuples; /* number of n-tuple filters from GSTRINGS */
66 __u32 testinfo_len; 67 __u32 testinfo_len;
67 __u32 eedump_len; /* Size of data from ETHTOOL_GEEPROM (bytes) */ 68 __u32 eedump_len; /* Size of data from ETHTOOL_GEEPROM (bytes) */
68 __u32 regdump_len; /* Size of data from ETHTOOL_GREGS (bytes) */ 69 __u32 regdump_len; /* Size of data from ETHTOOL_GREGS (bytes) */
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 31b1eddc1b84..1c94f48e27b5 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -224,6 +224,9 @@ static noinline int ethtool_get_drvinfo(struct net_device *dev, void __user *use
224 rc = ops->get_sset_count(dev, ETH_SS_PRIV_FLAGS); 224 rc = ops->get_sset_count(dev, ETH_SS_PRIV_FLAGS);
225 if (rc >= 0) 225 if (rc >= 0)
226 info.n_priv_flags = rc; 226 info.n_priv_flags = rc;
227 rc = ops->get_sset_count(dev, ETH_SS_NTUPLE_FILTERS);
228 if (rc >= 0)
229 info.n_ntuples = rc;
227 } 230 }
228 if (ops->get_regs_len) 231 if (ops->get_regs_len)
229 info.regdump_len = ops->get_regs_len(dev); 232 info.regdump_len = ops->get_regs_len(dev);