ring: remove unnecessary forward declaration
[dpdk.git] / drivers / net / ice / base / ice_flow.c
index 03a324d..be819e0 100644 (file)
@@ -516,7 +516,7 @@ ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params,
        struct ice_flow_fld_info *flds;
        u16 cnt, ese_bits, i;
        s16 adj = 0;
-       u8 off;
+       u16 off;
 
        flds = params->prof->segs[seg].fields;
 
@@ -910,8 +910,11 @@ ice_flow_rem_entry_sync(struct ice_hw *hw, struct ice_flow_entry *entry)
        if (entry->entry)
                ice_free(hw, entry->entry);
 
-       if (entry->acts)
+       if (entry->acts) {
                ice_free(hw, entry->acts);
+               entry->acts = NULL;
+               entry->acts_cnt = 0;
+       }
 
        ice_free(hw, entry);
 
@@ -953,7 +956,10 @@ ice_flow_add_prof_sync(struct ice_hw *hw, enum ice_block blk,
                return ICE_ERR_NO_MEMORY;
 
        /* initialize extraction sequence to all invalid (0xff) */
-       ice_memset(params.es, 0xff, sizeof(params.es), ICE_NONDMA_MEM);
+       for (i = 0; i < ICE_MAX_FV_WORDS; i++) {
+               params.es[i].prot_id = ICE_PROT_INVALID;
+               params.es[i].off = ICE_FV_OFFSET_INVAL;
+       }
 
        params.blk = blk;
        params.prof->id = prof_id;
@@ -1306,6 +1312,7 @@ ice_flow_add_entry(struct ice_hw *hw, enum ice_block blk, u64 prof_id,
        e->id = entry_id;
        e->vsi_handle = vsi_handle;
        e->prof = prof;
+       e->priority = prio;
 
        switch (blk) {
        case ICE_BLK_RSS:
@@ -1672,7 +1679,8 @@ ice_add_rss_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,
 
        rss_cfg->hashed_flds = prof->segs[prof->segs_cnt - 1].match;
        rss_cfg->packet_hdr = prof->segs[prof->segs_cnt - 1].hdrs;
-       LIST_ADD(&rss_cfg->l_entry, &hw->vsi_ctx[vsi_handle]->rss_list_head);
+       LIST_ADD_TAIL(&rss_cfg->l_entry,
+                     &hw->vsi_ctx[vsi_handle]->rss_list_head);
 
        return ICE_SUCCESS;
 }
@@ -1851,11 +1859,14 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
        if (status)
                goto out;
 
+       /* Remove RSS configuration from VSI context before deleting
+        * the flow profile.
+        */
+       ice_rem_rss_cfg_vsi_ctx(hw, vsi_handle, prof);
+
        if (!ice_is_any_bit_set(prof->vsis, ICE_MAX_VSI))
                status = ice_flow_rem_prof_sync(hw, blk, prof);
 
-       ice_rem_rss_cfg_vsi_ctx(hw, vsi_handle, prof);
-
 out:
        ice_free(hw, segs);
        return status;