All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] ethtool: Update ethtool-copy.h
@ 2009-04-30 12:33 Ben Hutchings
  2009-04-30 12:35 ` Ben Hutchings
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ben Hutchings @ 2009-04-30 12:33 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
This comes from net-next-2.6 as of today.

Ben.

 ethtool-copy.h |  107 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 100 insertions(+), 7 deletions(-)

diff --git a/ethtool-copy.h b/ethtool-copy.h
index 3ca4e2c..d9bb957 100644
--- a/ethtool-copy.h
+++ b/ethtool-copy.h
@@ -7,11 +7,14 @@
  * Portions Copyright 2002 Intel (eli.kupermann@intel.com,
  *                                christopher.leech@intel.com,
  *                                scott.feldman@intel.com)
+ * Portions Copyright (C) Sun Microsystems 2008
  */
 
 #ifndef _LINUX_ETHTOOL_H
 #define _LINUX_ETHTOOL_H
 
+#include <linux/types.h>
+
 /* This should work for both 32 and 64 bit userland. */
 struct ethtool_cmd {
 	__u32	cmd;
@@ -23,14 +26,16 @@ struct ethtool_cmd {
 	__u8	phy_address;
 	__u8	transceiver;	/* Which transceiver to use */
 	__u8	autoneg;	/* Enable or disable autonegotiation */
+	__u8	mdio_support;
 	__u32	maxtxpkt;	/* Tx pkts before generating tx int */
 	__u32	maxrxpkt;	/* Rx pkts before generating rx int */
 	__u16	speed_hi;
 	__u16	reserved2;
-	__u32	reserved[3];
+	__u32	lp_advertising;	/* Features the link partner advertises */
+	__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)
 {
 
@@ -38,7 +43,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;
 }
@@ -285,12 +290,78 @@ enum ethtool_flags {
 	ETH_FLAG_LRO		= (1 << 15),	/* LRO is enabled */
 };
 
-struct ethtool_rxnfc {
-	__u32		cmd;
+/* The following structures are for supporting RX network flow
+ * classification configuration. Note, all multibyte fields, e.g.,
+ * ip4src, ip4dst, psrc, pdst, spi, etc. are expected to be in network
+ * byte order.
+ */
+struct ethtool_tcpip4_spec {
+	__be32	ip4src;
+	__be32	ip4dst;
+	__be16	psrc;
+	__be16	pdst;
+	__u8    tos;
+};
+
+struct ethtool_ah_espip4_spec {
+	__be32	ip4src;
+	__be32	ip4dst;
+	__be32	spi;
+	__u8    tos;
+};
+
+struct ethtool_rawip4_spec {
+	__be32	ip4src;
+	__be32	ip4dst;
+	__u8	hdata[64];
+};
+
+struct ethtool_ether_spec {
+	__be16	ether_type;
+	__u8	frame_size;
+	__u8	eframe[16];
+};
+
+#define	ETH_RX_NFC_IP4	1
+#define	ETH_RX_NFC_IP6	2
+
+struct ethtool_usrip4_spec {
+	__be32	ip4src;
+	__be32	ip4dst;
+	__be32	l4_4_bytes;
+	__u8    tos;
+	__u8    ip_ver;
+	__u8    proto;
+};
+
+struct ethtool_rx_flow_spec {
 	__u32		flow_type;
-	__u64		data;
+	union {
+		struct ethtool_tcpip4_spec		tcp_ip4_spec;
+		struct ethtool_tcpip4_spec		udp_ip4_spec;
+		struct ethtool_tcpip4_spec		sctp_ip4_spec;
+		struct ethtool_ah_espip4_spec		ah_ip4_spec;
+		struct ethtool_ah_espip4_spec		esp_ip4_spec;
+		struct ethtool_rawip4_spec		raw_ip4_spec;
+		struct ethtool_ether_spec		ether_spec;
+		struct ethtool_usrip4_spec		usr_ip4_spec;
+		__u8					hdata[64];
+	} h_u, m_u; /* entry, mask */
+	__u64		ring_cookie;
+	__u32		location;
 };
 
+struct ethtool_rxnfc {
+	__u32				cmd;
+	__u32				flow_type;
+	/* The rx flow hash value or the rule DB size */
+	__u64				data;
+	struct ethtool_rx_flow_spec	fs;
+	__u32				rule_cnt;
+	__u32				rule_locs[0];
+};
+
+
 /* CMDs currently supported */
 #define ETHTOOL_GSET		0x00000001 /* Get settings. */
 #define ETHTOOL_SSET		0x00000002 /* Set settings. */
@@ -338,6 +409,12 @@ struct ethtool_rxnfc {
 #define	ETHTOOL_SRXFH		0x0000002a /* Set RX flow hash configuration */
 #define ETHTOOL_GGRO		0x0000002b /* Get GRO enable (ethtool_value) */
 #define ETHTOOL_SGRO		0x0000002c /* Set GRO enable (ethtool_value) */
+#define	ETHTOOL_GRXRINGS	0x0000002d /* Get RX rings available for LB */
+#define	ETHTOOL_GRXCLSRLCNT	0x0000002e /* Get RX class rule count */
+#define	ETHTOOL_GRXCLSRULE	0x0000002f /* Get RX classification rule */
+#define	ETHTOOL_GRXCLSRLALL	0x00000030 /* Get all RX classification rule */
+#define	ETHTOOL_SRXCLSRLDEL	0x00000031 /* Delete RX classification rule */
+#define	ETHTOOL_SRXCLSRLINS	0x00000032 /* Insert RX classification rule */
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET		ETHTOOL_GSET
@@ -360,6 +437,11 @@ struct ethtool_rxnfc {
 #define SUPPORTED_Pause			(1 << 13)
 #define SUPPORTED_Asym_Pause		(1 << 14)
 #define SUPPORTED_2500baseX_Full	(1 << 15)
+#define SUPPORTED_Backplane		(1 << 16)
+#define SUPPORTED_1000baseKX_Full	(1 << 17)
+#define SUPPORTED_10000baseKX4_Full	(1 << 18)
+#define SUPPORTED_10000baseKR_Full	(1 << 19)
+#define SUPPORTED_10000baseR_FEC	(1 << 20)
 
 /* Indicates what features are advertised by the interface. */
 #define ADVERTISED_10baseT_Half		(1 << 0)
@@ -378,6 +460,11 @@ struct ethtool_rxnfc {
 #define ADVERTISED_Pause		(1 << 13)
 #define ADVERTISED_Asym_Pause		(1 << 14)
 #define ADVERTISED_2500baseX_Full	(1 << 15)
+#define ADVERTISED_Backplane		(1 << 16)
+#define ADVERTISED_1000baseKX_Full	(1 << 17)
+#define ADVERTISED_10000baseKX4_Full	(1 << 18)
+#define ADVERTISED_10000baseKR_Full	(1 << 19)
+#define ADVERTISED_10000baseR_FEC	(1 << 20)
 
 /* The following are all involved in forcing a particular link
  * mode for the device for setting things.  When getting the
@@ -402,6 +489,7 @@ struct ethtool_rxnfc {
 #define PORT_MII		0x02
 #define PORT_FIBRE		0x03
 #define PORT_BNC		0x04
+#define PORT_OTHER		0xff
 
 /* Which transceiver to use. */
 #define XCVR_INTERNAL		0x00
@@ -434,9 +522,13 @@ struct ethtool_rxnfc {
 #define	UDP_V6_FLOW	0x06
 #define	SCTP_V6_FLOW	0x07
 #define	AH_ESP_V6_FLOW	0x08
+#define	AH_V4_FLOW	0x09
+#define	ESP_V4_FLOW	0x0a
+#define	AH_V6_FLOW	0x0b
+#define	ESP_V6_FLOW	0x0c
+#define	IP_USER_FLOW	0x0d
 
 /* L3-L4 network traffic flow hash options */
-#define	RXH_DEV_PORT	(1 << 0)
 #define	RXH_L2DA	(1 << 1)
 #define	RXH_VLAN	(1 << 2)
 #define	RXH_L3_PROTO	(1 << 3)
@@ -446,5 +538,6 @@ struct ethtool_rxnfc {
 #define	RXH_L4_B_2_3	(1 << 7) /* dst port in case of TCP/UDP/SCTP */
 #define	RXH_DISCARD	(1 << 31)
 
+#define	RX_CLS_FLOW_DISC	0xffffffffffffffffULL
 
 #endif /* _LINUX_ETHTOOL_H */

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/5] ethtool: Update ethtool-copy.h
  2009-04-30 12:33 [PATCH 1/5] ethtool: Update ethtool-copy.h Ben Hutchings
@ 2009-04-30 12:35 ` Ben Hutchings
  2009-04-30 12:36 ` [PATCH 1/5] ethtool: Remove support for RX hashing by port Ben Hutchings
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2009-04-30 12:35 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

Sorry, this should be the second patch not the first.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/5] ethtool: Remove support for RX hashing by port
  2009-04-30 12:33 [PATCH 1/5] ethtool: Update ethtool-copy.h Ben Hutchings
  2009-04-30 12:35 ` Ben Hutchings
