[dpdk-dev] [PATCH v2] net/i40e: do not turn on flexible payload on driver init

Xing, Beilei beilei.xing at intel.com
Mon Jan 8 06:41:30 CET 2018



> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Kirill Rybalchenko
> Sent: Friday, January 5, 2018 1:45 AM
> To: dev at dpdk.org
> Cc: Rybalchenko, Kirill <kirill.rybalchenko at intel.com>; Chilikin, Andrey
> <andrey.chilikin at intel.com>; Xing, Beilei <beilei.xing at intel.com>; Wu,
> Jingjing <jingjing.wu at intel.com>
> Subject: [dpdk-dev] [PATCH v2] net/i40e: do not turn on flexible payload on
> driver init
> 
> Function i40e_GLQF_reg_init() overwrites global register for flexible payload,
> forcing extraction of first 16 bytes of
> L2/L3/L4 payload to the field vector even if flexible payload is not used by an
> application. Such unconditional turn on of flexible payload effectively
> disables ability to use outer IP Destination address for RSS/FDIR for tunnelled
> packets, as flexible payload overwrites outer IP destination address on the
> field vector.
> 
> Now flexible payload turned on only when flow director is enabled and
> configured.
> 
> v1:
> Global registers will be set only when payload is enabled.
> They will be reset if payload is disabled or on port reset (uninit).
> 
> v2:
> dev_init and dev_close disable flexible payload by default.
> Flexible payload enabled selectively, only if appropriate PIT is set up. The
> same done for FDIR and for rte_flow API.
> 
> Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko at intel.com>
> ---
>  drivers/net/i40e/i40e_ethdev.c | 29 ++++++++++++++++++-----------
> drivers/net/i40e/i40e_ethdev.h |  1 +
>  drivers/net/i40e/i40e_fdir.c   | 14 +++++++++++---
>  drivers/net/i40e/i40e_flow.c   |  9 ++++++++-
>  4 files changed, 38 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index 811cc9f..b136120 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -701,17 +701,6 @@ RTE_PMD_REGISTER_KMOD_DEP(net_i40e, "*
> igb_uio | uio_pci_generic | vfio-pci");  static inline void
> i40e_GLQF_reg_init(struct i40e_hw *hw)  {
>  	/*
> -	 * Force global configuration for flexible payload
> -	 * to the first 16 bytes of the corresponding L2/L3/L4 paylod.
> -	 * This should be removed from code once proper
> -	 * configuration API is added to avoid configuration conflicts
> -	 * between ports of the same device.
> -	 */
> -	I40E_WRITE_REG(hw, I40E_GLQF_ORT(33), 0x000000E0);
> -	I40E_WRITE_REG(hw, I40E_GLQF_ORT(34), 0x000000E3);
> -	I40E_WRITE_REG(hw, I40E_GLQF_ORT(35), 0x000000E6);
> -

Please also help to change the comment in eth_i40e_dev_init where i40e_GLQF_reg_init is involved, since this workaround is removed.

Apart from that,
Acked-by: Beilei Xing <beilei.xing at intel.com>


More information about the dev mailing list