* [PATCH 1/2] netdev: add support for Receive Side Scaling hash control
@ 2010-03-28 22:44 Stephen Hemminger
2010-03-28 22:47 ` [PATCH 2/2] ethtool: add RSS command flag Stephen Hemminger
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-28 22:44 UTC (permalink / raw)
To: David Miller; +Cc: netdev
This adds ethtool and device feature flag to allow control
of Receive Side Scaling hashing supported by many modern
controllers.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
I am working on RSS for sky2 device, but the hardware isn't fully cooperating
but thought others might want to use same API.
--- a/include/linux/ethtool.h 2010-03-28 14:09:58.611267016 -0700
+++ b/include/linux/ethtool.h 2010-03-28 14:19:45.032516128 -0700
@@ -310,6 +310,7 @@ struct ethtool_perm_addr {
enum ethtool_flags {
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */
+ ETH_FLAG_RSS = (1 << 28), /* RSS is enabled */
};
/* The following structures are for supporting RX network flow
--- a/include/linux/netdevice.h 2010-03-28 14:12:13.092517615 -0700
+++ b/include/linux/netdevice.h 2010-03-28 14:13:47.232915349 -0700
@@ -785,6 +785,7 @@ struct net_device {
#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
#define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/
#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
+#define NETIF_F_RSS (1 << 28) /* Receive Side Scaling hash */
/* Segmentation offload features */
#define NETIF_F_GSO_SHIFT 16
--- a/net/core/ethtool.c 2010-03-28 14:12:25.012207457 -0700
+++ b/net/core/ethtool.c 2010-03-28 14:19:41.548521569 -0700
@@ -121,7 +121,7 @@ int ethtool_op_set_ufo(struct net_device
* NETIF_F_xxx values in include/linux/netdevice.h
*/
static const u32 flags_dup_features =
- (ETH_FLAG_LRO | ETH_FLAG_NTUPLE);
+ (ETH_FLAG_LRO | ETH_FLAG_NTUPLE | ETH_FLAG_RSS);
u32 ethtool_op_get_flags(struct net_device *dev)
{
@@ -152,6 +152,11 @@ int ethtool_op_set_flags(struct net_devi
features &= ~NETIF_F_NTUPLE;
}
+ if (data & ETH_FLAG_RSS)
+ features |= NETIF_F_RSS;
+ else
+ features &= ~NETIF_F_RSS;
+
dev->features = features;
return 0;
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 2/2] ethtool: add RSS command flag
2010-03-28 22:44 [PATCH 1/2] netdev: add support for Receive Side Scaling hash control Stephen Hemminger
@ 2010-03-28 22:47 ` Stephen Hemminger
2010-03-30 0:47 ` [PATCH 1/2] netdev: ethtool RXHASH flag Stephen Hemminger
2010-03-31 6:52 ` [PATCH 1/2] netdev: add support for Receive Side Scaling hash control David Miller
2 siblings, 0 replies; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-28 22:47 UTC (permalink / raw)
To: David Miller; +Cc: netdev
Add RSS offload option to ethtool command.
Also, fix ethtool header to be pure version from net-next.
ethtool-copy.h should be generated by kernel 'make install_headers' to ensure
that all fields match exactly.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
ethtool-copy.h | 32 +++++++++++++++++++++++++-------
ethtool.8 | 4 ++++
ethtool.c | 43 ++++++++++++++++++++++++++++++++++++++-----
3 files changed, 67 insertions(+), 12 deletions(-)
diff --git a/ethtool-copy.h b/ethtool-copy.h
index 8681f5e..a20fe84 100644
--- a/ethtool-copy.h
+++ b/ethtool-copy.h
@@ -36,7 +36,7 @@ struct ethtool_cmd {
__u32 reserved[2];
};
-static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
+static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
__u32 speed)
{
@@ -44,7 +44,7 @@ static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
ep->speed_hi = (__u16)(speed >> 16);
}
-static inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
+static __inline__ __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
{
return (ep->speed_hi << 16) | ep->speed;
}
@@ -61,6 +61,13 @@ struct ethtool_drvinfo {
/* For PCI devices, use pci_name(pci_dev). */
char reserved1[32];
char reserved2[12];
+ /*
+ * Some struct members below are filled in
+ * using ops->get_sset_count(). Obtaining
+ * this info from ethtool_drvinfo is now
+ * deprecated; Use ETHTOOL_GSSET_INFO
+ * instead.
+ */
__u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */
__u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */
__u32 testinfo_len;
@@ -253,6 +260,17 @@ struct ethtool_gstrings {
__u8 data[0];
};
+struct ethtool_sset_info {
+ __u32 cmd; /* ETHTOOL_GSSET_INFO */
+ __u32 reserved;
+ __u64 sset_mask; /* input: each bit selects an sset to query */
+ /* output: each bit a returned sset */
+ __u32 data[0]; /* ETH_SS_xxx count, in order, based on bits
+ in sset_mask. One bit implies one
+ __u32, two bits implies two
+ __u32's, etc. */
+};
+
enum ethtool_test_flags {
ETH_TEST_FL_OFFLINE = (1 << 0), /* online / offline */
ETH_TEST_FL_FAILED = (1 << 1), /* test passed / failed */
@@ -292,6 +310,7 @@ struct ethtool_perm_addr {
enum ethtool_flags {
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */
+ ETH_FLAG_RSS = (1 << 28),
};
/* The following structures are for supporting RX network flow
@@ -389,8 +408,6 @@ struct ethtool_rx_ntuple_flow_spec {
#define ETHTOOL_RXNTUPLE_ACTION_DROP -1
};
-#define ETHTOOL_MAX_NTUPLE_LIST_ENTRY 1024
-#define ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY 14
struct ethtool_rx_ntuple {
__u32 cmd;
struct ethtool_rx_ntuple_flow_spec fs;
@@ -408,6 +425,7 @@ struct ethtool_flash {
char data[ETHTOOL_FLASH_MAX_FILENAME];
};
+
/* CMDs currently supported */
#define ETHTOOL_GSET 0x00000001 /* Get settings. */
#define ETHTOOL_SSET 0x00000002 /* Set settings. */
@@ -463,9 +481,9 @@ struct ethtool_flash {
#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */
#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */
#define ETHTOOL_RESET 0x00000034 /* Reset hardware */
-
-#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */
-#define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */
+#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 */
/* compatibility with older code */
#define SPARC_ETH_GSET ETHTOOL_GSET
diff --git a/ethtool.8 b/ethtool.8
index eb6430b..a5afe13 100644
--- a/ethtool.8
+++ b/ethtool.8
@@ -170,6 +170,7 @@ ethtool \- Display or change ethernet card settings
.B2 gso on off
.B2 gro on off
.B2 lro on off
+.B2 rss on off
.B ethtool \-p|\-\-identify
.I ethX
@@ -362,6 +363,9 @@ Specifies whether generic receive offload should be enabled
.A2 lro on off
Specifies whether large receive offload should be enabled
.TP
+.A2 rss on off
+Specifies whether Receive Side Scaling hashing should be enabled
+.TP
.B \-p \-\-identify
Initiates adapter-specific action intended to enable an operator to
easily identify the adapter by sight. Typically this involves
diff --git a/ethtool.c b/ethtool.c
index fc9e419..8b6cc77 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -173,6 +173,8 @@ static struct option {
" [ gro on|off ]\n"
" [ lro on|off ]\n"
" [ ntuple on|off ]\n"
+ " [ rss on|off ]\n"
+
},
{ "-i", "--driver", MODE_GDRV, "Show driver information" },
{ "-d", "--register-dump", MODE_GREGS, "Do a register dump",
@@ -257,6 +259,7 @@ static int off_gso_wanted = -1;
static int off_lro_wanted = -1;
static int off_gro_wanted = -1;
static int off_ntuple_wanted = -1;
+static int off_rss_wanted = -1;
static struct ethtool_pauseparam epause;
static int gpause_changed = 0;
@@ -382,6 +385,7 @@ static struct cmdline_info cmdline_offload[] = {
{ "lro", CMDL_BOOL, &off_lro_wanted, NULL },
{ "gro", CMDL_BOOL, &off_gro_wanted, NULL },
{ "ntuple", CMDL_BOOL, &off_ntuple_wanted, NULL },
+ { "rss", CMDL_BOOL, &off_rss_wanted, NULL },
};
static struct cmdline_info cmdline_pause[] = {
@@ -1526,7 +1530,7 @@ static int dump_coalesce(void)
}
static int dump_offload(int rx, int tx, int sg, int tso, int ufo, int gso,
- int gro, int lro, int ntuple)
+ int gro, int lro, int ntuple, int rss)
{
fprintf(stdout,
"rx-checksumming: %s\n"
@@ -1537,7 +1541,8 @@ static int dump_offload(int rx, int tx, int sg, int tso, int ufo, int gso,
"generic-segmentation-offload: %s\n"
"generic-receive-offload: %s\n"
"large-receive-offload: %s\n"
- "ntuple-filters: %s\n",
+ "ntuple-filters: %s\n"
+ "receive-side-scaling: %s\n",
rx ? "on" : "off",
tx ? "on" : "off",
sg ? "on" : "off",
@@ -1546,7 +1551,8 @@ static int dump_offload(int rx, int tx, int sg, int tso, int ufo, int gso,
gso ? "on" : "off",
gro ? "on" : "off",
lro ? "on" : "off",
- ntuple ? "on" : "off");
+ ntuple ? "on" : "off",
+ rss ? "on" : "off");
return 0;
}
@@ -1863,7 +1869,7 @@ static int do_goffload(int fd, struct ifreq *ifr)
{
struct ethtool_value eval;
int err, allfail = 1, rx = 0, tx = 0, sg = 0;
- int tso = 0, ufo = 0, gso = 0, gro = 0, lro = 0, ntuple = 0;
+ int tso = 0, ufo = 0, gso = 0, gro = 0, lro = 0, ntuple = 0, rss = 0;
fprintf(stdout, "Offload parameters for %s:\n", devname);
@@ -1935,6 +1941,7 @@ static int do_goffload(int fd, struct ifreq *ifr)
} else {
lro = (eval.data & ETH_FLAG_LRO) != 0;
ntuple = (eval.data & ETH_FLAG_NTUPLE) != 0;
+ rss = (eval.data & ETH_FLAG_RSS) != 0;
allfail = 0;
}
@@ -1953,7 +1960,7 @@ static int do_goffload(int fd, struct ifreq *ifr)
return 83;
}
- return dump_offload(rx, tx, sg, tso, ufo, gso, gro, lro, ntuple);
+ return dump_offload(rx, tx, sg, tso, ufo, gso, gro, lro, ntuple, rss);
}
static int do_soffload(int fd, struct ifreq *ifr)
@@ -2087,6 +2094,29 @@ static int do_soffload(int fd, struct ifreq *ifr)
return 93;
}
}
+ if (off_rss_wanted >= 0) {
+ changed = 1;
+ eval.cmd = ETHTOOL_GFLAGS;
+ eval.data = 0;
+ ifr->ifr_data = (caddr_t)&eval;
+ err = ioctl(fd, SIOCETHTOOL, ifr);
+ if (err) {
+ perror("Cannot get device flag settings");
+ return 91;
+ }
+
+ eval.cmd = ETHTOOL_SFLAGS;
+ if (off_rss_wanted)
+ eval.data |= ETH_FLAG_RSS;
+ else
+ eval.data &= ~ETH_FLAG_RSS;
+
+ err = ioctl(fd, SIOCETHTOOL, ifr);
+ if (err) {
+ perror("Cannot set n-tuple filter settings");
+ return 93;
+ }
+ }
if (!changed) {
fprintf(stdout, "no offload settings changed\n");
@@ -2655,6 +2685,9 @@ static int do_srxntuple(int fd, struct ifreq *ifr)
return 0;
}
+#define ETHTOOL_MAX_NTUPLE_LIST_ENTRY 1024
+#define ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY 14
+
static int do_grxntuple(int fd, struct ifreq *ifr)
{
struct ethtool_gstrings *strings;
--
1.6.3.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 1/2] netdev: ethtool RXHASH flag
2010-03-28 22:44 [PATCH 1/2] netdev: add support for Receive Side Scaling hash control Stephen Hemminger
2010-03-28 22:47 ` [PATCH 2/2] ethtool: add RSS command flag Stephen Hemminger
@ 2010-03-30 0:47 ` Stephen Hemminger
2010-03-30 0:53 ` [PATCH 2/2] ethtool: RXHASH flag support Stephen Hemminger
` (2 more replies)
2010-03-31 6:52 ` [PATCH 1/2] netdev: add support for Receive Side Scaling hash control David Miller
2 siblings, 3 replies; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-30 0:47 UTC (permalink / raw)
To: David Miller; +Cc: netdev
This adds ethtool and device feature flag to allow control
of receive hashing offload.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
Supersedes earlier patch, decided to call it RXHASH not RSS since
we don't care about other vendors acronyms
--- a/include/linux/ethtool.h 2010-03-28 14:09:58.611267016 -0700
+++ b/include/linux/ethtool.h 2010-03-28 14:19:45.032516128 -0700
@@ -310,6 +310,7 @@ struct ethtool_perm_addr {
enum ethtool_flags {
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */
+ ETH_FLAG_RXHASH = (1 << 28),
};
/* The following structures are for supporting RX network flow
--- a/include/linux/netdevice.h 2010-03-28 14:12:13.092517615 -0700
+++ b/include/linux/netdevice.h 2010-03-28 14:13:47.232915349 -0700
@@ -785,6 +785,7 @@ struct net_device {
#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
#define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/
#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
+#define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */
/* Segmentation offload features */
#define NETIF_F_GSO_SHIFT 16
--- a/net/core/ethtool.c 2010-03-28 14:12:25.012207457 -0700
+++ b/net/core/ethtool.c 2010-03-28 14:19:41.548521569 -0700
@@ -121,7 +121,7 @@ int ethtool_op_set_ufo(struct net_device
* NETIF_F_xxx values in include/linux/netdevice.h
*/
static const u32 flags_dup_features =
- (ETH_FLAG_LRO | ETH_FLAG_NTUPLE);
+ (ETH_FLAG_LRO | ETH_FLAG_NTUPLE | ETH_FLAG_RXHASH);
u32 ethtool_op_get_flags(struct net_device *dev)
{
@@ -152,6 +152,11 @@ int ethtool_op_set_flags(struct net_devi
features &= ~NETIF_F_NTUPLE;
}
+ if (data & ETH_FLAG_RXHASH)
+ features |= NETIF_F_RXHASH;
+ else
+ features &= ~NETIF_F_RXHASH;
+
dev->features = features;
return 0;
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 0:47 ` [PATCH 1/2] netdev: ethtool RXHASH flag Stephen Hemminger
@ 2010-03-30 0:53 ` Stephen Hemminger
2010-03-30 17:29 ` Jeff Garzik
2010-03-30 17:19 ` [PATCH 1/2] netdev: ethtool RXHASH flag Jeff Garzik
2010-03-31 6:52 ` David Miller
2 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-30 0:53 UTC (permalink / raw)
To: Jeff Garzik, David Miller; +Cc: netdev
Add support for RXHASH flag in ethtool offload.
Update to current net-next sanitized version of ethtool.h
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
ethtool-copy.h | 32 +++++++++++++++++++++++++-------
ethtool.8 | 4 ++++
ethtool.c | 42 +++++++++++++++++++++++++++++++++++++-----
3 files changed, 66 insertions(+), 12 deletions(-)
diff --git a/ethtool-copy.h b/ethtool-copy.h
index 8681f5e..0cf8f33 100644
--- a/ethtool-copy.h
+++ b/ethtool-copy.h
@@ -36,7 +36,7 @@ struct ethtool_cmd {
__u32 reserved[2];
};
-static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
+static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
__u32 speed)
{
@@ -44,7 +44,7 @@ static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
ep->speed_hi = (__u16)(speed >> 16);
}
-static inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
+static __inline__ __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
{
return (ep->speed_hi << 16) | ep->speed;
}
@@ -61,6 +61,13 @@ struct ethtool_drvinfo {
/* For PCI devices, use pci_name(pci_dev). */
char reserved1[32];
char reserved2[12];
+ /*
+ * Some struct members below are filled in
+ * using ops->get_sset_count(). Obtaining
+ * this info from ethtool_drvinfo is now
+ * deprecated; Use ETHTOOL_GSSET_INFO
+ * instead.
+ */
__u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */
__u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */
__u32 testinfo_len;
@@ -253,6 +260,17 @@ struct ethtool_gstrings {
__u8 data[0];
};
+struct ethtool_sset_info {
+ __u32 cmd; /* ETHTOOL_GSSET_INFO */
+ __u32 reserved;
+ __u64 sset_mask; /* input: each bit selects an sset to query */
+ /* output: each bit a returned sset */
+ __u32 data[0]; /* ETH_SS_xxx count, in order, based on bits
+ in sset_mask. One bit implies one
+ __u32, two bits implies two
+ __u32's, etc. */
+};
+
enum ethtool_test_flags {
ETH_TEST_FL_OFFLINE = (1 << 0), /* online / offline */
ETH_TEST_FL_FAILED = (1 << 1), /* test passed / failed */
@@ -292,6 +310,7 @@ struct ethtool_perm_addr {
enum ethtool_flags {
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */
+ ETH_FLAG_RXHASH = (1 << 28),
};
/* The following structures are for supporting RX network flow
@@ -389,8 +408,6 @@ struct ethtool_rx_ntuple_flow_spec {
#define ETHTOOL_RXNTUPLE_ACTION_DROP -1
};
-#define ETHTOOL_MAX_NTUPLE_LIST_ENTRY 1024
-#define ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY 14
struct ethtool_rx_ntuple {
__u32 cmd;
struct ethtool_rx_ntuple_flow_spec fs;
@@ -408,6 +425,7 @@ struct ethtool_flash {
char data[ETHTOOL_FLASH_MAX_FILENAME];
};
+
/* CMDs currently supported */
#define ETHTOOL_GSET 0x00000001 /* Get settings. */
#define ETHTOOL_SSET 0x00000002 /* Set settings. */
@@ -463,9 +481,9 @@ struct ethtool_flash {
#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */
#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */
#define ETHTOOL_RESET 0x00000034 /* Reset hardware */
-
-#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */
-#define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */
+#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 */
/* compatibility with older code */
#define SPARC_ETH_GSET ETHTOOL_GSET
diff --git a/ethtool.8 b/ethtool.8
index eb6430b..a7b43d5 100644
--- a/ethtool.8
+++ b/ethtool.8
@@ -170,6 +170,7 @@ ethtool \- Display or change ethernet card settings
.B2 gso on off
.B2 gro on off
.B2 lro on off
+.B2 rxhash on off
.B ethtool \-p|\-\-identify
.I ethX
@@ -362,6 +363,9 @@ Specifies whether generic receive offload should be enabled
.A2 lro on off
Specifies whether large receive offload should be enabled
.TP
+.A2 rxhash on off
+Specifies whether receive hashing offload should be enabled
+.TP
.B \-p \-\-identify
Initiates adapter-specific action intended to enable an operator to
easily identify the adapter by sight. Typically this involves
diff --git a/ethtool.c b/ethtool.c
index fc9e419..26ab94b 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -173,6 +173,7 @@ static struct option {
" [ gro on|off ]\n"
" [ lro on|off ]\n"
" [ ntuple on|off ]\n"
+ " [ rxhash on|off ]\n"
},
{ "-i", "--driver", MODE_GDRV, "Show driver information" },
{ "-d", "--register-dump", MODE_GREGS, "Do a register dump",
@@ -257,6 +258,7 @@ static int off_gso_wanted = -1;
static int off_lro_wanted = -1;
static int off_gro_wanted = -1;
static int off_ntuple_wanted = -1;
+static int off_rxhash_wanted = -1;
static struct ethtool_pauseparam epause;
static int gpause_changed = 0;
@@ -382,6 +384,7 @@ static struct cmdline_info cmdline_offload[] = {
{ "lro", CMDL_BOOL, &off_lro_wanted, NULL },
{ "gro", CMDL_BOOL, &off_gro_wanted, NULL },
{ "ntuple", CMDL_BOOL, &off_ntuple_wanted, NULL },
+ { "rxhash", CMDL_BOOL, &off_rxhash_wanted, NULL },
};
static struct cmdline_info cmdline_pause[] = {
@@ -1526,7 +1529,7 @@ static int dump_coalesce(void)
}
static int dump_offload(int rx, int tx, int sg, int tso, int ufo, int gso,
- int gro, int lro, int ntuple)
+ int gro, int lro, int ntuple, int rxhash)
{
fprintf(stdout,
"rx-checksumming: %s\n"
@@ -1537,7 +1540,8 @@ static int dump_offload(int rx, int tx, int sg, int tso, int ufo, int gso,
"generic-segmentation-offload: %s\n"
"generic-receive-offload: %s\n"
"large-receive-offload: %s\n"
- "ntuple-filters: %s\n",
+ "ntuple-filters: %s\n"
+ "receive-hashing: %s\n",
rx ? "on" : "off",
tx ? "on" : "off",
sg ? "on" : "off",
@@ -1546,7 +1550,8 @@ static int dump_offload(int rx, int tx, int sg, int tso, int ufo, int gso,
gso ? "on" : "off",
gro ? "on" : "off",
lro ? "on" : "off",
- ntuple ? "on" : "off");
+ ntuple ? "on" : "off",
+ rxhash ? "on" : "off");
return 0;
}
@@ -1863,7 +1868,7 @@ static int do_goffload(int fd, struct ifreq *ifr)
{
struct ethtool_value eval;
int err, allfail = 1, rx = 0, tx = 0, sg = 0;
- int tso = 0, ufo = 0, gso = 0, gro = 0, lro = 0, ntuple = 0;
+ int tso = 0, ufo = 0, gso = 0, gro = 0, lro = 0, ntuple = 0, rxhash = 0;
fprintf(stdout, "Offload parameters for %s:\n", devname);
@@ -1935,6 +1940,7 @@ static int do_goffload(int fd, struct ifreq *ifr)
} else {
lro = (eval.data & ETH_FLAG_LRO) != 0;
ntuple = (eval.data & ETH_FLAG_NTUPLE) != 0;
+ rxhash = (eval.data & ETH_FLAG_RXHASH) != 0;
allfail = 0;
}
@@ -1953,7 +1959,7 @@ static int do_goffload(int fd, struct ifreq *ifr)
return 83;
}
- return dump_offload(rx, tx, sg, tso, ufo, gso, gro, lro, ntuple);
+ return dump_offload(rx, tx, sg, tso, ufo, gso, gro, lro, ntuple, rxhash);
}
static int do_soffload(int fd, struct ifreq *ifr)
@@ -2087,6 +2093,29 @@ static int do_soffload(int fd, struct ifreq *ifr)
return 93;
}
}
+ if (off_rxhash_wanted >= 0) {
+ changed = 1;
+ eval.cmd = ETHTOOL_GFLAGS;
+ eval.data = 0;
+ ifr->ifr_data = (caddr_t)&eval;
+ err = ioctl(fd, SIOCETHTOOL, ifr);
+ if (err) {
+ perror("Cannot get device flag settings");
+ return 91;
+ }
+
+ eval.cmd = ETHTOOL_SFLAGS;
+ if (off_rxhash_wanted)
+ eval.data |= ETH_FLAG_RXHASH;
+ else
+ eval.data &= ~ETH_FLAG_RXHASH;
+
+ err = ioctl(fd, SIOCETHTOOL, ifr);
+ if (err) {
+ perror("Cannot set receive hash settings");
+ return 93;
+ }
+ }
if (!changed) {
fprintf(stdout, "no offload settings changed\n");
@@ -2655,6 +2684,9 @@ static int do_srxntuple(int fd, struct ifreq *ifr)
return 0;
}
+#define ETHTOOL_MAX_NTUPLE_LIST_ENTRY 1024
+#define ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY 14
+
static int do_grxntuple(int fd, struct ifreq *ifr)
{
struct ethtool_gstrings *strings;
--
1.6.3.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] netdev: ethtool RXHASH flag
2010-03-30 0:47 ` [PATCH 1/2] netdev: ethtool RXHASH flag Stephen Hemminger
2010-03-30 0:53 ` [PATCH 2/2] ethtool: RXHASH flag support Stephen Hemminger
@ 2010-03-30 17:19 ` Jeff Garzik
2010-03-31 6:52 ` David Miller
2 siblings, 0 replies; 14+ messages in thread
From: Jeff Garzik @ 2010-03-30 17:19 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
On 03/29/2010 08:47 PM, Stephen Hemminger wrote:
> This adds ethtool and device feature flag to allow control
> of receive hashing offload.
>
> Signed-off-by: Stephen Hemminger<shemminger@vyatta.com>
Acked-by: Jeff Garzik <jgarzik@redhat.com>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 0:53 ` [PATCH 2/2] ethtool: RXHASH flag support Stephen Hemminger
@ 2010-03-30 17:29 ` Jeff Garzik
2010-03-30 17:32 ` Stephen Hemminger
0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2010-03-30 17:29 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
On 03/29/2010 08:53 PM, Stephen Hemminger wrote:
> Add support for RXHASH flag in ethtool offload.
> Update to current net-next sanitized version of ethtool.h
>
> Signed-off-by: Stephen Hemminger<shemminger@vyatta.com>
> ---
> ethtool-copy.h | 32 +++++++++++++++++++++++++-------
> ethtool.8 | 4 ++++
> ethtool.c | 42 +++++++++++++++++++++++++++++++++++++-----
> 3 files changed, 66 insertions(+), 12 deletions(-)
>
> diff --git a/ethtool-copy.h b/ethtool-copy.h
> index 8681f5e..0cf8f33 100644
> --- a/ethtool-copy.h
> +++ b/ethtool-copy.h
> @@ -36,7 +36,7 @@ struct ethtool_cmd {
> __u32 reserved[2];
> };
>
> -static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
> +static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
> __u32 speed)
> {
>
> @@ -44,7 +44,7 @@ static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
> ep->speed_hi = (__u16)(speed>> 16);
> }
>
> -static inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
> +static __inline__ __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
> {
> return (ep->speed_hi<< 16) | ep->speed;
> }
> @@ -61,6 +61,13 @@ struct ethtool_drvinfo {
> /* For PCI devices, use pci_name(pci_dev). */
> char reserved1[32];
> char reserved2[12];
> + /*
> + * Some struct members below are filled in
> + * using ops->get_sset_count(). Obtaining
> + * this info from ethtool_drvinfo is now
> + * deprecated; Use ETHTOOL_GSSET_INFO
> + * instead.
> + */
> __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */
> __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */
> __u32 testinfo_len;
> @@ -253,6 +260,17 @@ struct ethtool_gstrings {
> __u8 data[0];
> };
>
> +struct ethtool_sset_info {
> + __u32 cmd; /* ETHTOOL_GSSET_INFO */
> + __u32 reserved;
> + __u64 sset_mask; /* input: each bit selects an sset to query */
> + /* output: each bit a returned sset */
> + __u32 data[0]; /* ETH_SS_xxx count, in order, based on bits
> + in sset_mask. One bit implies one
> + __u32, two bits implies two
> + __u32's, etc. */
> +};
> +
> enum ethtool_test_flags {
> ETH_TEST_FL_OFFLINE = (1<< 0), /* online / offline */
> ETH_TEST_FL_FAILED = (1<< 1), /* test passed / failed */
> @@ -292,6 +310,7 @@ struct ethtool_perm_addr {
> enum ethtool_flags {
> ETH_FLAG_LRO = (1<< 15), /* LRO is enabled */
> ETH_FLAG_NTUPLE = (1<< 27), /* N-tuple filters enabled */
> + ETH_FLAG_RXHASH = (1<< 28),
> };
>
> /* The following structures are for supporting RX network flow
> @@ -389,8 +408,6 @@ struct ethtool_rx_ntuple_flow_spec {
> #define ETHTOOL_RXNTUPLE_ACTION_DROP -1
> };
>
> -#define ETHTOOL_MAX_NTUPLE_LIST_ENTRY 1024
> -#define ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY 14
> struct ethtool_rx_ntuple {
> __u32 cmd;
> struct ethtool_rx_ntuple_flow_spec fs;
> @@ -408,6 +425,7 @@ struct ethtool_flash {
> char data[ETHTOOL_FLASH_MAX_FILENAME];
> };
>
> +
> /* CMDs currently supported */
> #define ETHTOOL_GSET 0x00000001 /* Get settings. */
> #define ETHTOOL_SSET 0x00000002 /* Set settings. */
> @@ -463,9 +481,9 @@ struct ethtool_flash {
> #define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */
> #define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */
> #define ETHTOOL_RESET 0x00000034 /* Reset hardware */
> -
> -#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */
> -#define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */
> +#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 */
>
NAK - you broke the build. You should also know not to combine patches
like this. Linux 101: separate changes, separate patches.
By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
breaking the ethtool build.
Furthermore, I just pulled net-next and did my own sync, and those
s/inline/__inline__/ substitutions are not present.
I went ahead and made sure everything is sync'd correctly and building
correctly, in the ethtool git repo. Please resubmit a patch DIRECTLY
and ONLY related to RXHASH flag support. If you decide to do any other
work, that belongs in a separate patch.
Jeff
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 17:29 ` Jeff Garzik
@ 2010-03-30 17:32 ` Stephen Hemminger
2010-03-30 17:37 ` Jeff Garzik
0 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-30 17:32 UTC (permalink / raw)
To: Jeff Garzik; +Cc: David Miller, netdev
On Tue, 30 Mar 2010 13:29:01 -0400
Jeff Garzik <jeff@garzik.org> wrote:
> By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
> and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
> breaking the ethtool build.
In the patch I moved it to ethtool.c to have local entries.
I believe that all cloned headers should only come from the result
of kernel "make install_headers". Not locally different vrsions.
--
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 17:32 ` Stephen Hemminger
@ 2010-03-30 17:37 ` Jeff Garzik
2010-03-30 21:05 ` Stephen Hemminger
0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2010-03-30 17:37 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
On 03/30/2010 01:32 PM, Stephen Hemminger wrote:
> On Tue, 30 Mar 2010 13:29:01 -0400
> Jeff Garzik<jeff@garzik.org> wrote:
>
>> By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
>> and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
>> breaking the ethtool build.
>
> In the patch I moved it to ethtool.c to have local entries.
>
> I believe that all cloned headers should only come from the result
> of kernel "make install_headers". Not locally different vrsions.
There is nothing locally different about ethtool-copy.h.
Jeff
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 17:37 ` Jeff Garzik
@ 2010-03-30 21:05 ` Stephen Hemminger
2010-03-30 21:08 ` Jeff Garzik
0 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-30 21:05 UTC (permalink / raw)
To: Jeff Garzik; +Cc: David Miller, netdev
On Tue, 30 Mar 2010 13:37:13 -0400
Jeff Garzik <jeff@garzik.org> wrote:
> On 03/30/2010 01:32 PM, Stephen Hemminger wrote:
> > On Tue, 30 Mar 2010 13:29:01 -0400
> > Jeff Garzik<jeff@garzik.org> wrote:
> >
> >> By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
> >> and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
> >> breaking the ethtool build.
> >
> > In the patch I moved it to ethtool.c to have local entries.
> >
> > I believe that all cloned headers should only come from the result
> > of kernel "make install_headers". Not locally different vrsions.
>
> There is nothing locally different about ethtool-copy.h.
>
> Jeff
diff -u ethtool-copy.h ~/kernel/net-next-2.6/usr/include/linux/ethtool.h
--- ethtool-copy.h 2010-03-30 14:03:45.000000000 -0700
+++ /home/shemminger/kernel/net-next-2.6/usr/include/linux/ethtool.h 2010-03-30 14:04:30.893866057 -0700
@@ -36,7 +36,7 @@
__u32 reserved[2];
};
-static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
+static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
__u32 speed)
{
@@ -44,7 +44,7 @@
ep->speed_hi = (__u16)(speed >> 16);
}
-static inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
+static __inline__ __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
{
return (ep->speed_hi << 16) | ep->speed;
}
@@ -424,6 +424,7 @@
char data[ETHTOOL_FLASH_MAX_FILENAME];
};
+
/* CMDs currently supported */
#define ETHTOOL_GSET 0x00000001 /* Get settings. */
#define ETHTOOL_SSET 0x00000002 /* Set settings. */
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 21:05 ` Stephen Hemminger
@ 2010-03-30 21:08 ` Jeff Garzik
2010-03-30 21:31 ` Stephen Hemminger
0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2010-03-30 21:08 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
On 03/30/2010 05:05 PM, Stephen Hemminger wrote:
> On Tue, 30 Mar 2010 13:37:13 -0400
> Jeff Garzik<jeff@garzik.org> wrote:
>
>> On 03/30/2010 01:32 PM, Stephen Hemminger wrote:
>>> On Tue, 30 Mar 2010 13:29:01 -0400
>>> Jeff Garzik<jeff@garzik.org> wrote:
>>>
>>>> By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
>>>> and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
>>>> breaking the ethtool build.
>>>
>>> In the patch I moved it to ethtool.c to have local entries.
>>>
>>> I believe that all cloned headers should only come from the result
>>> of kernel "make install_headers". Not locally different vrsions.
>>
>> There is nothing locally different about ethtool-copy.h.
>>
>> Jeff
>
> diff -u ethtool-copy.h ~/kernel/net-next-2.6/usr/include/linux/ethtool.h
> --- ethtool-copy.h 2010-03-30 14:03:45.000000000 -0700
> +++ /home/shemminger/kernel/net-next-2.6/usr/include/linux/ethtool.h 2010-03-30 14:04:30.893866057 -0700
The canonical copy of ethtool-copy.h comes from the kernel tree's
include/linux/ethtool.h.
Jeff
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 21:08 ` Jeff Garzik
@ 2010-03-30 21:31 ` Stephen Hemminger
2010-03-30 22:58 ` Jeff Garzik
0 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2010-03-30 21:31 UTC (permalink / raw)
To: Jeff Garzik; +Cc: David Miller, netdev
On Tue, 30 Mar 2010 17:08:48 -0400
Jeff Garzik <jeff@garzik.org> wrote:
> On 03/30/2010 05:05 PM, Stephen Hemminger wrote:
> > On Tue, 30 Mar 2010 13:37:13 -0400
> > Jeff Garzik<jeff@garzik.org> wrote:
> >
> >> On 03/30/2010 01:32 PM, Stephen Hemminger wrote:
> >>> On Tue, 30 Mar 2010 13:29:01 -0400
> >>> Jeff Garzik<jeff@garzik.org> wrote:
> >>>
> >>>> By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
> >>>> and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
> >>>> breaking the ethtool build.
> >>>
> >>> In the patch I moved it to ethtool.c to have local entries.
> >>>
> >>> I believe that all cloned headers should only come from the result
> >>> of kernel "make install_headers". Not locally different vrsions.
> >>
> >> There is nothing locally different about ethtool-copy.h.
> >>
> >> Jeff
> >
> > diff -u ethtool-copy.h ~/kernel/net-next-2.6/usr/include/linux/ethtool.h
> > --- ethtool-copy.h 2010-03-30 14:03:45.000000000 -0700
> > +++ /home/shemminger/kernel/net-next-2.6/usr/include/linux/ethtool.h 2010-03-30 14:04:30.893866057 -0700
>
> The canonical copy of ethtool-copy.h comes from the kernel tree's
> include/linux/ethtool.h.
>
The difference comes because scripts/headers_install.pl decides to change inline to __inline__.
I think Kbuild is the proper place to do any exported headers cleanup, so I would
rather the automated process work.
--
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ethtool: RXHASH flag support
2010-03-30 21:31 ` Stephen Hemminger
@ 2010-03-30 22:58 ` Jeff Garzik
0 siblings, 0 replies; 14+ messages in thread
From: Jeff Garzik @ 2010-03-30 22:58 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
On 03/30/2010 05:31 PM, Stephen Hemminger wrote:
> On Tue, 30 Mar 2010 17:08:48 -0400
> Jeff Garzik<jeff@garzik.org> wrote:
>
>> On 03/30/2010 05:05 PM, Stephen Hemminger wrote:
>>> On Tue, 30 Mar 2010 13:37:13 -0400
>>> Jeff Garzik<jeff@garzik.org> wrote:
>>>
>>>> On 03/30/2010 01:32 PM, Stephen Hemminger wrote:
>>>>> On Tue, 30 Mar 2010 13:29:01 -0400
>>>>> Jeff Garzik<jeff@garzik.org> wrote:
>>>>>
>>>>>> By blindly sync'ing the ethtool.h header, ETHTOOL_MAX_NTUPLE_LIST_ENTRY
>>>>>> and its sibling ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY were removed,
>>>>>> breaking the ethtool build.
>>>>>
>>>>> In the patch I moved it to ethtool.c to have local entries.
>>>>>
>>>>> I believe that all cloned headers should only come from the result
>>>>> of kernel "make install_headers". Not locally different vrsions.
>>>>
>>>> There is nothing locally different about ethtool-copy.h.
>>>>
>>>> Jeff
>>>
>>> diff -u ethtool-copy.h ~/kernel/net-next-2.6/usr/include/linux/ethtool.h
>>> --- ethtool-copy.h 2010-03-30 14:03:45.000000000 -0700
>>> +++ /home/shemminger/kernel/net-next-2.6/usr/include/linux/ethtool.h 2010-03-30 14:04:30.893866057 -0700
>>
>> The canonical copy of ethtool-copy.h comes from the kernel tree's
>> include/linux/ethtool.h.
>>
>
> The difference comes because scripts/headers_install.pl decides to change inline to __inline__.
> I think Kbuild is the proper place to do any exported headers cleanup, so I would
> rather the automated process work.
Either way, it's a manual process to sync up -- except that grabbing
from $somewhere/usr/include/linux/ethtool.h involves more steps and is
potentially more error-prone.
And regardless of any of this, none of the sync-up stuff should have
been in the same patch as your RXHASH additions.
Now that ethtool.git has the latest from net-next, it's a moot point anyway.
Jeff
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] netdev: add support for Receive Side Scaling hash control
2010-03-28 22:44 [PATCH 1/2] netdev: add support for Receive Side Scaling hash control Stephen Hemminger
2010-03-28 22:47 ` [PATCH 2/2] ethtool: add RSS command flag Stephen Hemminger
2010-03-30 0:47 ` [PATCH 1/2] netdev: ethtool RXHASH flag Stephen Hemminger
@ 2010-03-31 6:52 ` David Miller
2 siblings, 0 replies; 14+ messages in thread
From: David Miller @ 2010-03-31 6:52 UTC (permalink / raw)
To: shemminger; +Cc: netdev
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Sun, 28 Mar 2010 15:44:48 -0700
> This adds ethtool and device feature flag to allow control
> of Receive Side Scaling hashing supported by many modern
> controllers.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
> ---
> I am working on RSS for sky2 device, but the hardware isn't fully cooperating
> but thought others might want to use same API.
I assume you didn't intend this to be applied because it uses
the same value as you choose for RXHASH.
If you want this applied, resubmit against your RXHASH changes.
Thanks!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] netdev: ethtool RXHASH flag
2010-03-30 0:47 ` [PATCH 1/2] netdev: ethtool RXHASH flag Stephen Hemminger
2010-03-30 0:53 ` [PATCH 2/2] ethtool: RXHASH flag support Stephen Hemminger
2010-03-30 17:19 ` [PATCH 1/2] netdev: ethtool RXHASH flag Jeff Garzik
@ 2010-03-31 6:52 ` David Miller
2 siblings, 0 replies; 14+ messages in thread
From: David Miller @ 2010-03-31 6:52 UTC (permalink / raw)
To: shemminger; +Cc: netdev
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Mon, 29 Mar 2010 17:47:27 -0700
> This adds ethtool and device feature flag to allow control
> of receive hashing offload.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
> ---
> Supersedes earlier patch, decided to call it RXHASH not RSS since
> we don't care about other vendors acronyms
Ah, now I understand, ignore my other email.
Applied, thanks everyone.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2010-03-31 6:52 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-28 22:44 [PATCH 1/2] netdev: add support for Receive Side Scaling hash control Stephen Hemminger
2010-03-28 22:47 ` [PATCH 2/2] ethtool: add RSS command flag Stephen Hemminger
2010-03-30 0:47 ` [PATCH 1/2] netdev: ethtool RXHASH flag Stephen Hemminger
2010-03-30 0:53 ` [PATCH 2/2] ethtool: RXHASH flag support Stephen Hemminger
2010-03-30 17:29 ` Jeff Garzik
2010-03-30 17:32 ` Stephen Hemminger
2010-03-30 17:37 ` Jeff Garzik
2010-03-30 21:05 ` Stephen Hemminger
2010-03-30 21:08 ` Jeff Garzik
2010-03-30 21:31 ` Stephen Hemminger
2010-03-30 22:58 ` Jeff Garzik
2010-03-30 17:19 ` [PATCH 1/2] netdev: ethtool RXHASH flag Jeff Garzik
2010-03-31 6:52 ` David Miller
2010-03-31 6:52 ` [PATCH 1/2] netdev: add support for Receive Side Scaling hash control David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.