* ice_flow_xtract_raws - Create extract sequence entries for raw bytes
* @hw: pointer to the HW struct
* @params: information about the flow to be processed
- * @seg: index of packet segment whose raw fields are to be be extracted
+ * @seg: index of packet segment whose raw fields are to be extracted
*/
static enum ice_status
ice_flow_xtract_raws(struct ice_hw *hw, struct ice_flow_prof_params *params,
ice_free(hw, entry);
}
+/**
+ * ice_flow_get_hw_prof - return the HW profile for a specific profile ID handle
+ * @hw: pointer to the HW struct
+ * @blk: classification stage
+ * @prof_id: the profile ID handle
+ * @hw_prof_id: pointer to variable to receive the HW profile ID
+ */
+enum ice_status
+ice_flow_get_hw_prof(struct ice_hw *hw, enum ice_block blk, u64 prof_id,
+ u8 *hw_prof_id)
+{
+ enum ice_status status = ICE_ERR_DOES_NOT_EXIST;
+ struct ice_prof_map *map;
+
+ ice_acquire_lock(&hw->blk[blk].es.prof_map_lock);
+ map = ice_search_prof_id(hw, blk, prof_id);
+ if (map) {
+ *hw_prof_id = map->prof_id;
+ status = ICE_SUCCESS;
+ }
+ ice_release_lock(&hw->blk[blk].es.prof_map_lock);
+ return status;
+}
+
#define ICE_ACL_INVALID_SCEN 0x3f
/**
buf->pf_scenario_num[6] == ICE_ACL_INVALID_SCEN &&
buf->pf_scenario_num[7] == ICE_ACL_INVALID_SCEN)
return ICE_SUCCESS;
- else
- return ICE_ERR_IN_USE;
+
+ return ICE_ERR_IN_USE;
}
/**
/* Clear scenario for this PF */
buf.pf_scenario_num[hw->pf_id] = ICE_ACL_INVALID_SCEN;
- status = ice_prgm_acl_prof_extrt(hw, prof_id, &buf, NULL);
+ status = ice_prgm_acl_prof_xtrct(hw, prof_id, &buf, NULL);
return status;
}
/* Update the current PF */
buf.pf_scenario_num[hw->pf_id] = (u8)prof->cfg.scen->id;
- status = ice_prgm_acl_prof_extrt(hw, prof_id, &buf, NULL);
+ status = ice_prgm_acl_prof_xtrct(hw, prof_id, &buf, NULL);
return status;
}
return status;
}
-/**
- * ice_flow_get_hw_prof - return the HW profile for a specific profile ID handle
- * @hw: pointer to the HW struct
- * @blk: classification stage
- * @prof_id: the profile ID handle
- * @hw_prof_id: pointer to variable to receive the HW profile ID
- */
-enum ice_status
-ice_flow_get_hw_prof(struct ice_hw *hw, enum ice_block blk, u64 prof_id,
- u8 *hw_prof_id)
-{
- enum ice_status status = ICE_ERR_DOES_NOT_EXIST;
- struct ice_prof_map *map;
-
- ice_acquire_lock(&hw->blk[blk].es.prof_map_lock);
- map = ice_search_prof_id(hw, blk, prof_id);
- if (map) {
- *hw_prof_id = map->prof_id;
- status = ICE_SUCCESS;
- }
- ice_release_lock(&hw->blk[blk].es.prof_map_lock);
- return status;
-}
-
/**
* ice_flow_find_entry - look for a flow entry using its unique ID
* @hw: pointer to the HW struct
e->acts = (struct ice_flow_action *)
ice_memdup(hw, acts, acts_cnt * sizeof(*acts),
ICE_NONDMA_TO_NONDMA);
-
if (!e->acts)
goto out;
if (!entry || !(*entry) || !prof)
return ICE_ERR_BAD_PTR;
- e = *(entry);
+ e = *entry;
do_chg_rng_chk = false;
if (e->range_buf) {
*/
exist = ice_flow_acl_find_scen_entry_cond(prof, e, &do_chg_action,
&do_add_entry, &do_rem_entry);
-
if (do_rem_entry) {
status = ice_flow_rem_entry_sync(hw, ICE_BLK_ACL, exist);
if (status)
}
/* Prepare the result action buffer */
- acts = (struct ice_acl_act_entry *)ice_calloc
- (hw, e->entry_sz, sizeof(struct ice_acl_act_entry));
+ acts = (struct ice_acl_act_entry *)
+ ice_calloc(hw, e->entry_sz, sizeof(struct ice_acl_act_entry));
+ if (!acts)
+ return ICE_ERR_NO_MEMORY;
+
for (i = 0; i < e->acts_cnt; i++)
ice_memcpy(&acts[i], &e->acts[i].data.acl_act,
sizeof(struct ice_acl_act_entry),
*(entry) = exist;
}
out:
- if (acts)
- ice_free(hw, acts);
+ ice_free(hw, acts);
return status;
}
*
* This helper function stores information of a field being matched, including
* the type of the field and the locations of the value to match, the mask, and
- * and the upper-bound value in the start of the input buffer for a flow entry.
+ * the upper-bound value in the start of the input buffer for a flow entry.
* This function should only be used for fixed-size data structures.
*
* This function also opportunistically determines the protocol headers to be
(ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV6)
#define ICE_FLOW_RSS_SEG_HDR_L4_MASKS \
- (ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_UDP | \
- ICE_FLOW_SEG_HDR_SCTP)
+ (ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_SCTP)
#define ICE_FLOW_RSS_SEG_HDR_VAL_MASKS \
(ICE_FLOW_RSS_SEG_HDR_L2_MASKS | \
if (status)
goto exit;
- /* don't do RSS for GTPU outer */
+ /* Don't do RSS for GTPU Outer */
if (segs_cnt == ICE_RSS_OUTER_HEADERS &&
segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU) {
status = ICE_SUCCESS;
ice_acquire_lock(&hw->rss_locks);
status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds, addl_hdrs,
ICE_RSS_OUTER_HEADERS, symm);
-
if (!status)
status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds,
addl_hdrs, ICE_RSS_INNER_HEADERS,
if (status)
goto out;
+ /* Don't do RSS for GTPU Outer */
if (segs_cnt == ICE_RSS_OUTER_HEADERS &&
segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU) {
status = ICE_SUCCESS;