aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChenmin Sun <chenmin.sun@intel.com>2021-04-12 20:42:42 +0800
committerMatthew Smith <mgsmith@netgate.com>2021-04-12 20:19:18 +0000
commit7a016e87e473d28f87d4c0998d0682ead8642cf9 (patch)
treed9b33ca884f75182f920176fe8a361c97a9b229a /src
parent4b1bacffe34e56775d6abb1541dfcca17bd4e8ee (diff)
avf: avf flow bug fix
This patch fixes the below bugs in avf flow: 1. remove the VXLAN flow as it is not yet supported 2. fix a typo in IPv6 flow 3. fix the wrong type of the AH flows Also did some cleanup in this patch Type: fix Signed-off-by: Chenmin Sun <chenmin.sun@intel.com> Change-Id: I5eae131f1e89071364a41b7006a00e8425089a4f
Diffstat (limited to 'src')
-rw-r--r--src/plugins/avf/flow.c28
-rw-r--r--src/plugins/dpdk/device/flow.c1
2 files changed, 2 insertions, 27 deletions
diff --git a/src/plugins/avf/flow.c b/src/plugins/avf/flow.c
index 7a80da6910f..4e94c81354d 100644
--- a/src/plugins/avf/flow.c
+++ b/src/plugins/avf/flow.c
@@ -129,7 +129,7 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
struct avf_gtp_hdr gtp_spec = {}, gtp_mask = {};
struct avf_l2tpv3oip_hdr l2tpv3_spec = {}, l2tpv3_mask = {};
struct avf_esp_hdr esp_spec = {}, esp_mask = {};
- struct avf_esp_hdr ah_spec = {}, ah_mask = {};
+ struct avf_ah_hdr ah_spec = {}, ah_mask = {};
struct avf_flow_action_queue act_q = {};
struct avf_flow_action_mark act_msk = {};
@@ -181,9 +181,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &ip4_mask;
layer++;
- // memset (&ip4_spec, 0, sizeof (ip4_spec));
- // memset (&ip4_mask, 0, sizeof (ip4_mask));
-
if ((!ip4_ptr->src_addr.mask.as_u32) &&
(!ip4_ptr->dst_addr.mask.as_u32) && (!ip4_ptr->protocol.mask))
{
@@ -218,14 +215,11 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
vnet_flow_ip6_t *ip6_ptr = &f->ip6;
/* IPv6 Layer */
- avf_items[layer].type = VIRTCHNL_PROTO_HDR_IPV4;
+ avf_items[layer].type = VIRTCHNL_PROTO_HDR_IPV6;
avf_items[layer].spec = &ip6_spec;
avf_items[layer].mask = &ip6_mask;
layer++;
- // memset (&ip6_spec, 0, sizeof (ip6_spec));
- // memset (&ip6_mask, 0, sizeof (ip6_mask));
-
if ((ip6_address_is_zero (&ip6_ptr->src_addr.mask)) &&
(ip6_address_is_zero (&ip6_ptr->dst_addr.mask)) &&
(!ip6_ptr->protocol.mask))
@@ -271,9 +265,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &l2tpv3_mask;
layer++;
- // memset (&l2tpv3_spec, 0, sizeof (l2tpv3_spec));
- // memset (&l2tpv3_mask, 0, sizeof (l2tpv3_mask));
-
vnet_flow_ip4_l2tpv3oip_t *l2tph = &f->ip4_l2tpv3oip;
l2tpv3_spec.session_id = clib_host_to_net_u32 (l2tph->session_id);
l2tpv3_mask.session_id = ~0;
@@ -285,9 +276,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &esp_mask;
layer++;
- // memset (&esp_spec, 0, sizeof (esp_spec));
- // memset (&esp_mask, 0, sizeof (esp_mask));
-
vnet_flow_ip4_ipsec_esp_t *esph = &f->ip4_ipsec_esp;
esp_spec.spi = clib_host_to_net_u32 (esph->spi);
esp_mask.spi = ~0;
@@ -299,9 +287,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &ah_mask;
layer++;
- // memset (&ah_spec, 0, sizeof (ah_spec));
- // memset (&ah_mask, 0, sizeof (ah_mask));
-
vnet_flow_ip4_ipsec_ah_t *ah = &f->ip4_ipsec_ah;
ah_spec.spi = clib_host_to_net_u32 (ah->spi);
ah_mask.spi = ~0;
@@ -313,9 +298,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &tcp_mask;
layer++;
- // memset (&tcp_spec, 0, sizeof (tcp_spec));
- // memset (&tcp_mask, 0, sizeof (tcp_mask));
-
if (src_port_mask)
{
tcp_spec.src_port = clib_host_to_net_u16 (src_port);
@@ -334,9 +316,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &udp_mask;
layer++;
- // memset (&udp_spec, 0, sizeof (udp_spec));
- // memset (&udp_mask, 0, sizeof (udp_mask));
-
if (src_port_mask)
{
udp_spec.src_port = clib_host_to_net_u16 (src_port);
@@ -356,9 +335,6 @@ avf_flow_add (u32 dev_instance, vnet_flow_t *f, avf_flow_entry_t *fe)
avf_items[layer].mask = &gtp_mask;
layer++;
- // memset (&gtp_spec, 0, sizeof (gtp_spec));
- // memset (&gtp_mask, 0, sizeof (gtp_mask));
-
vnet_flow_ip4_gtpu_t *gu = &f->ip4_gtpu;
gtp_spec.teid = clib_host_to_net_u32 (gu->teid);
gtp_mask.teid = ~0;
diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c
index a090ec0e930..8daabc32bf8 100644
--- a/src/plugins/dpdk/device/flow.c
+++ b/src/plugins/dpdk/device/flow.c
@@ -638,7 +638,6 @@ dpdk_flow_ops_fn (vnet_main_t * vnm, vnet_flow_dev_op_t op, u32 dev_instance,
case VNET_FLOW_TYPE_IP6:
case VNET_FLOW_TYPE_IP4_N_TUPLE:
case VNET_FLOW_TYPE_IP6_N_TUPLE:
- case VNET_FLOW_TYPE_IP4_VXLAN:
case VNET_FLOW_TYPE_IP4_GTPC:
case VNET_FLOW_TYPE_IP4_GTPU:
case VNET_FLOW_TYPE_IP4_L2TPV3OIP: