DPDK patches and discussions
 help / color / mirror / Atom feed
From: Andrew Rybchenko <arybchenko@solarflare.com>
To: "Hyong Youb Kim (hyonkim)" <hyonkim@cisco.com>,
	Wenzhuo Lu <wenzhuo.lu@intel.com>,
	Beilei Xing <beilei.xing@intel.com>,
	"Bernard Iremonger" <bernard.iremonger@intel.com>,
	Jeff Guo <jia.guo@intel.com>, "Ray Kinsella" <mdr@ashroe.eu>,
	Neil Horman <nhorman@tuxdriver.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>,
	"John Daley (johndale)" <johndale@cisco.com>,
	Haiyue Wang <haiyue.wang@intel.com>,
	Matan Azrad <matan@nvidia.com>,
	Shahaf Shuler <shahafs@nvidia.com>,
	Viacheslav Ovsiienko <viacheslavo@nvidia.com>,
	"Rasesh Mody" <rmody@marvell.com>,
	Shahed Shaikh <shshaikh@marvell.com>,
	"Thomas Monjalon" <thomas@monjalon.net>,
	Ferruh Yigit <ferruh.yigit@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 12/14] ethdev: remove legacy FDIR filter type support
Date: Fri, 23 Oct 2020 09:41:57 +0300	[thread overview]
Message-ID: <c3f93750-6a47-dff1-5d46-de097717be2d@solarflare.com> (raw)
In-Reply-To: <DM5PR11MB1690FACD2A5CD42E07D535D9BF1A0@DM5PR11MB1690.namprd11.prod.outlook.com>

