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

Ferruh Yigit ferruh.yigit at intel.com
Mon Nov 16 17:12:53 CET 2020


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);


More information about the dev mailing list