From: Wei Zhao <wei.zhao1@intel.com>
To: dev@dpdk.org
Cc: qi.z.zhang@intel.com, qi.fu@intel.com, Wei Zhao <wei.zhao1@intel.com>
Subject: [dpdk-dev] [PATCH v2 2/3] net/ice/base: add support for L2TP on switch
Date: Mon, 20 Apr 2020 13:18:54 +0800 [thread overview]
Message-ID: <20200420051855.11126-3-wei.zhao1@intel.com> (raw)
In-Reply-To: <20200420051855.11126-1-wei.zhao1@intel.com>
Add dummy packet and tunnel type to support
L2TP on switch, now we can use session id as
input set for swicth rule.
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/base/ice_protocol_type.h | 2 +
drivers/net/ice/base/ice_switch.c | 76 ++++++++++++++++++++++++
drivers/net/ice/base/ice_switch.h | 1 +
3 files changed, 79 insertions(+)
diff --git a/drivers/net/ice/base/ice_protocol_type.h b/drivers/net/ice/base/ice_protocol_type.h
index 2ca7cd8ac..46cd77e68 100644
--- a/drivers/net/ice/base/ice_protocol_type.h
+++ b/drivers/net/ice/base/ice_protocol_type.h
@@ -72,6 +72,8 @@ enum ice_sw_tunnel_type {
ICE_SW_TUN_IPV6_AH,
ICE_SW_TUN_IPV4_NAT_T,
ICE_SW_TUN_IPV6_NAT_T,
+ ICE_SW_TUN_IPV4_L2TPV3,
+ ICE_SW_TUN_IPV6_L2TPV3,
ICE_SW_TUN_PROFID_IPV6_ESP,
ICE_SW_TUN_PROFID_IPV6_AH,
ICE_SW_TUN_PROFID_MAC_IPV6_L2TPV3,
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 1da438f5e..28924085e 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -760,6 +760,61 @@ static const u8 dummy_ipv6_nat_pkt[] = {
};
+static const struct ice_dummy_pkt_offsets dummy_ipv4_l2tpv3_packet_offsets[] = {
+ { ICE_MAC_OFOS, 0 },
+ { ICE_IPV4_OFOS, 14 },
+ { ICE_L2TPV3, 34 },
+ { ICE_PROTOCOL_LAST, 0 },
+};
+
+static const u8 dummy_ipv4_l2tpv3_pkt[] = {
+ 0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00,
+
+ 0x45, 0x00, 0x00, 0x20, /* ICE_IPV4_IL 14 */
+ 0x00, 0x00, 0x40, 0x00,
+ 0x40, 0x73, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, /* ICE_L2TPV3 34 */
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, /* 2 bytes for 4 bytes alignment */
+};
+
+static const struct ice_dummy_pkt_offsets dummy_ipv6_l2tpv3_packet_offsets[] = {
+ { ICE_MAC_OFOS, 0 },
+ { ICE_IPV6_OFOS, 14 },
+ { ICE_L2TPV3, 54 },
+ { ICE_PROTOCOL_LAST, 0 },
+};
+
+static const u8 dummy_ipv6_l2tpv3_pkt[] = {
+ 0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x86, 0xDD,
+
+ 0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_IL 14 */
+ 0x00, 0x0c, 0x73, 0x40,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, /* ICE_L2TPV3 54 */
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, /* 2 bytes for 4 bytes alignment */
+};
+
/* this is a recipe to profile association bitmap */
static ice_declare_bitmap(recipe_to_profile[ICE_MAX_NUM_RECIPES],
ICE_MAX_NUM_PROFILES);
@@ -5939,6 +5994,7 @@ ice_get_compat_fv_bitmap(struct ice_hw *hw, struct ice_adv_rule_info *rinfo,
ice_set_bit(ICE_PROFID_IPV6_AH, bm);
return;
case ICE_SW_TUN_PROFID_MAC_IPV6_L2TPV3:
+ case ICE_SW_TUN_IPV6_L2TPV3:
ice_set_bit(ICE_PROFID_MAC_IPV6_L2TPV3, bm);
return;
case ICE_SW_TUN_PROFID_IPV6_NAT_T:
@@ -5960,6 +6016,9 @@ ice_get_compat_fv_bitmap(struct ice_hw *hw, struct ice_adv_rule_info *rinfo,
case ICE_SW_TUN_IPV4_NAT_T:
ice_set_bit(ICE_PROFID_IPV4_NAT_T, bm);
return;
+ case ICE_SW_TUN_IPV4_L2TPV3:
+ ice_set_bit(ICE_PROFID_MAC_IPV4_L2TPV3, bm);
+ return;
case ICE_SW_TUN_AND_NON_TUN:
default:
prof_type = ICE_PROF_ALL;
@@ -6297,6 +6356,20 @@ ice_find_dummy_packet(struct ice_adv_lkup_elem *lkups, u16 lkups_cnt,
return;
}
+ if (tun_type == ICE_SW_TUN_IPV4_L2TPV3) {
+ *pkt = dummy_ipv4_l2tpv3_pkt;
+ *pkt_len = sizeof(dummy_ipv4_l2tpv3_pkt);
+ *offsets = dummy_ipv4_l2tpv3_packet_offsets;
+ return;
+ }
+
+ if (tun_type == ICE_SW_TUN_IPV6_L2TPV3) {
+ *pkt = dummy_ipv6_l2tpv3_pkt;
+ *pkt_len = sizeof(dummy_ipv6_l2tpv3_pkt);
+ *offsets = dummy_ipv6_l2tpv3_packet_offsets;
+ return;
+ }
+
if (tun_type == ICE_SW_TUN_GTP) {
*pkt = dummy_udp_gtp_packet;
*pkt_len = sizeof(dummy_udp_gtp_packet);
@@ -6495,6 +6568,9 @@ ice_fill_adv_dummy_packet(struct ice_adv_lkup_elem *lkups, u16 lkups_cnt,
case ICE_AH:
len = sizeof(struct ice_ah_hdr);
break;
+ case ICE_L2TPV3:
+ len = sizeof(struct ice_l2tpv3_sess_hdr);
+ break;
default:
return ICE_ERR_PARAM;
}
diff --git a/drivers/net/ice/base/ice_switch.h b/drivers/net/ice/base/ice_switch.h
index 765ed0945..8cbda4081 100644
--- a/drivers/net/ice/base/ice_switch.h
+++ b/drivers/net/ice/base/ice_switch.h
@@ -20,6 +20,7 @@
#define ICE_PROFID_IPV6_AH 74
#define ICE_PROFID_IPV4_NAT_T 75
#define ICE_PROFID_IPV6_NAT_T 76
+#define ICE_PROFID_MAC_IPV4_L2TPV3 77
#define ICE_PROFID_MAC_IPV6_L2TPV3 78
#define ICE_PROFID_IPV4_PFCP_NODE 79
#define ICE_PROFID_IPV4_PFCP_SESSION 80
--
2.19.1
next prev parent reply other threads:[~2020-04-20 5:41 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-17 8:26 [dpdk-dev] [PATCH 0/3] add support for L2TP AH ESP and NAT-T on switch Wei Zhao
2020-04-17 8:26 ` [dpdk-dev] [PATCH 1/3] net/ice/base: add support for " Wei Zhao
2020-04-17 8:26 ` [dpdk-dev] [PATCH 2/3] net/ice/base: add support for L2TP " Wei Zhao
2020-04-17 8:26 ` [dpdk-dev] [PATCH 3/3] net/ice: add flow support for AH ESP and L2TP Wei Zhao
2020-04-20 5:16 ` Zhang, Qi Z
2020-04-20 5:18 ` Zhao1, Wei
2020-04-20 5:18 ` [dpdk-dev] [PATCH v2 0/3] add support for L2TP AH ESP and NAT-T on switch Wei Zhao
2020-04-20 5:18 ` [dpdk-dev] [PATCH v2 1/3] net/ice/base: add support for " Wei Zhao
2020-04-20 5:18 ` Wei Zhao [this message]
2020-04-20 5:18 ` [dpdk-dev] [PATCH v2 3/3] net/ice: add flow support for AH ESP and L2TP Wei Zhao
2020-04-20 7:26 ` [dpdk-dev] [PATCH v2 0/3] add support for L2TP AH ESP and NAT-T on switch Zhang, Qi Z
2020-04-22 6:38 ` Ye Xiaolong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200420051855.11126-3-wei.zhao1@intel.com \
--to=wei.zhao1@intel.com \
--cc=dev@dpdk.org \
--cc=qi.fu@intel.com \
--cc=qi.z.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.