[PATCH 1/9] ethdev: overwrite some comment related to RSS

Jie Hai haijie1 at huawei.com
Wed Nov 1 07:06:56 CET 2023


On 2023/10/29 15:26, Ori Kam wrote:
> Hi Jei,
> 
>> -----Original Message-----
>> From: Jie Hai <haijie1 at huawei.com>
>> Sent: Friday, October 27, 2023 12:28 PM
>>
>> 1. overwrite the comments of fields of 'rte_eth_rss_conf'.
>> 2. Add comments for RTE_ETH_HASH_FUNCTION_DEFAULT.
>>
>> Signed-off-by: Jie Hai <haijie1 at huawei.com>
>> ---
>>   lib/ethdev/rte_ethdev.h | 33 ++++++++++++++++++---------------
>>   lib/ethdev/rte_flow.h   |  1 +
>>   2 files changed, 19 insertions(+), 15 deletions(-)
>>
>> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
>> index 2fd3cd808dbf..37fd5afef48a 100644
>> --- a/lib/ethdev/rte_ethdev.h
>> +++ b/lib/ethdev/rte_ethdev.h
>> @@ -448,24 +448,27 @@ struct rte_vlan_filter_conf {
>>   /**
>>    * A structure used to configure the Receive Side Scaling (RSS) feature
>>    * of an Ethernet port.
>> - * If not NULL, the *rss_key* pointer of the *rss_conf* structure points
>> - * to an array holding the RSS key to use for hashing specific header
>> - * fields of received packets. The length of this array should be indicated
>> - * by *rss_key_len* below. Otherwise, a default random hash key is used by
>> - * the device driver.
>> - *
>> - * The *rss_key_len* field of the *rss_conf* structure indicates the length
>> - * in bytes of the array pointed by *rss_key*. To be compatible, this length
>> - * will be checked in i40e only. Others assume 40 bytes to be used as before.
>> - *
>> - * The *rss_hf* field of the *rss_conf* structure indicates the different
>> - * types of IPv4/IPv6 packets to which the RSS hashing must be applied.
>> - * Supplying an *rss_hf* equal to zero disables the RSS feature.
>>    */
>>   struct rte_eth_rss_conf {
>> -	uint8_t *rss_key;    /**< If not NULL, 40-byte hash key. */
>> +	/**
>> +	 * In rte_eth_dev_rss_hash_conf_get(), the *rss_key_len* should be
>> +	 * greater than or equal to the hash_key_size which get from
>> +	 * rte_eth_dev_info_get() API. And the *rss_key* should contain at
>> least
>> +	 * *rss_key_len* bytes. If not meet these requirements, the query
>> result
>> +	 * is unreliable even the operation returns success.
>> +	 *
>> +	 * In rte_eth_dev_rss_hash_update() or rte_eth_dev_configure(), the
>> +	 * *rss_key_len* indicates the length of the *rss_key* in bytes of
>> +	 * the array pointed by *rss_key*. Drivers are free to ignore the
>> +	 * *rss_key_len* and assume key length is 40 bytes.
> 
> In the original comment, it is stated that if no RSS key is given rss_key = NULL , then the PMD selects a random hash key,
> Is this behavior changed?
Thanks for your comment.

Some drivers select a random key, e.g. cpfl_ethdev, bnx2x_vfpf, ena.
Some drivers use their default key, which is fixed, e.g. igb.
And some just ignore this configuration on rss_key, e.g. cxgbe_ethdev.

I will correct that.

> 
>> +	 */
>> +	uint8_t *rss_key;
>>   	uint8_t rss_key_len; /**< hash key length in bytes. */
>> -	uint64_t rss_hf;     /**< Hash functions to apply - see below. */
>> +	/**
>> +	 * Indicates the type of packets or the specific part of packets to
>> +	 * which RSS hashing is to be applied.
>> +	 */
>> +	uint64_t rss_hf;
>>   };
>>
>>   /*
>> diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
>> index edefa34c10da..25f1dffd1f30 100644
>> --- a/lib/ethdev/rte_flow.h
>> +++ b/lib/ethdev/rte_flow.h
>> @@ -3226,6 +3226,7 @@ struct rte_flow_query_count {
>>    * Hash function types.
>>    */
>>   enum rte_eth_hash_function {
>> +	/** DEFAULT means driver decides which hash algorithm to pick. */
>>   	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
>>   	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
>>   	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
>> --
>> 2.30.0
> 


More information about the dev mailing list