[RFC 4/8] net/i40e: remove experimental FDIR API
Stephen Hemminger
stephen at networkplumber.org
Thu May 28 23:37:16 CEST 2026
Remove the flow director related private APIs in i40e.
These APIs are experimental, therefore they can be removed
without deprecation warning.
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
drivers/net/intel/i40e/i40e_ethdev.c | 4 +-
drivers/net/intel/i40e/i40e_ethdev.h | 4 -
drivers/net/intel/i40e/i40e_fdir.c | 140 --------------------------
drivers/net/intel/i40e/i40e_flow.c | 3 +-
drivers/net/intel/i40e/rte_pmd_i40e.c | 34 -------
drivers/net/intel/i40e/rte_pmd_i40e.h | 33 ------
6 files changed, 3 insertions(+), 215 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_ethdev.c b/drivers/net/intel/i40e/i40e_ethdev.c
index e818b6fc7c..207339cc8d 100644
--- a/drivers/net/intel/i40e/i40e_ethdev.c
+++ b/drivers/net/intel/i40e/i40e_ethdev.c
@@ -9309,8 +9309,8 @@ i40e_get_valid_input_set(enum i40e_filter_pctype pctype,
};
/**
- * Flow director supports only fields defined in
- * union rte_eth_fdir_flow.
+ * Flow director supports only fields reachable through
+ * rte_flow item patterns.
*/
static const uint64_t valid_fdir_inset_table[] = {
[I40E_FILTER_PCTYPE_FRAG_IPV4] =
diff --git a/drivers/net/intel/i40e/i40e_ethdev.h b/drivers/net/intel/i40e/i40e_ethdev.h
index d57c53f661..fecbd67f15 100644
--- a/drivers/net/intel/i40e/i40e_ethdev.h
+++ b/drivers/net/intel/i40e/i40e_ethdev.h
@@ -1366,10 +1366,6 @@ enum i40e_filter_pctype
uint16_t i40e_pctype_to_flowtype(const struct i40e_adapter *adapter,
enum i40e_filter_pctype pctype);
int i40e_dev_set_gre_key_len(struct i40e_hw *hw, uint8_t len);
-void i40e_fdir_info_get(struct rte_eth_dev *dev,
- struct rte_eth_fdir_info *fdir);
-void i40e_fdir_stats_get(struct rte_eth_dev *dev,
- struct rte_eth_fdir_stats *stat);
int i40e_select_filter_input_set(struct i40e_hw *hw,
struct rte_eth_input_set_conf *conf,
enum rte_filter_type filter);
diff --git a/drivers/net/intel/i40e/i40e_fdir.c b/drivers/net/intel/i40e/i40e_fdir.c
index ad256a5a11..c1acf389bf 100644
--- a/drivers/net/intel/i40e/i40e_fdir.c
+++ b/drivers/net/intel/i40e/i40e_fdir.c
@@ -1793,146 +1793,6 @@ i40e_fdir_flush(struct rte_eth_dev *dev)
return 0;
}
-static inline void
-i40e_fdir_info_get_flex_set(struct i40e_pf *pf,
- struct rte_eth_flex_payload_cfg *flex_set,
- uint16_t *num)
-{
- struct i40e_fdir_flex_pit *flex_pit;
- struct rte_eth_flex_payload_cfg *ptr = flex_set;
- uint16_t src, dst, size, j, k;
- uint8_t i, layer_idx;
-
- for (layer_idx = I40E_FLXPLD_L2_IDX;
- layer_idx <= I40E_FLXPLD_L4_IDX;
- layer_idx++) {
- if (layer_idx == I40E_FLXPLD_L2_IDX)
- ptr->type = RTE_ETH_L2_PAYLOAD;
- else if (layer_idx == I40E_FLXPLD_L3_IDX)
- ptr->type = RTE_ETH_L3_PAYLOAD;
- else if (layer_idx == I40E_FLXPLD_L4_IDX)
- ptr->type = RTE_ETH_L4_PAYLOAD;
-
- for (i = 0; i < I40E_MAX_FLXPLD_FIED; i++) {
- flex_pit = &pf->fdir.flex_set[layer_idx *
- I40E_MAX_FLXPLD_FIED + i];
- if (flex_pit->size == 0)
- continue;
- src = flex_pit->src_offset * sizeof(uint16_t);
- dst = flex_pit->dst_offset * sizeof(uint16_t);
- size = flex_pit->size * sizeof(uint16_t);
- for (j = src, k = dst; j < src + size; j++, k++)
- ptr->src_offset[k] = j;
- }
- (*num)++;
- ptr++;
- }
-}
-
-static inline void
-i40e_fdir_info_get_flex_mask(struct i40e_pf *pf,
- struct rte_eth_fdir_flex_mask *flex_mask,
- uint16_t *num)
-{
- struct i40e_fdir_flex_mask *mask;
- struct rte_eth_fdir_flex_mask *ptr = flex_mask;
- uint16_t flow_type;
- uint8_t i, j;
- uint16_t off_bytes, mask_tmp;
-
- for (i = I40E_FILTER_PCTYPE_NONF_IPV4_UDP;
- i <= I40E_FILTER_PCTYPE_L2_PAYLOAD;
- i++) {
- mask = &pf->fdir.flex_mask[i];
- flow_type = i40e_pctype_to_flowtype(pf->adapter,
- (enum i40e_filter_pctype)i);
- if (flow_type == RTE_ETH_FLOW_UNKNOWN)
- continue;
-
- for (j = 0; j < I40E_FDIR_MAX_FLEXWORD_NUM; j++) {
- if (mask->word_mask & I40E_FLEX_WORD_MASK(j)) {
- ptr->mask[j * sizeof(uint16_t)] = UINT8_MAX;
- ptr->mask[j * sizeof(uint16_t) + 1] = UINT8_MAX;
- } else {
- ptr->mask[j * sizeof(uint16_t)] = 0x0;
- ptr->mask[j * sizeof(uint16_t) + 1] = 0x0;
- }
- }
- for (j = 0; j < I40E_FDIR_BITMASK_NUM_WORD; j++) {
- off_bytes = mask->bitmask[j].offset * sizeof(uint16_t);
- mask_tmp = ~mask->bitmask[j].mask;
- ptr->mask[off_bytes] &= I40E_HI_BYTE(mask_tmp);
- ptr->mask[off_bytes + 1] &= I40E_LO_BYTE(mask_tmp);
- }
- ptr->flow_type = flow_type;
- ptr++;
- (*num)++;
- }
-}
-
-/*
- * i40e_fdir_info_get - get information of Flow Director
- * @pf: ethernet device to get info from
- * @fdir: a pointer to a structure of type *rte_eth_fdir_info* to be filled with
- * the flow director information.
- */
-void
-i40e_fdir_info_get(struct rte_eth_dev *dev, struct rte_eth_fdir_info *fdir)
-{
- struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
- struct i40e_hw *hw = I40E_PF_TO_HW(pf);
- uint16_t num_flex_set = 0;
- uint16_t num_flex_mask = 0;
- uint16_t i;
-
- fdir->mode = RTE_FDIR_MODE_NONE;
-
- fdir->guarant_spc =
- (uint32_t)hw->func_caps.fd_filters_guaranteed;
- fdir->best_spc =
- (uint32_t)hw->func_caps.fd_filters_best_effort;
- fdir->max_flexpayload = I40E_FDIR_MAX_FLEX_LEN;
- fdir->flow_types_mask[0] = I40E_FDIR_FLOWS;
- for (i = 1; i < RTE_FLOW_MASK_ARRAY_SIZE; i++)
- fdir->flow_types_mask[i] = 0ULL;
- fdir->flex_payload_unit = sizeof(uint16_t);
- fdir->flex_bitmask_unit = sizeof(uint16_t);
- fdir->max_flex_payload_segment_num = I40E_MAX_FLXPLD_FIED;
- fdir->flex_payload_limit = I40E_MAX_FLX_SOURCE_OFF;
- fdir->max_flex_bitmask_num = I40E_FDIR_BITMASK_NUM_WORD;
-
- i40e_fdir_info_get_flex_set(pf,
- fdir->flex_conf.flex_set,
- &num_flex_set);
- i40e_fdir_info_get_flex_mask(pf,
- fdir->flex_conf.flex_mask,
- &num_flex_mask);
-
- fdir->flex_conf.nb_payloads = num_flex_set;
- fdir->flex_conf.nb_flexmasks = num_flex_mask;
-}
-
-/*
- * i40e_fdir_stat_get - get statistics of Flow Director
- * @pf: ethernet device to get info from
- * @stat: a pointer to a structure of type *rte_eth_fdir_stats* to be filled with
- * the flow director statistics.
- */
-void
-i40e_fdir_stats_get(struct rte_eth_dev *dev, struct rte_eth_fdir_stats *stat)
-{
- struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
- struct i40e_hw *hw = I40E_PF_TO_HW(pf);
- uint32_t fdstat;
-
- fdstat = I40E_READ_REG(hw, I40E_PFQF_FDSTAT);
- stat->guarant_cnt =
- (uint32_t)((fdstat & I40E_PFQF_FDSTAT_GUARANT_CNT_MASK) >>
- I40E_PFQF_FDSTAT_GUARANT_CNT_SHIFT);
- stat->best_cnt =
- (uint32_t)((fdstat & I40E_PFQF_FDSTAT_BEST_CNT_MASK) >>
- I40E_PFQF_FDSTAT_BEST_CNT_SHIFT);
-}
/* Restore flow director filter */
void
diff --git a/drivers/net/intel/i40e/i40e_flow.c b/drivers/net/intel/i40e/i40e_flow.c
index c8eaa2b2e5..1ebc3e8fef 100644
--- a/drivers/net/intel/i40e/i40e_flow.c
+++ b/drivers/net/intel/i40e/i40e_flow.c
@@ -2461,8 +2461,7 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,
for (i = 0; i < raw_spec->length; i++) {
j = i + next_dst_off;
- if (j >= RTE_ETH_FDIR_MAX_FLEXLEN ||
- j >= I40E_FDIR_MAX_FLEX_LEN)
+ if (j >= I40E_FDIR_MAX_FLEX_LEN)
break;
filter->input.flow_ext.flexbytes[j] =
raw_spec->pattern[i];
diff --git a/drivers/net/intel/i40e/rte_pmd_i40e.c b/drivers/net/intel/i40e/rte_pmd_i40e.c
index 2e7943ef8b..e47c1aa9d7 100644
--- a/drivers/net/intel/i40e/rte_pmd_i40e.c
+++ b/drivers/net/intel/i40e/rte_pmd_i40e.c
@@ -3219,40 +3219,6 @@ rte_pmd_i40e_inset_set(uint16_t port, uint8_t pctype,
return 0;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_i40e_get_fdir_info, 20.08)
-int
-rte_pmd_i40e_get_fdir_info(uint16_t port, struct rte_eth_fdir_info *fdir_info)
-{
- struct rte_eth_dev *dev;
-
- RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV);
-
- dev = &rte_eth_devices[port];
- if (!is_i40e_supported(dev))
- return -ENOTSUP;
-
- i40e_fdir_info_get(dev, fdir_info);
-
- return 0;
-}
-
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_i40e_get_fdir_stats, 20.08)
-int
-rte_pmd_i40e_get_fdir_stats(uint16_t port, struct rte_eth_fdir_stats *fdir_stat)
-{
- struct rte_eth_dev *dev;
-
- RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV);
-
- dev = &rte_eth_devices[port];
- if (!is_i40e_supported(dev))
- return -ENOTSUP;
-
- i40e_fdir_stats_get(dev, fdir_stat);
-
- return 0;
-}
-
RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_i40e_set_gre_key_len, 20.08)
int
rte_pmd_i40e_set_gre_key_len(uint16_t port, uint8_t len)
diff --git a/drivers/net/intel/i40e/rte_pmd_i40e.h b/drivers/net/intel/i40e/rte_pmd_i40e.h
index 5dcca91264..097ff4b58d 100644
--- a/drivers/net/intel/i40e/rte_pmd_i40e.h
+++ b/drivers/net/intel/i40e/rte_pmd_i40e.h
@@ -1145,39 +1145,6 @@ rte_pmd_i40e_inset_field_clear(uint64_t *inset, uint8_t field_idx)
return 0;
}
-/**
- * Get port fdir info
- *
- * @param port
- * The port identifier of the Ethernet device.
- * @param fdir_info
- * The fdir info of the port
- * @return
- * - (0) if successful.
- * - (-ENODEV) if *port* invalid.
- * - (-ENOTSUP) if operation not supported.
- */
-__rte_experimental
-int
-rte_pmd_i40e_get_fdir_info(uint16_t port, struct rte_eth_fdir_info *fdir_info);
-
-/**
- * Get port fdir status
- *
- * @param port
- * The port identifier of the Ethernet device.
- * @param fdir_stat
- * The fdir status of the port
- * @return
- * - (0) if successful.
- * - (-ENODEV) if *port* invalid.
- * - (-ENOTSUP) if operation not supported.
- */
-__rte_experimental
-int
-rte_pmd_i40e_get_fdir_stats(uint16_t port,
- struct rte_eth_fdir_stats *fdir_stat);
-
/**
* Set GRE key length
*
--
2.53.0
More information about the dev
mailing list