MDCF instance does not support ACL, so disable it.

Signed-off-by: Steven Zou <steven....@intel.com>
Signed-off-by: Alvin Zhang <alvinx.zh...@intel.com>
Signed-off-by: Kevin Liu <kevinx....@intel.com>
---
 drivers/net/ice/ice_acl_filter.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c
index 8fe6f5aeb0..61bb016395 100644
--- a/drivers/net/ice/ice_acl_filter.c
+++ b/drivers/net/ice/ice_acl_filter.c
@@ -25,6 +25,7 @@
 #include "ice_ethdev.h"
 #include "ice_generic_flow.h"
 #include "base/ice_flow.h"
+#include "ice_dcf_ethdev.h"
 
 #define MAX_ACL_SLOTS_ID 2048
 
@@ -994,8 +995,11 @@ ice_acl_init(struct ice_adapter *ad)
        struct ice_pf *pf = &ad->pf;
        struct ice_hw *hw = ICE_PF_TO_HW(pf);
        struct ice_flow_parser *parser = &ice_acl_parser;
+       struct rte_eth_dev *eth_dev = 
&rte_eth_devices[ad->pf.dev_data->port_id];
+       struct ice_dcf_adapter *dcf_adapter = eth_dev->data->dev_private;
+       struct ice_dcf_hw *dcf_hw = &dcf_adapter->real_hw;
 
-       if (!ad->hw.dcf_enabled)
+       if (!ad->hw.dcf_enabled || dcf_hw->multi_inst)
                return 0;
 
        ret = ice_acl_prof_alloc(hw);
@@ -1041,8 +1045,11 @@ ice_acl_uninit(struct ice_adapter *ad)
        struct ice_pf *pf = &ad->pf;
        struct ice_hw *hw = ICE_PF_TO_HW(pf);
        struct ice_flow_parser *parser = &ice_acl_parser;
+       struct rte_eth_dev *eth_dev = 
&rte_eth_devices[ad->pf.dev_data->port_id];
+       struct ice_dcf_adapter *dcf_adapter = eth_dev->data->dev_private;
+       struct ice_dcf_hw *dcf_hw = &dcf_adapter->real_hw;
 
-       if (ad->hw.dcf_enabled) {
+       if (ad->hw.dcf_enabled && !dcf_hw->multi_inst) {
                ice_unregister_parser(parser, ad);
                ice_deinit_acl(pf);
                ice_acl_prof_free(hw);
-- 
2.33.1

Reply via email to