[v1,2/3] net/ice: fix outer src mac as FDIR input field

Message ID 20220622030032.474770-3-zhirun.yan@intel.com (mailing list archive)
State Changes Requested, archived
Delegated to: Qi Zhang
Headers
Series fix tunnel support for VXLAN in FDIR |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Yan, Zhirun June 22, 2022, 3 a.m. UTC
  Add src mac in input set map. If not add this, the src mac can not
be parsed and this field will be ignored.
Add outer mac as extracted key input to avoid rule conflict for VXLAN
rule when outer src mac change only.

Signed-off-by: Zhirun Yan <zhirun.yan@intel.com>
---
 drivers/net/ice/ice_ethdev.h      | 3 +++
 drivers/net/ice/ice_fdir_filter.c | 3 +++
 2 files changed, 6 insertions(+)
  

Comments

Qi Zhang April 26, 2023, 8:15 a.m. UTC | #1
> -----Original Message-----
> From: Yan, Zhirun <zhirun.yan@intel.com>
> Sent: Wednesday, June 22, 2022 11:01 AM
> To: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>
> Cc: Wang, Xiao W <xiao.w.wang@intel.com>; Yan, Zhirun
> <zhirun.yan@intel.com>
> Subject: [PATCH v1 2/3] net/ice: fix outer src mac as FDIR input field
> 
> Add src mac in input set map. If not add this, the src mac can not be parsed
> and this field will be ignored.
> Add outer mac as extracted key input to avoid rule conflict for VXLAN rule
> when outer src mac change only.

Looks like you add some new feature to support outer mac match, so it is not necessary be a fix right?

> 
> Signed-off-by: Zhirun Yan <zhirun.yan@intel.com>
> ---
>  drivers/net/ice/ice_ethdev.h      | 3 +++
>  drivers/net/ice/ice_fdir_filter.c | 3 +++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h index
> ec23dae665..791e8566ea 100644
> --- a/drivers/net/ice/ice_ethdev.h
> +++ b/drivers/net/ice/ice_ethdev.h
> @@ -366,6 +366,9 @@ struct ice_fdir_fltr_pattern {
>  	struct ice_fdir_extra ext_data;
>  	struct ice_fdir_extra ext_mask;
> 
> +	struct ice_fdir_extra ext_data_outer;
> +	struct ice_fdir_extra ext_mask_outer;
> +
>  	enum ice_fdir_tunnel_type tunnel_type;  };
> 
> diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
> index 7914ba9407..4b0b6b5b23 100644
> --- a/drivers/net/ice/ice_fdir_filter.c
> +++ b/drivers/net/ice/ice_fdir_filter.c
> @@ -919,6 +919,7 @@ ice_fdir_input_set_parse(uint64_t inset, enum
> ice_flow_field *field)
>  		enum ice_flow_field fld;
>  	};
>  	static const struct ice_inset_map ice_inset_map[] = {
> +		{ICE_INSET_SMAC, ICE_FLOW_FIELD_IDX_ETH_SA},
>  		{ICE_INSET_DMAC, ICE_FLOW_FIELD_IDX_ETH_DA},
>  		{ICE_INSET_ETHERTYPE, ICE_FLOW_FIELD_IDX_ETH_TYPE},
>  		{ICE_INSET_IPV4_SRC, ICE_FLOW_FIELD_IDX_IPV4_SA}, @@
> -1247,6 +1248,8 @@ ice_fdir_extract_fltr_key(struct ice_fdir_fltr_pattern
> *key,
>  	rte_memcpy(&key->ext_data, &input->ext_data, sizeof(key-
> >ext_data));
>  	rte_memcpy(&key->ext_mask, &input->ext_mask, sizeof(key-
> >ext_mask));
> 
> +	rte_memcpy(&key->ext_data_outer, &input->ext_data_outer,
> sizeof(key->ext_data_outer));
> +	rte_memcpy(&key->ext_mask_outer, &input->ext_mask_outer,
> +sizeof(key->ext_mask_outer));
>  	rte_memcpy(&key->gtpu_data, &input->gtpu_data, sizeof(key-
> >gtpu_data));
>  	rte_memcpy(&key->gtpu_mask, &input->gtpu_mask, sizeof(key-
> >gtpu_mask));
> 
> --
> 2.25.1
  

Patch

diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index ec23dae665..791e8566ea 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -366,6 +366,9 @@  struct ice_fdir_fltr_pattern {
 	struct ice_fdir_extra ext_data;
 	struct ice_fdir_extra ext_mask;
 
+	struct ice_fdir_extra ext_data_outer;
+	struct ice_fdir_extra ext_mask_outer;
+
 	enum ice_fdir_tunnel_type tunnel_type;
 };
 
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 7914ba9407..4b0b6b5b23 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -919,6 +919,7 @@  ice_fdir_input_set_parse(uint64_t inset, enum ice_flow_field *field)
 		enum ice_flow_field fld;
 	};
 	static const struct ice_inset_map ice_inset_map[] = {
+		{ICE_INSET_SMAC, ICE_FLOW_FIELD_IDX_ETH_SA},
 		{ICE_INSET_DMAC, ICE_FLOW_FIELD_IDX_ETH_DA},
 		{ICE_INSET_ETHERTYPE, ICE_FLOW_FIELD_IDX_ETH_TYPE},
 		{ICE_INSET_IPV4_SRC, ICE_FLOW_FIELD_IDX_IPV4_SA},
@@ -1247,6 +1248,8 @@  ice_fdir_extract_fltr_key(struct ice_fdir_fltr_pattern *key,
 	rte_memcpy(&key->ext_data, &input->ext_data, sizeof(key->ext_data));
 	rte_memcpy(&key->ext_mask, &input->ext_mask, sizeof(key->ext_mask));
 
+	rte_memcpy(&key->ext_data_outer, &input->ext_data_outer, sizeof(key->ext_data_outer));
+	rte_memcpy(&key->ext_mask_outer, &input->ext_mask_outer, sizeof(key->ext_mask_outer));
 	rte_memcpy(&key->gtpu_data, &input->gtpu_data, sizeof(key->gtpu_data));
 	rte_memcpy(&key->gtpu_mask, &input->gtpu_mask, sizeof(key->gtpu_mask));