The shared attribute was removed from the `COUNT` action, with indirect
actions replacing it. ICE still carries shared-counter handling, but
its FDIR path always allocates a dedicated counter.

Remove the unreachable shared-counter lookup and reference counting,
along with the saved action ID used only for sharing.

Signed-off-by: Anatoly Burakov <[email protected]>
---

Notes:
    The API was removed in 92ef4b8f1688 ("ethdev: remove deprecated shared 
counter attribute")
    
    However, it may not be reasonable to pin a Fixline on that commit because 
that
    would imply that it *should have* updated ice driver's plubmbing to not 
support
    shared counters any more, which I do not believe is reasonable. I'm leaving
    this note for posterity and in case it is determined that the Fixline is 
needed
    after all.

 drivers/net/intel/ice/ice_ethdev.h      |  4 --
 drivers/net/intel/ice/ice_fdir_filter.c | 61 +++----------------------
 2 files changed, 7 insertions(+), 58 deletions(-)

diff --git a/drivers/net/intel/ice/ice_ethdev.h 
b/drivers/net/intel/ice/ice_ethdev.h
index 08c2b61519..afef59d6bd 100644
--- a/drivers/net/intel/ice/ice_ethdev.h
+++ b/drivers/net/intel/ice/ice_ethdev.h
@@ -389,7 +389,6 @@ struct ice_fdir_filter_conf {
        enum ice_fdir_tunnel_type tunnel_type;
 
        struct ice_fdir_counter *counter; /* flow specific counter context */
-       struct rte_flow_action_count act_count;
 
        uint64_t input_set_o; /* used for non-tunnel or tunnel outer fields */
        uint64_t input_set_i; /* only for tunnel inner fields */
@@ -431,9 +430,6 @@ struct ice_fdir_counter_pool;
 struct ice_fdir_counter {
        TAILQ_ENTRY(ice_fdir_counter) next;
        struct ice_fdir_counter_pool *pool;
-       uint8_t shared;
-       uint32_t ref_cnt;
-       uint32_t id;
        uint64_t hits;
        uint64_t bytes;
        uint32_t hw_index;
diff --git a/drivers/net/intel/ice/ice_fdir_filter.c 
b/drivers/net/intel/ice/ice_fdir_filter.c
index 517c32cecf..f4b0d01e35 100644
--- a/drivers/net/intel/ice/ice_fdir_filter.c
+++ b/drivers/net/intel/ice/ice_fdir_filter.c
@@ -329,30 +329,7 @@ ice_fdir_counter_release(struct ice_pf *pf)
 }
 
 static struct ice_fdir_counter *
-ice_fdir_counter_shared_search(struct ice_fdir_counter_pool_container
-                                       *container,
-                              uint32_t id)
-{
-       struct ice_fdir_counter_pool *pool;
-       struct ice_fdir_counter *counter;
-       int i;
-
-       TAILQ_FOREACH(pool, &container->pool_list, next) {
-               for (i = 0; i < ICE_FDIR_COUNTERS_PER_BLOCK; i++) {
-                       counter = &pool->counters[i];
-
-                       if (counter->shared &&
-                           counter->ref_cnt &&
-                           counter->id == id)
-                               return counter;
-               }
-       }
-
-       return NULL;
-}
-
-static struct ice_fdir_counter *
-ice_fdir_counter_alloc(struct ice_pf *pf, uint32_t shared, uint32_t id)
+ice_fdir_counter_alloc(struct ice_pf *pf)
 {
        struct ice_hw *hw = ICE_PF_TO_HW(pf);
        struct ice_fdir_info *fdir_info = &pf->fdir;
@@ -361,18 +338,6 @@ ice_fdir_counter_alloc(struct ice_pf *pf, uint32_t shared, 
uint32_t id)
        struct ice_fdir_counter_pool *pool = NULL;
        struct ice_fdir_counter *counter_free = NULL;
 
-       if (shared) {
-               counter_free = ice_fdir_counter_shared_search(container, id);
-               if (counter_free) {
-                       if (counter_free->ref_cnt + 1 == 0) {
-                               rte_errno = E2BIG;
-                               return NULL;
-                       }
-                       counter_free->ref_cnt++;
-                       return counter_free;
-               }
-       }
-
        TAILQ_FOREACH(pool, &container->pool_list, next) {
                counter_free = TAILQ_FIRST(&pool->counter_list);
                if (counter_free)
@@ -385,9 +350,6 @@ ice_fdir_counter_alloc(struct ice_pf *pf, uint32_t shared, 
uint32_t id)
                return NULL;
        }
 
-       counter_free->shared = shared;
-       counter_free->id = id;
-       counter_free->ref_cnt = 1;
        counter_free->pool = pool;
 
        /* reset statistic counter value */
@@ -404,17 +366,14 @@ ice_fdir_counter_alloc(struct ice_pf *pf, uint32_t 
shared, uint32_t id)
 }
 
 static void
-ice_fdir_counter_free(__rte_unused struct ice_pf *pf,
-                     struct ice_fdir_counter *counter)
+ice_fdir_counter_free(struct ice_fdir_counter *counter)
 {
        if (!counter)
                return;
 
-       if (--counter->ref_cnt == 0) {
-               struct ice_fdir_counter_pool *pool = counter->pool;
+       struct ice_fdir_counter_pool *pool = counter->pool;
 
-               TAILQ_INSERT_TAIL(&pool->counter_list, counter, next);
-       }
+       TAILQ_INSERT_TAIL(&pool->counter_list, counter, next);
 }
 
 static int
@@ -1642,9 +1601,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
 
        /* alloc counter for FDIR */
        if (filter->input.cnt_ena) {
-               struct rte_flow_action_count *act_count = &filter->act_count;
-
-               filter->counter = ice_fdir_counter_alloc(pf, 0, act_count->id);
+               filter->counter = ice_fdir_counter_alloc(pf);
                if (!filter->counter) {
                        rte_flow_error_set(error, EINVAL,
                                        RTE_FLOW_ERROR_TYPE_ACTION, NULL,
@@ -1681,7 +1638,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
 
 free_counter:
        if (filter->counter) {
-               ice_fdir_counter_free(pf, filter->counter);
+               ice_fdir_counter_free(filter->counter);
                filter->counter = NULL;
        }
 
@@ -1748,7 +1705,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
        is_tun = ice_fdir_is_tunnel_profile(filter->tunnel_type);
 
        if (filter->counter) {
-               ice_fdir_counter_free(pf, filter->counter);
+               ice_fdir_counter_free(filter->counter);
                filter->counter = NULL;
        }
 
@@ -2870,11 +2827,7 @@ ice_fdir_parse_action(struct ice_adapter *ad,
                }
                case RTE_FLOW_ACTION_TYPE_COUNT:
                {
-                       const struct rte_flow_action_count *act_count = 
act->conf;
-
                        filter->input.cnt_ena = ICE_FXD_FLTR_QW0_STAT_ENA_PKTS;
-                       rte_memcpy(&filter->act_count, act_count,
-                                               sizeof(filter->act_count));
                        break;
                }
                default:
-- 
2.52.0

Reply via email to