On 10/23/20 6:32 AM, Hyong Youb Kim (hyonkim) wrote:
>> -----Original Message-----
>> From: Andrew Rybchenko <arybchenko@solarflare.com>
>> Sent: Thursday, October 22, 2020 6:43 PM
>> To: Wenzhuo Lu <wenzhuo.lu@intel.com>; Beilei Xing
>> <beilei.xing@intel.com>; Bernard Iremonger
>> <bernard.iremonger@intel.com>; Jeff Guo <jia.guo@intel.com>; Ray Kinsella
>> <mdr@ashroe.eu>; Neil Horman <nhorman@tuxdriver.com>; Ajit Khaparde
>> <ajit.khaparde@broadcom.com>; Somnath Kotur
>> <somnath.kotur@broadcom.com>; John Daley (johndale)
>> <johndale@cisco.com>; Hyong Youb Kim (hyonkim) <hyonkim@cisco.com>;
>> Haiyue Wang <haiyue.wang@intel.com>; Matan Azrad <matan@nvidia.com>;
>> Shahaf Shuler <shahafs@nvidia.com>; Viacheslav Ovsiienko
>> <viacheslavo@nvidia.com>; Rasesh Mody <rmody@marvell.com>; Shahed
>> Shaikh <shshaikh@marvell.com>; Andrew Rybchenko
>> <andrew.rybchenko@oktetlabs.ru>; Thomas Monjalon
>> <thomas@monjalon.net>; Ferruh Yigit <ferruh.yigit@intel.com>
>> Cc: dev@dpdk.org
>> Subject: [PATCH v2 12/14] ethdev: remove legacy FDIR filter type support
>>
>> Instead of FDIR filters RTE flow API should be used.
>>
>> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
>> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
>> Acked-by: Haiyue Wang <haiyue.wang@intel.com>
>> ---
>>  - cleanup testpmd user guide
>>  - partially cleanup net/i40e documentation, please, review and
>>    suggest how to fix remaining flow_director_filter command
> [...]
>>  drivers/net/enic/enic.h                     |   7 -
>>  drivers/net/enic/enic_clsf.c                | 168 ----
>>  drivers/net/enic/enic_ethdev.c              |  48 --
> [...]
>> diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
>> index 5f0ae395da..079f194275 100644
>> --- a/drivers/net/enic/enic.h
>> +++ b/drivers/net/enic/enic.h
>> @@ -394,12 +394,6 @@ enic_ring_incr(uint32_t n_descriptors, uint32_t idx)
>>  }
>>
>>  int dev_is_enic(struct rte_eth_dev *dev);
>> -void enic_fdir_stats_get(struct enic *enic,
>> -			 struct rte_eth_fdir_stats *stats);
>> -int enic_fdir_add_fltr(struct enic *enic,
>> -		       struct rte_eth_fdir_filter *params);
>> -int enic_fdir_del_fltr(struct enic *enic,
>> -		       struct rte_eth_fdir_filter *params);
>>  void enic_free_wq(void *txq);
>>  int enic_alloc_intr_resources(struct enic *enic);
>>  int enic_setup_finish(struct enic *enic);
>> @@ -464,7 +458,6 @@ bool enic_use_vector_rx_handler(struct rte_eth_dev
>> *eth_dev);
>>  void enic_pick_rx_handler(struct rte_eth_dev *eth_dev);
>>  void enic_pick_tx_handler(struct rte_eth_dev *eth_dev);
>>  void enic_fdir_info(struct enic *enic);
>> -void enic_fdir_info_get(struct enic *enic, struct rte_eth_fdir_info *stats);
>>  int enic_vf_representor_init(struct rte_eth_dev *eth_dev, void
>> *init_params);
>>  int enic_vf_representor_uninit(struct rte_eth_dev *ethdev);
>>  int enic_fm_allocate_switch_domain(struct enic *pf);
>> diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c
>> index e206123ba5..1c837a4d09 100644
>> --- a/drivers/net/enic/enic_clsf.c
>> +++ b/drivers/net/enic/enic_clsf.c
>> @@ -42,17 +42,6 @@ static void copy_fltr_v2(struct filter_v2 *fltr,
>>  		const struct rte_eth_fdir_input *input,
>>  		const struct rte_eth_fdir_masks *masks);
>>
>> -void enic_fdir_stats_get(struct enic *enic, struct rte_eth_fdir_stats *stats)
>> -{
>> -	*stats = enic->fdir.stats;
>> -}
>> -
>> -void enic_fdir_info_get(struct enic *enic, struct rte_eth_fdir_info *info)
>> -{
>> -	info->mode = (enum rte_fdir_mode)enic->fdir.modes;
>> -	info->flow_types_mask[0] = enic->fdir.types_mask;
>> -}
>> -
>>  void enic_fdir_info(struct enic *enic)
>>  {
>>  	enic->fdir.modes = (uint32_t)RTE_FDIR_MODE_PERFECT;
>> @@ -305,163 +294,6 @@ copy_fltr_v2(struct filter_v2 *fltr, const struct
>> rte_eth_fdir_input *input,
>>  	}
>>  }
>>
>> -int enic_fdir_del_fltr(struct enic *enic, struct rte_eth_fdir_filter *params)
>> -{
>> -	int32_t pos;
>> -	struct enic_fdir_node *key;
>> -	/* See if the key is in the table */
>> -	pos = rte_hash_del_key(enic->fdir.hash, params);
>> -	switch (pos) {
>> -	case -EINVAL:
>> -	case -ENOENT:
>> -		enic->fdir.stats.f_remove++;
>> -		return -EINVAL;
>> -	default:
>> -		/* The entry is present in the table */
>> -		key = enic->fdir.nodes[pos];
>> -
>> -		/* Delete the filter */
>> -		vnic_dev_classifier(enic->vdev, CLSF_DEL,
>> -			&key->fltr_id, NULL, NULL);
>> -		rte_free(key);
>> -		enic->fdir.nodes[pos] = NULL;
>> -		enic->fdir.stats.free++;
>> -		enic->fdir.stats.remove++;
>> -		break;
>> -	}
>> -	return 0;
>> -}
>> -
>> -int enic_fdir_add_fltr(struct enic *enic, struct rte_eth_fdir_filter *params)
>> -{
>> -	struct enic_fdir_node *key;
>> -	struct filter_v2 fltr;
>> -	int32_t pos;
>> -	uint8_t do_free = 0;
>> -	uint16_t old_fltr_id = 0;
>> -	uint32_t flowtype_supported;
>> -	uint16_t flex_bytes;
>> -	uint16_t queue;
>> -	struct filter_action_v2 action;
>> -
>> -	memset(&fltr, 0, sizeof(fltr));
>> -	memset(&action, 0, sizeof(action));
>> -	flowtype_supported = enic->fdir.types_mask
>> -			     & (1 << params->input.flow_type);
>> -
>> -	flex_bytes = ((params->input.flow_ext.flexbytes[1] << 8 & 0xFF00) |
>> -		(params->input.flow_ext.flexbytes[0] & 0xFF));
>> -
>> -	if (!enic->fdir.hash ||
>> -		(params->input.flow_ext.vlan_tci & 0xFFF) ||
>> -		!flowtype_supported || flex_bytes ||
>> -		params->action.behavior /* drop */) {
>> -		enic->fdir.stats.f_add++;
>> -		return -ENOTSUP;
>> -	}
>> -
>> -	/* Get the enicpmd RQ from the DPDK Rx queue */
>> -	queue = enic_rte_rq_idx_to_sop_idx(params->action.rx_queue);
>> -
>> -	if (!enic->rq[queue].in_use)
>> -		return -EINVAL;
>> -
>> -	/* See if the key is already there in the table */
>> -	pos = rte_hash_del_key(enic->fdir.hash, params);
>> -	switch (pos) {
>> -	case -EINVAL:
>> -		enic->fdir.stats.f_add++;
>> -		return -EINVAL;
>> -	case -ENOENT:
>> -		/* Add a new classifier entry */
>> -		if (!enic->fdir.stats.free) {
>> -			enic->fdir.stats.f_add++;
>> -			return -ENOSPC;
>> -		}
>> -		key = rte_zmalloc("enic_fdir_node",
>> -				  sizeof(struct enic_fdir_node), 0);
>> -		if (!key) {
>> -			enic->fdir.stats.f_add++;
>> -			return -ENOMEM;
>> -		}
>> -		break;
>> -	default:
>> -		/* The entry is already present in the table.
>> -		 * Check if there is a change in queue
>> -		 */
>> -		key = enic->fdir.nodes[pos];
>> -		enic->fdir.nodes[pos] = NULL;
>> -		if (unlikely(key->rq_index == queue)) {
>> -			/* Nothing to be done */
>> -			enic->fdir.stats.f_add++;
>> -			pos = rte_hash_add_key(enic->fdir.hash, params);
>> -			if (pos < 0) {
>> -				dev_err(enic, "Add hash key failed\n");
>> -				return pos;
>> -			}
>> -			enic->fdir.nodes[pos] = key;
>> -			dev_warning(enic,
>> -				"FDIR rule is already present\n");
>> -			return 0;
>> -		}
>> -
>> -		if (likely(enic->fdir.stats.free)) {
>> -			/* Add the filter and then delete the old one.
>> -			 * This is to avoid packets from going into the
>> -			 * default queue during the window between
>> -			 * delete and add
>> -			 */
>> -			do_free = 1;
>> -			old_fltr_id = key->fltr_id;
>> -		} else {
>> -			/* No free slots in the classifier.
>> -			 * Delete the filter and add the modified one later
>> -			 */
>> -			vnic_dev_classifier(enic->vdev, CLSF_DEL,
>> -				&key->fltr_id, NULL, NULL);
>> -			enic->fdir.stats.free++;
>> -		}
>> -
>> -		break;
>> -	}
>> -
>> -	key->filter = *params;
>> -	key->rq_index = queue;
>> -
>> -	enic->fdir.copy_fltr_fn(&fltr, &params->input,
>> -				&enic->rte_dev->data-
>>> dev_conf.fdir_conf.mask);
>> -	action.type = FILTER_ACTION_RQ_STEERING;
>> -	action.rq_idx = queue;
>> -
>> -	if (!vnic_dev_classifier(enic->vdev, CLSF_ADD, &queue, &fltr,
>> -	    &action)) {
>> -		key->fltr_id = queue;
>> -	} else {
>> -		dev_err(enic, "Add classifier entry failed\n");
>> -		enic->fdir.stats.f_add++;
>> -		rte_free(key);
>> -		return -1;
>> -	}
>> -
>> -	if (do_free)
>> -		vnic_dev_classifier(enic->vdev, CLSF_DEL, &old_fltr_id, NULL,
>> -				    NULL);
>> -	else{
>> -		enic->fdir.stats.free--;
>> -		enic->fdir.stats.add++;
>> -	}
>> -
>> -	pos = rte_hash_add_key(enic->fdir.hash, params);
>> -	if (pos < 0) {
>> -		enic->fdir.stats.f_add++;
>> -		dev_err(enic, "Add hash key failed\n");
>> -		return pos;
>> -	}
>> -
>> -	enic->fdir.nodes[pos] = key;
>> -	return 0;
>> -}
>> -
>>  void enic_clsf_destroy(struct enic *enic)
>>  {
>>  	uint32_t index;
> Hi,
>
> For enic:
>
> Acked-by: Hyong Youb Kim <hyonkim@cisco.com>
>
> Looks like you mechanically removed the things that caused compilation
> errors. That is fine. Once this patch series lands, I will post a
> follow-up cleanup patch for enic: remove the entire enic_clsf.c and
> remaining traces of fdir in enic.h.

I've tried to trace back and in some cases remove variables and
structure fields used for FDIR only, but it was not always easy
and I've not dig too deep. That's true. It is much easier for
driver maintainers. Thanks.


  reply	other threads:[~2020-10-23  6:42 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-18 14:08 [dpdk-dev] [PATCH 00/14] ethdev: remove legacy filter API Andrew Rybchenko
2020-10-18 14:08 ` [dpdk-dev] [PATCH 01/14] ethdev: remove legacy MACVLAN filter type support Andrew Rybchenko
2020-10-20 11:07   ` David Marchand
2020-10-21 16:34     ` Andrew Rybchenko
2020-10-21  3:31   ` Guo, Jia
2020-10-21 16:05     ` Andrew Rybchenko
2020-10-22  1:59       ` Guo, Jia
2020-10-18 14:08 ` [dpdk-dev] [PATCH 02/14] ethdev: move MAC filter type to i40e driver Andrew Rybchenko
2020-10-21  4:01   ` Guo, Jia
2020-10-21 16:09     ` Andrew Rybchenko
2020-10-22  2:58       ` Guo, Jia
2020-10-22  7:19         ` Andrew Rybchenko
2020-10-18 14:09 ` [dpdk-dev] [PATCH 03/14] ethdev: remove legacy EtherType filter type support Andrew Rybchenko
2020-10-18 22:13   ` Ajit Khaparde
2020-10-19  6:40   ` Wang, Haiyue
     [not found]   ` <BYAPR11MB3493BE2EB0D5B91DDDCD99758C1C0@BYAPR11MB3493.namprd11.prod.outlook.com>
2020-10-21  5:38     ` Guo, Jia
2020-10-21 16:12       ` Andrew Rybchenko
2020-10-18 14:09 ` [dpdk-dev] [PATCH 04/14] ethdev: remove legacy flexible " Andrew Rybchenko
2020-10-19  6:29   ` Wang, Haiyue
2020-10-18 14:09 ` [dpdk-dev] [PATCH 05/14] ethdev: move flexible filter type to e1000 driver Andrew Rybchenko
2020-10-19  6:20   ` Wang, Haiyue
2020-10-18 14:09 ` [dpdk-dev] [PATCH 06/14] ethdev: remove legacy SYN filter type support Andrew Rybchenko
2020-10-19  6:45   ` Wang, Haiyue
2020-10-18 14:09 ` [dpdk-dev] [PATCH 07/14] ethdev: remove legacy N-tuple " Andrew Rybchenko
2020-10-18 22:13   ` Ajit Khaparde
2020-10-19  6:47   ` Wang, Haiyue
2020-10-18 14:09 ` [dpdk-dev] [PATCH 08/14] ethdev: remove legacy TUNNEL " Andrew Rybchenko
2020-10-18 22:14   ` Ajit Khaparde
2020-10-19  8:01   ` Li, Xiaoyun
2020-10-18 14:09 ` [dpdk-dev] [PATCH 09/14] ethdev: remove legacy HASH " Andrew Rybchenko
2020-10-18 14:09 ` [dpdk-dev] [PATCH 10/14] ethdev: remove legacy L2_TUNNEL " Andrew Rybchenko
2020-10-19  6:42   ` Wang, Haiyue
2020-10-18 14:09 ` [dpdk-dev] [PATCH 11/14] ethdev: remove legacy global filter configuration support Andrew Rybchenko
2020-10-21  5:42   ` Guo, Jia
2020-10-18 14:09 ` [dpdk-dev] [PATCH 12/14] ethdev: remove legacy FDIR filter type support Andrew Rybchenko
2020-10-18 22:15   ` Ajit Khaparde
2020-10-19  6:53   ` Wang, Haiyue
2020-10-21  5:45   ` Guo, Jia
2020-10-21 16:17     ` Andrew Rybchenko
2020-10-22  2:45       ` Guo, Jia
2020-10-18 14:09 ` [dpdk-dev] [PATCH 13/14] app/testpmd: remove flow_director_flex_mask command Andrew Rybchenko
2020-10-20 10:53   ` David Marchand
2020-10-22  9:01     ` Andrew Rybchenko
2020-10-18 14:09 ` [dpdk-dev] [PATCH 14/14] ethdev: remove legacy filter API functions Andrew Rybchenko
2020-10-20 10:47   ` David Marchand
2020-10-20 14:52   ` Ferruh Yigit
2020-10-22  9:12     ` Andrew Rybchenko
2020-10-22  9:33       ` Ferruh Yigit
2020-10-22  9:42 ` [dpdk-dev] [PATCH v2 00/14] ethdev: remove legacy filter API Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 01/14] ethdev: remove legacy MACVLAN filter type support Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 02/14] ethdev: move MAC filter type to i40e driver Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 03/14] ethdev: remove legacy EtherType filter type support Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 04/14] ethdev: remove legacy flexible " Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 05/14] ethdev: move flexible filter type to e1000 driver Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 06/14] ethdev: remove legacy SYN filter type support Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 07/14] ethdev: remove legacy N-tuple " Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 08/14] ethdev: remove legacy TUNNEL " Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 09/14] ethdev: remove legacy HASH " Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 10/14] ethdev: remove legacy L2_TUNNEL " Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 11/14] ethdev: remove legacy global filter configuration support Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 12/14] ethdev: remove legacy FDIR filter type support Andrew Rybchenko
2020-10-23  3:32     ` Hyong Youb Kim (hyonkim)
2020-10-23  6:41       ` Andrew Rybchenko [this message]
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 13/14] app/testpmd: remove command to set FDIR flexible filter mask Andrew Rybchenko
2020-10-22  9:42   ` [dpdk-dev] [PATCH v2 14/14] ethdev: remove legacy filter API functions Andrew Rybchenko
2020-10-23 16:03   ` [dpdk-dev] [PATCH v2 00/14] ethdev: remove legacy filter API Ferruh Yigit
2020-10-29 21:36     ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c3f93750-6a47-dff1-5d46-de097717be2d@solarflare.com \
    --to=arybchenko@solarflare.com \
    --cc=ajit.khaparde@broadcom.com \
    --cc=beilei.xing@intel.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=haiyue.wang@intel.com \
    --cc=hyonkim@cisco.com \
    --cc=jia.guo@intel.com \
    --cc=johndale@cisco.com \
    --cc=matan@nvidia.com \
    --cc=mdr@ashroe.eu \
    --cc=nhorman@tuxdriver.com \
    --cc=rmody@marvell.com \
    --cc=shahafs@nvidia.com \
    --cc=shshaikh@marvell.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@nvidia.com \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).