DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Michal Krawczyk <mk@semihalf.com>, dev@dpdk.org
Cc: mw@semihalf.com, mba@semihalf.com, gtzalik@amazon.com,
	evgenys@amazon.com, igorch@amazon.com
Subject: Re: [dpdk-dev] [PATCH v2 04/29] net/ena/base: set default hash key
Date: Thu, 2 Apr 2020 13:36:38 +0100	[thread overview]
Message-ID: <a4a750f5-a89f-cc7a-428a-305e026f4e75@intel.com> (raw)
In-Reply-To: <20200401142127.13715-5-mk@semihalf.com>

On 4/1/2020 3:21 PM, Michal Krawczyk wrote:
> The RSS hash key was present in the device, but it wasn't exposed to
> the user. The other key still cannot be set, but now it can be accessed
> if one needs to do that.

What is 'the other key'?

> 
> By default, the random hash key is used and it is generated only once
> when requested for the first time.

It looks like this patch does
1- setting default rss hash key (generated randomly)
2- Separate 'ena_com_get_hash_function()' and 'ena_com_get_hash_key()'
  - I didn't get the motivation of this seperation, new function not called
3- Minor fixes, like 'key' check in 'ena_com_fill_hash_function()', in
'ENA_ADMIN_TOEPLITZ' case, ...
4- remove 'ena_com_ind_tbl_convert_from_device()'

What to you think seperating above ones if they are logically seperate?

> 
> Signed-off-by: Michal Krawczyk <mk@semihalf.com>
> Reviewed-by: Igor Chauskin <igorch@amazon.com>
> Reviewed-by: Guy Tzalik <gtzalik@amazon.com>

<...>

> @@ -1032,6 +1032,24 @@ static int ena_com_get_feature(struct ena_com_dev *ena_dev,
>  				      feature_ver);
>  }
>  
> +int ena_com_get_current_hash_function(struct ena_com_dev *ena_dev)
> +{
> +	return ena_dev->rss.hash_func;
> +}


This function is not called, who is the intendent consumer of the function?
Commit log mentions exposing to user, is the intention this function to be
called by application, if so it shoudln't, applications doesn't call driver
fucntions directly.

<...>

> @@ -1266,30 +1284,6 @@ static int ena_com_ind_tbl_convert_to_device(struct ena_com_dev *ena_dev)
>  	return 0;
>  }
>  
> -static int ena_com_ind_tbl_convert_from_device(struct ena_com_dev *ena_dev)
> -{
> -	u16 dev_idx_to_host_tbl[ENA_TOTAL_NUM_QUEUES] = { (u16)-1 };
> -	struct ena_rss *rss = &ena_dev->rss;
> -	u8 idx;
> -	u16 i;
> -
> -	for (i = 0; i < ENA_TOTAL_NUM_QUEUES; i++)
> -		dev_idx_to_host_tbl[ena_dev->io_sq_queues[i].idx] = i;
> -
> -	for (i = 0; i < 1 << rss->tbl_log_size; i++) {
> -		if (rss->rss_ind_tbl[i].cq_idx > ENA_TOTAL_NUM_QUEUES)
> -			return ENA_COM_INVAL;
> -		idx = (u8)rss->rss_ind_tbl[i].cq_idx;
> -
> -		if (dev_idx_to_host_tbl[idx] > ENA_TOTAL_NUM_QUEUES)
> -			return ENA_COM_INVAL;
> -
> -		rss->host_rss_ind_tbl[i] = dev_idx_to_host_tbl[idx];
> -	}
> -
> -	return 0;
> -}> -

This function and where it is called seems removed, is this related to this
patch, "setting default hash key"?

<...>

