* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).