Rte_fdir_conf of rte_eth_conf should be initialized before
port initialization. It is a workaround solution when working
with Intel I40e.

Fixes: 4a3ef59a10c8 ("examples/flow_filtering: add simple demo of flow API")
Cc: sta...@dpdk.org

Signed-off-by: Rosen Xu <rosen...@intel.com>
Acked-by: Ori Kam <or...@mellanox.com>
Reviewed-by: Ferruh Yigit <ferruh.yi...@intel.com>

v4 updates:
===========
 - Fix typo and lack of punctuation.
 - Add why it is needed, and what are we waiting to remove the workaround.

v3 updates:
===========
 - Fix small comment of commit log and code comment

v2 updates:
===========
 - Take more test on I40e
 - Add comments
---
 examples/flow_filtering/main.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/examples/flow_filtering/main.c b/examples/flow_filtering/main.c
index f595034..ce91e8a 100644
--- a/examples/flow_filtering/main.c
+++ b/examples/flow_filtering/main.c
@@ -132,6 +132,22 @@
                                DEV_TX_OFFLOAD_SCTP_CKSUM  |
                                DEV_TX_OFFLOAD_TCP_TSO,
                },
+               /*
+                * Initialize fdir_conf of rte_eth_conf.
+                * Fdir is used in flow filtering for I40e,
+                * so rte_flow rules involve some fdir
+                * configurations. In long term it's better
+                * that drivers don't require any fdir
+                * configuration for rte_flow, but we need to
+                * get this workaround so that sample app can
+                * run on I40e.
+                */
+               .fdir_conf = {
+                       .mode = RTE_FDIR_MODE_PERFECT,
+                       .pballoc = RTE_FDIR_PBALLOC_64K,
+                       .status = RTE_FDIR_REPORT_STATUS,
+                       .drop_queue = 127,
+               },
        };
        struct rte_eth_txconf txq_conf;
        struct rte_eth_rxconf rxq_conf;
-- 
1.8.3.1

Reply via email to