>  	case ENA_ADMIN_TOEPLITZ:
> -		if (key_len > sizeof(hash_key->key)) {
> -			ena_trc_err("key len (%hu) is bigger than the max supported (%zu)\n",
> -				    key_len, sizeof(hash_key->key));
> -			return ENA_COM_INVAL;
> +		if (key) {
> +			if (key_len != sizeof(hash_key->key)) {
> +				ena_trc_err("key len (%hu) doesn't equal the supported size (%zu)\n",
> +					     key_len, sizeof(hash_key->key));
> +				return ENA_COM_INVAL;
> +			}
> +			memcpy(hash_key->key, key, key_len);
> +			rss->hash_init_val = init_val;
> +			hash_key->keys_num = key_len >> 2;

I am aware this is copy/paste, but here '>> 2' is "/ sizeof(unit2_t)", would it
be better to use that way instead of hardcoded value?

<...>

> @@ -256,6 +256,23 @@ static const struct eth_dev_ops ena_dev_ops = {
>  	.reta_query           = ena_rss_reta_query,
>  };
>  
> +void ena_rss_key_fill(void *key, size_t size)
> +{
> +	static bool key_generated;
> +	static uint8_t default_key[ENA_HASH_KEY_SIZE];

If there are multiple 'ena' devices in the platform, using 'static' variables
will cause each device use same rss key, I just want to double check this is the
intention.

  reply	other threads:[~2020-04-02 12:36 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-01 14:20 [dpdk-dev] [PATCH v2 00/29] Update ENA driver to v2.1.0 Michal Krawczyk
2020-04-01 14:20 ` [dpdk-dev] [PATCH v2 01/29] net/ena: check if size of buffer is at least 1400B Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 02/29] net/ena/base: make allocation macros thread-safe Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 03/29] net/ena/base: prevent allocation of 0-sized memory Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 04/29] net/ena/base: set default hash key Michal Krawczyk
2020-04-02 12:36   ` Ferruh Yigit [this message]
2020-04-03 11:10     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 05/29] net/ena/base: rework interrupt moderation Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 06/29] net/ena/base: remove extra properties strings Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 07/29] net/ena/base: add accelerated LLQ mode Michal Krawczyk
2020-04-02 12:41   ` Ferruh Yigit
2020-04-03 11:15     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 08/29] net/ena/base: fix documentation of the functions Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 09/29] net/ena/base: fix indentation in cq polling Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 10/29] net/ena/base: add error logs when preparing Tx Michal Krawczyk
2020-04-02 12:53   ` Ferruh Yigit
2020-04-03 11:31     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 11/29] net/ena/base: use 48-bit memory addresses in ena_com Michal Krawczyk
2020-04-02 12:55   ` Ferruh Yigit
2020-04-03 12:14     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 12/29] net/ena/base: fix types for printing timestamps Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 13/29] net/ena/base: fix indentation of multiple defines Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 14/29] net/ena/base: update gen date and commit Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 15/29] net/ena: set IO ring size to the valid value Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 16/29] net/ena: refactor getting IO queues capabilities Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 17/29] net/ena: add support for large LLQ headers Michal Krawczyk
2020-04-02 13:02   ` Ferruh Yigit
2020-04-03 12:15     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 18/29] net/ena: remove memory barriers before doorbells Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 19/29] net/ena: add Tx drops statistic Michal Krawczyk
2020-04-02 13:05   ` Ferruh Yigit
2020-04-03 12:30     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 20/29] net/ena: disable meta caching Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 21/29] net/ena: refactor Rx path Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 22/29] net/ena: rework getting number of available descs Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 23/29] net/ena: limit refill threshold by fixed value Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 24/29] net/ena: use macros for ring idx operations Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 25/29] net/ena: refactor Tx path Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 26/29] net/ena: reuse 0 length Rx descriptor Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 27/29] doc: add notes on ENA usage on metal instances Michal Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 28/29] net/ena: update copyright date Michal Krawczyk
2020-04-02 15:51   ` Ferruh Yigit
2020-04-03 12:31     ` Michał Krawczyk
2020-04-01 14:21 ` [dpdk-dev] [PATCH v2 29/29] net/ena: update version of the driver to v2.1.0 Michal Krawczyk
2020-04-02 15:53   ` Ferruh Yigit
2020-04-03 12:32     ` Michał Krawczyk

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=a4a750f5-a89f-cc7a-428a-305e026f4e75@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=dev@dpdk.org \
    --cc=evgenys@amazon.com \
    --cc=gtzalik@amazon.com \
    --cc=igorch@amazon.com \
    --cc=mba@semihalf.com \
    --cc=mk@semihalf.com \
    --cc=mw@semihalf.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).