All of lore.kernel.org
 help / color / mirror / Atom feed
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 2/3] net/ice/base: add support for L2TP on switch
Date: Fri, 17 Apr 2020 16:26:16 +0800	[thread overview]
Message-ID: <20200417082617.33361-3-wei.zhao1@intel.com> (raw)
In-Reply-To: <20200417082617.33361-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


  parent reply	other threads:[~2020-04-17  8:48 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 ` Wei Zhao [this message]
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   ` [dpdk-dev] [PATCH v2 2/3] net/ice/base: add support for L2TP " Wei Zhao
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=20200417082617.33361-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.