On Fri, 2016-02-05 at 11:16 +0000, Edward Cree wrote:
> Signed-off-by: Edward Cree <ec...@solarflare.com>

Reviewed-by: Ben Hutchings <b...@decadent.org.uk>

> ---
>  include/uapi/linux/ethtool.h | 70 
> ++++++++++++++++++++++++++++++++++++++++----
>  1 file changed, 64 insertions(+), 6 deletions(-)
> 
> diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
> index 57fa390..7faaf36 100644
> --- a/include/uapi/linux/ethtool.h
> +++ b/include/uapi/linux/ethtool.h
> @@ -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];
>  };
> @@ -1367,15 +1423,17 @@ enum ethtool_sfeatures_retval_bits {
>  #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) */
> 
-- 
Ben Hutchings
It is a miracle that curiosity survives formal education. - Albert Einstein

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to