On Mon, Nov 16, 2020 at 8:13 AM Ferruh Yigit <ferruh.yi...@intel.com> wrote:
> On 11/16/2020 7:55 AM, Xiaoyu Min wrote: > > 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 so should only copy 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> > > <...> > > > @@ -1726,7 +1727,7 @@ ulp_rte_vxlan_encap_act_handler(const struct > rte_flow_action *action_item, > > BNXT_TF_DBG(ERR, "vxlan encap does not have vni\n"); > > return BNXT_TF_RC_ERROR; > > } > > - vxlan_size = sizeof(struct rte_flow_item_vxlan); > > + vxlan_size = sizeof(struct rte_vxlan_hdr); > > /* copy the vxlan details */ > > memcpy(&vxlan_spec, item->spec, vxlan_size); > > vxlan_spec.flags = 0x08; > > > > 'vxlan_size' seems used both to copy rt_flow_item [1] and to header [2]. > Also > ''vxlan_size' is used to copy the 'vxlan_spec'. > > Since both "struct rte_flow_item_vxlan" & "struct rte_vxlan_hdr" size is > same, > this should work fine, but I guess it may be broken if sizes of those two > structures changes in the future. > > [1] > memcpy(&vxlan_spec, item->spec, vxlan_size); > > [2] > ulp_encap_buffer_copy(buff, (const uint8_t *)&vxlan_spec, > vxlan_size, ULP_BUFFER_ALIGN_8_BYTE); > Also, I feel rte_flow_item_vxlan is a control plane structure while rte_vlan_hdr is more for dataplane. It's better to keep them separate to allow refining them independently.