23/11/2020 08:54, Ori Kam: > From: Matan Azrad <ma...@nvidia.com> > > From: Thomas Monjalon > > > 16/11/2020 08:55, Xiaoyu Min: > > > > From: Xiaoyu Min <jack...@nvidia.com> > > > > > > > > The rte_flow_item_eth and rte_flow_item_vlan items are refined. > > > > The structs do not exactly represent the packet bits captured on the > > > > wire anymore. > > > > Should use real header instead of the whole struct. > > > > > > > > Replace the rte_flow_item_* with the existing corresponding rte_*_hdr. > > > > > > > > Fixes: 09315fc83861 ("ethdev: add VLAN attributes to ethernet and VLAN > > > > items") > > > > > > > > Signed-off-by: Xiaoyu Min <jack...@nvidia.com> > > > > --- > > > > drivers/net/mlx5/mlx5_flow.c | 12 ++++++------ > > > > drivers/net/mlx5/mlx5_flow.h | 4 ++-- > > > > 2 files changed, 8 insertions(+), 8 deletions(-) > > > > > > > > diff --git a/drivers/net/mlx5/mlx5_flow.c > > > > b/drivers/net/mlx5/mlx5_flow.c index 324349ed19..34b7a2f137 100644 > > > > --- a/drivers/net/mlx5/mlx5_flow.c > > > > +++ b/drivers/net/mlx5/mlx5_flow.c > > > > @@ -3655,8 +3655,8 @@ flow_check_hairpin_split(struct rte_eth_dev > > *dev, > > > > case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: > > > > raw_encap = actions->conf; > > > > if (raw_encap->size > > > > > - (sizeof(struct rte_flow_item_eth) + > > > > - sizeof(struct rte_flow_item_ipv4))) > > > > + (sizeof(struct rte_ether_hdr) + > > > > + sizeof(struct rte_ipv4_hdr))) > > > > split++; > > > > action_n++; > > > > break; > > > > @@ -4092,8 +4092,8 @@ flow_hairpin_split(struct rte_eth_dev *dev, > > > > case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: > > > > raw_encap = actions->conf; > > > > if (raw_encap->size > > > > > - (sizeof(struct rte_flow_item_eth) + > > > > - sizeof(struct rte_flow_item_ipv4))) { > > > > + (sizeof(struct rte_ether_hdr) + > > > > + sizeof(struct rte_ipv4_hdr))) { > > > > memcpy(actions_tx, actions, > > > > sizeof(struct rte_flow_action)); > > > > actions_tx++; @@ -4107,8 +4107,8 @@ > > > > flow_hairpin_split(struct rte_eth_dev *dev, > > > > case RTE_FLOW_ACTION_TYPE_RAW_DECAP: > > > > raw_decap = actions->conf; > > > > if (raw_decap->size < > > > > - (sizeof(struct rte_flow_item_eth) + > > > > - sizeof(struct rte_flow_item_ipv4))) { > > > > + (sizeof(struct rte_ether_hdr) + > > > > + sizeof(struct rte_ipv4_hdr))) { > > > > memcpy(actions_tx, actions, > > > > sizeof(struct rte_flow_action)); > > > > actions_tx++; diff --git > > > > a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index > > > > 5fac8672fc..3b28c48a1d 100644 > > > > --- a/drivers/net/mlx5/mlx5_flow.h > > > > +++ b/drivers/net/mlx5/mlx5_flow.h > > > > @@ -345,8 +345,8 @@ enum mlx5_feature_name { #define > > > > MLX5_GENEVE_OPT_LEN_0 14 #define MLX5_GENEVE_OPT_LEN_1 63 > > > > > > > > -#define MLX5_ENCAPSULATION_DECISION_SIZE (sizeof(struct > > > rte_flow_item_eth) + \ > > > > - sizeof(struct > > > > rte_flow_item_ipv4)) > > > > +#define MLX5_ENCAPSULATION_DECISION_SIZE (sizeof(struct > > > rte_ether_hdr) + \ > > > > + sizeof(struct rte_ipv4_hdr)) > > > > > > This constant should be used above in hairpin functions. > > > Will change while merging. > > > > +1 > > > > Why above the hairpin functions? This is correct for all encap decisions.
Other functions were already using this macro. Only hairpin functions were not using it. So I changed on apply.