[dpdk-dev] [PATCH 3/5] net/bnxt: fix protocol size for VXLAN encap copy

Ajit Khaparde ajit.khaparde at broadcom.com
Wed Nov 18 01:34:35 CET 2020


On Mon, Nov 16, 2020 at 8:13 AM Ferruh Yigit <ferruh.yigit at intel.com> wrote:

> On 11/16/2020 7:55 AM, Xiaoyu Min wrote:
> > From: Xiaoyu Min <jackmin at 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 <jackmin at 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.


More information about the dev mailing list