@ 2009-04-30 12:36 ` Ben Hutchings
  2009-04-30 12:37 ` [PATCH 3/5] ethtool: Decode PORT_OTHER Ben Hutchings
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2009-04-30 12:36 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

The kernel-side support for this was removed by:

commit 59089d8d162ddcb5c434672e915331964d38a754
Author: Santwona Behera <santwona.behera@sun.com>
Date:   Fri Feb 20 00:58:13 2009 -0800

    ethtool: Add RX pkt classification interface

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
 ethtool.8 |    3 ---
 ethtool.c |    8 +-------
 2 files changed, 1 insertions(+), 10 deletions(-)

diff --git a/ethtool.8 b/ethtool.8
index 178f6ea..7a6f52b 100644
--- a/ethtool.8
+++ b/ethtool.8
@@ -473,9 +473,6 @@ Configures the hash options for the specified network traffic type.
 .RS
 .PD 0
 .TP 3
-.B p
-Hash on the device port number on which the packet was received.
-.TP 3
 .B m
 Hash on the Layer 2 destination address of the rx packet.
 .TP 3
diff --git a/ethtool.c b/ethtool.c
index 43ec2bf..5c45b2d 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -191,7 +191,7 @@ static struct option {
     { "-N", "--config-nfc", MODE_SNFC, "Configure Rx network flow "
 		"classification options",
 		"		[ rx-flow-hash tcp4|udp4|ah4|sctp4|"
-		"tcp6|udp6|ah6|sctp6 p|m|v|t|s|d|f|n|r... ]\n" },
+		"tcp6|udp6|ah6|sctp6 m|v|t|s|d|f|n|r... ]\n" },
     { "-h", "--help", MODE_HELP, "Show this help" },
     {}
 };
