|
@@ -748,6 +748,56 @@ struct ethtool_usrip4_spec {
|
|
|
__u8 proto;
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * struct ethtool_tcpip6_spec - flow specification for TCP/IPv6 etc.
|
|
|
+ * @ip6src: Source host
|
|
|
+ * @ip6dst: Destination host
|
|
|
+ * @psrc: Source port
|
|
|
+ * @pdst: Destination port
|
|
|
+ * @tclass: Traffic Class
|
|
|
+ *
|
|
|
+ * This can be used to specify a TCP/IPv6, UDP/IPv6 or SCTP/IPv6 flow.
|
|
|
+ */
|
|
|
+struct ethtool_tcpip6_spec {
|
|
|
+ __be32 ip6src[4];
|
|
|
+ __be32 ip6dst[4];
|
|
|
+ __be16 psrc;
|
|
|
+ __be16 pdst;
|
|
|
+ __u8 tclass;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct ethtool_ah_espip6_spec - flow specification for IPsec/IPv6
|
|
|
+ * @ip6src: Source host
|
|
|
+ * @ip6dst: Destination host
|
|
|
+ * @spi: Security parameters index
|
|
|
+ * @tclass: Traffic Class
|
|
|
+ *
|
|
|
+ * This can be used to specify an IPsec transport or tunnel over IPv6.
|
|
|
+ */
|
|
|
+struct ethtool_ah_espip6_spec {
|
|
|
+ __be32 ip6src[4];
|
|
|
+ __be32 ip6dst[4];
|
|
|
+ __be32 spi;
|
|
|
+ __u8 tclass;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct ethtool_usrip6_spec - general flow specification for IPv6
|
|
|
+ * @ip6src: Source host
|
|
|
+ * @ip6dst: Destination host
|
|
|
+ * @l4_4_bytes: First 4 bytes of transport (layer 4) header
|
|
|
+ * @tclass: Traffic Class
|
|
|
+ * @l4_proto: Transport protocol number (nexthdr after any Extension Headers)
|
|
|
+ */
|
|
|
+struct ethtool_usrip6_spec {
|
|
|
+ __be32 ip6src[4];
|
|
|
+ __be32 ip6dst[4];
|
|
|
+ __be32 l4_4_bytes;
|
|
|
+ __u8 tclass;
|
|
|
+ __u8 l4_proto;
|
|
|
+};
|
|
|
+
|
|
|
union ethtool_flow_union {
|
|
|
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
|
|
struct ethtool_tcpip4_spec udp_ip4_spec;
|
|
@@ -755,6 +805,12 @@ union ethtool_flow_union {
|
|
|
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
|
|
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
|
|
struct ethtool_usrip4_spec usr_ip4_spec;
|
|
|
+ struct ethtool_tcpip6_spec tcp_ip6_spec;
|
|
|
+ struct ethtool_tcpip6_spec udp_ip6_spec;
|
|
|
+ struct ethtool_tcpip6_spec sctp_ip6_spec;
|
|
|
+ struct ethtool_ah_espip6_spec ah_ip6_spec;
|
|
|
+ struct ethtool_ah_espip6_spec esp_ip6_spec;
|
|
|
+ struct ethtool_usrip6_spec usr_ip6_spec;
|
|
|
struct ethhdr ether_spec;
|
|
|
__u8 hdata[52];
|
|
|
};
|
|
@@ -1401,15 +1457,17 @@ static inline int ethtool_validate_duplex(__u8 duplex)
|
|
|
#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */
|
|
|
#define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */
|
|
|
#define AH_ESP_V4_FLOW 0x04 /* hash only */
|
|
|
-#define TCP_V6_FLOW 0x05 /* hash only */
|
|
|
-#define UDP_V6_FLOW 0x06 /* hash only */
|
|
|
-#define SCTP_V6_FLOW 0x07 /* hash only */
|
|
|
+#define TCP_V6_FLOW 0x05 /* hash or spec (tcp_ip6_spec; nfc only) */
|
|
|
+#define UDP_V6_FLOW 0x06 /* hash or spec (udp_ip6_spec; nfc only) */
|
|
|
+#define SCTP_V6_FLOW 0x07 /* hash or spec (sctp_ip6_spec; nfc only) */
|
|
|
#define AH_ESP_V6_FLOW 0x08 /* hash only */
|
|
|
#define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */
|
|
|
#define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */
|
|
|
-#define AH_V6_FLOW 0x0b /* hash only */
|
|
|
-#define ESP_V6_FLOW 0x0c /* hash only */
|
|
|
-#define IP_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */
|
|
|
+#define AH_V6_FLOW 0x0b /* hash or spec (ah_ip6_spec; nfc only) */
|
|
|
+#define ESP_V6_FLOW 0x0c /* hash or spec (esp_ip6_spec; nfc only) */
|
|
|
+#define IPV4_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */
|
|
|
+#define IP_USER_FLOW IPV4_USER_FLOW
|
|
|
+#define IPV6_USER_FLOW 0x0e /* spec only (usr_ip6_spec; nfc only) */
|
|
|
#define IPV4_FLOW 0x10 /* hash only */
|
|
|
#define IPV6_FLOW 0x11 /* hash only */
|
|
|
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|