108 lines
3.2 KiB
Diff
108 lines
3.2 KiB
Diff
From c5a527e74f6e8d3be11488a2336ab1103535b0cb Mon Sep 17 00:00:00 2001
|
|
From: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Date: Wed, 18 May 2022 14:36:08 +0800
|
|
Subject: [PATCH 208/283] net: ethtool: add VxLAN to the NFC API
|
|
|
|
driver inclusion
|
|
category: feature
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EN49
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
To support for steering VxLAN flows using the ethtool NFC interface, this
|
|
patch adds flow specifications for vxlan4(VxLAN with inner IPv4) and vxlan6
|
|
(VxLAN with inner IPv6).
|
|
|
|
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Signed-off-by: Jiantao Xiao <xiaojiantao1@h-partners.com>
|
|
Signed-off-by: Xiaodong Li <lixiaodong67@huawei.com>
|
|
---
|
|
include/uapi/linux/ethtool.h | 50 ++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 50 insertions(+)
|
|
|
|
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
|
|
index e57b68fad155..da4258a5f8c2 100644
|
|
--- a/include/uapi/linux/ethtool.h
|
|
+++ b/include/uapi/linux/ethtool.h
|
|
@@ -850,6 +850,28 @@ struct ethtool_usrip4_spec {
|
|
__u8 proto;
|
|
};
|
|
|
|
+/**
|
|
+ * struct ethtool_vxlan4_spec - general flow specification for VxLAN IPv4
|
|
+ * @vni: VxLAN network identifier
|
|
+ * @dst: Inner destination eth addr
|
|
+ * @src: Inner source eth addr
|
|
+ * @eth_type: Inner ethernet type
|
|
+ * @tos: Inner type-of-service
|
|
+ * @l4_proto: Inner transport protocol number
|
|
+ * @ip4src: Inner source host
|
|
+ * @ip4dst: Inner destination host
|
|
+ */
|
|
+struct ethtool_vxlan4_spec {
|
|
+ __be32 vni;
|
|
+ __u8 dst[ETH_ALEN];
|
|
+ __u8 src[ETH_ALEN];
|
|
+ __be16 eth_type;
|
|
+ __u8 tos;
|
|
+ __u8 l4_proto;
|
|
+ __be32 ip4src;
|
|
+ __be32 ip4dst;
|
|
+};
|
|
+
|
|
/**
|
|
* struct ethtool_tcpip6_spec - flow specification for TCP/IPv6 etc.
|
|
* @ip6src: Source host
|
|
@@ -900,6 +922,28 @@ struct ethtool_usrip6_spec {
|
|
__u8 l4_proto;
|
|
};
|
|
|
|
+/**
|
|
+ * struct ethtool_vxlan6_spec - general flow specification for VxLAN IPv6
|
|
+ * @vni: VxLAN network identifier
|
|
+ * @dst: Inner destination eth addr
|
|
+ * @src: Inner source eth addr
|
|
+ * @eth_type: Inner ethernet type
|
|
+ * @tclass: Inner traffic Class
|
|
+ * @l4_proto: Inner transport protocol number
|
|
+ * @ip6src: Inner source host
|
|
+ * @ip6dst: Inner destination host
|
|
+ */
|
|
+struct ethtool_vxlan6_spec {
|
|
+ __be32 vni;
|
|
+ __u8 dst[ETH_ALEN];
|
|
+ __u8 src[ETH_ALEN];
|
|
+ __be16 eth_type;
|
|
+ __u8 tclass;
|
|
+ __u8 l4_proto;
|
|
+ __be32 ip6src[4];
|
|
+ __be32 ip6dst[4];
|
|
+};
|
|
+
|
|
union ethtool_flow_union {
|
|
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
|
struct ethtool_tcpip4_spec udp_ip4_spec;
|
|
@@ -915,6 +959,10 @@ union ethtool_flow_union {
|
|
struct ethtool_usrip6_spec usr_ip6_spec;
|
|
struct ethhdr ether_spec;
|
|
__u8 hdata[52];
|
|
+#ifndef __GENKSYMS__
|
|
+ struct ethtool_vxlan4_spec vxlan_ip4_spec;
|
|
+ struct ethtool_vxlan6_spec vxlan_ip6_spec;
|
|
+#endif
|
|
};
|
|
|
|
/**
|
|
@@ -1774,6 +1822,8 @@ static inline int ethtool_validate_duplex(__u8 duplex)
|
|
#define IPV4_FLOW 0x10 /* hash only */
|
|
#define IPV6_FLOW 0x11 /* hash only */
|
|
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|
|
+#define VXLAN_V4_FLOW 0x43 /* spec only (vxlan_ip4_spec) */
|
|
+#define VXLAN_V6_FLOW 0x44 /* spec only (vxlan_ip6_spec) */
|
|
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
|
|
#define FLOW_EXT 0x80000000
|
|
#define FLOW_MAC_EXT 0x40000000
|
|
--
|
|
2.34.1
|
|
|