@@ -1090,9 +1090,6 @@ static int parse_rxfhashopts(char *optstr, u32 *data)
 	*data = 0;
 	while (*optstr) {
 		switch (*optstr) {
-			case 'p':
-				*data |= RXH_DEV_PORT;
-				break;
 			case 'm':
 				*data |= RXH_L2DA;
 				break;
@@ -1132,9 +1129,6 @@ static char *unparse_rxfhashopts(u64 opts)
 	memset(buf, 0, sizeof(buf));
 
 	if (opts) {
-		if (opts & RXH_DEV_PORT) {
-			strcat(buf, "Dev port\n");
-		}
 		if (opts & RXH_L2DA) {
 			strcat(buf, "L2DA\n");
 		}

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/5] ethtool: Decode PORT_OTHER
  2009-04-30 12:33 [PATCH 1/5] ethtool: Update ethtool-copy.h Ben Hutchings
  2009-04-30 12:35 ` Ben Hutchings
  2009-04-30 12:36 ` [PATCH 1/5] ethtool: Remove support for RX hashing by port Ben Hutchings
@ 2009-04-30 12:37 ` Ben Hutchings
  2009-04-30 12:37 ` [PATCH 4/5] ethtool: Report link partner advertising Ben Hutchings
  2009-04-30 12:38 ` [PATCH 5/5] ethtool: Report pause auto-negotiation flags Ben Hutchings
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2009-04-30 12:37 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
 ethtool.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/ethtool.c b/ethtool.c
index 5c45b2d..08165eb 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -941,6 +941,9 @@ static int dump_ecmd(struct ethtool_cmd *ep)
 	case PORT_FIBRE:
 		fprintf(stdout, "FIBRE\n");
 		break;
+	case PORT_OTHER:
+		fprintf(stdout, "Other\n");
+		break;
 	default:
 		fprintf(stdout, "Unknown! (%i)\n", ep->port);
 		break;

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/5] ethtool: Report link partner advertising
  2009-04-30 12:33 [PATCH 1/5] ethtool: Update ethtool-copy.h Ben Hutchings
                   ` (2 preceding siblings ...)
  2009-04-30 12:37 ` [PATCH 3/5] ethtool: Decode PORT_OTHER Ben Hutchings
@ 2009-04-30 12:37 ` Ben Hutchings
  2009-04-30 12:38 ` [PATCH 5/5] ethtool: Report pause auto-negotiation flags Ben Hutchings
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2009-04-30 12:37 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
 ethtool.c |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/ethtool.c b/ethtool.c
index 08165eb..0d188af 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -839,12 +839,13 @@ static void dump_supported(struct ethtool_cmd *ep)
 		fprintf(stdout, "No\n");
 }
 
-static void dump_advertised(struct ethtool_cmd *ep)
+static void dump_advertised(struct ethtool_cmd *ep,
+			    const char *prefix, u_int32_t mask)
 {
-	u_int32_t mask = ep->advertising;
+	int indent = strlen(prefix) + 14;
 	int did1;
 
-	fprintf(stdout, "	Advertised link modes:  ");
+	fprintf(stdout, "	%s link modes:  ", prefix);
 	did1 = 0;
 	if (mask & ADVERTISED_10baseT_Half) {
 		did1++; fprintf(stdout, "10baseT/Half ");
@@ -854,7 +855,7 @@ static void dump_advertised(struct ethtool_cmd *ep)
 	}
 	if (did1 && (mask & (ADVERTISED_100baseT_Half|ADVERTISED_100baseT_Full))) {
 		fprintf(stdout, "\n");
-		fprintf(stdout, "	                        ");
+		fprintf(stdout, "	%*s", indent, "");
 	}
 	if (mask & ADVERTISED_100baseT_Half) {
 		did1++; fprintf(stdout, "100baseT/Half ");
@@ -864,7 +865,7 @@ static void dump_advertised(struct ethtool_cmd *ep)
 	}
 	if (did1 && (mask & (ADVERTISED_1000baseT_Half|ADVERTISED_1000baseT_Full))) {
 		fprintf(stdout, "\n");
-		fprintf(stdout, "	                        ");
+		fprintf(stdout, "	%*s", indent, "");
 	}
 	if (mask & ADVERTISED_1000baseT_Half) {
 		did1++; fprintf(stdout, "1000baseT/Half ");
@@ -874,14 +875,14 @@ static void dump_advertised(struct ethtool_cmd *ep)
 	}
 	if (did1 && (mask & ADVERTISED_2500baseX_Full)) {
 		fprintf(stdout, "\n");
-		fprintf(stdout, "	                        ");
+		fprintf(stdout, "	%*s", indent, "");
 	}
 	if (mask & ADVERTISED_2500baseX_Full) {
 		did1++; fprintf(stdout, "2500baseX/Full ");
 	}
 	if (did1 && (mask & ADVERTISED_10000baseT_Full)) {
 		fprintf(stdout, "\n");
-		fprintf(stdout, "	                        ");
+		fprintf(stdout, "	%*s", indent, "");
 	}
 	if (mask & ADVERTISED_10000baseT_Full) {
 		did1++; fprintf(stdout, "10000baseT/Full ");
@@ -890,7 +891,7 @@ static void dump_advertised(struct ethtool_cmd *ep)
 		 fprintf(stdout, "Not reported");
 	fprintf(stdout, "\n");
 
-	fprintf(stdout, "	Advertised auto-negotiation: ");
+	fprintf(stdout, "	%s auto-negotiation: ", prefix);
 	if (mask & ADVERTISED_Autoneg)
 		fprintf(stdout, "Yes\n");
 	else
@@ -902,7 +903,8 @@ static int dump_ecmd(struct ethtool_cmd *ep)
 	u32 speed;
 
 	dump_supported(ep);
-	dump_advertised(ep);
+	dump_advertised(ep, "Advertised", ep->advertising);
+	dump_advertised(ep, "Link partner advertised", ep->lp_advertising);
 
 	fprintf(stdout, "	Speed: ");
 	speed = ethtool_cmd_speed(ep);

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 5/5] ethtool: Report pause auto-negotiation flags
  2009-04-30 12:33 [PATCH 1/5] ethtool: Update ethtool-copy.h Ben Hutchings
                   ` (3 preceding siblings ...)
  2009-04-30 12:37 ` [PATCH 4/5] ethtool: Report link partner advertising Ben Hutchings
@ 2009-04-30 12:38 ` Ben Hutchings
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2009-04-30 12:38 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
 ethtool.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/ethtool.c b/ethtool.c
index 0d188af..c40603c 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -891,6 +891,19 @@ static void dump_advertised(struct ethtool_cmd *ep,
 		 fprintf(stdout, "Not reported");
 	fprintf(stdout, "\n");
 
+	fprintf(stdout, "	%s pause frame use: ", prefix);
+	if (mask & ADVERTISED_Pause) {
+		fprintf(stdout, "Symmetric");
+		if (mask & ADVERTISED_Asym_Pause)
+			fprintf(stdout, " Receive-only");
+		fprintf(stdout, "\n");
+	} else {
+		if (mask & ADVERTISED_Asym_Pause)
+			fprintf(stdout, "Transmit-only\n");
+		else
+			fprintf(stdout, "No\n");
+	}
+
 	fprintf(stdout, "	%s auto-negotiation: ", prefix);
 	if (mask & ADVERTISED_Autoneg)
 		fprintf(stdout, "Yes\n");

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-04-30 12:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-30 12:33 [PATCH 1/5] ethtool: Update ethtool-copy.h Ben Hutchings
2009-04-30 12:35 ` Ben Hutchings
2009-04-30 12:36 ` [PATCH 1/5] ethtool: Remove support for RX hashing by port Ben Hutchings
2009-04-30 12:37 ` [PATCH 3/5] ethtool: Decode PORT_OTHER Ben Hutchings
2009-04-30 12:37 ` [PATCH 4/5] ethtool: Report link partner advertising Ben Hutchings
2009-04-30 12:38 ` [PATCH 5/5] ethtool: Report pause auto-negotiation flags Ben Hutchings

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.