All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.