Thread (7 messages) 7 messages, 3 authors, 2015-08-24

Re: i40e and RSS woes

From: Vlad Zolotarov <hidden>
Date: 2015-08-24 11:40:18


On 08/24/15 14:13, Vlad Zolotarov wrote:

On 03/05/15 07:56, Zhang, Helin wrote:
quoted
Hi Gleb

Sorry for late! I am struggling on my tasks for the following DPDK 
release these days.
quoted
-----Original Message-----
From: Gleb Natapov [mailto:gleb@cloudius-systems.com]
Sent: Monday, March 2, 2015 8:56 PM
To: dev@dpdk.org
Cc: Zhang, Helin
Subject: Re: i40e and RSS woes

Ping.

On Thu, Feb 19, 2015 at 04:50:10PM +0200, Gleb Natapov wrote:
quoted
CCing i40e driver author in a hope to get an answer.

On Mon, Feb 16, 2015 at 03:36:54PM +0200, Gleb Natapov wrote:
quoted
I have an application that works reasonably well with ixgbe driver,
but when I try to use it with i40e I encounter various RSS related 
issues.

First one is that for some reason i40e, when it builds default reta
table, round down number of queues to power of two. Why is this? If
It seems because of i40e queue configuration. We will check it more 
and see
if it can be changed or improved later.
Helin, hi!
Sorry for bringing it back but it seems that the RSS queues number 
issue (rounding it down to the nearest power of 2)
still hasn't been addressed in the master branch.

Could u, pls., clarify what is that "i40e queue configuration" that 
requires this alignment u are referring above?

From what i could see "num" parameter is not propagated outside the 
i40e_pf_config_rss() in any form except for RSS table contents.
This means that any code that would need to know the number of Rx 
queues would use the dev_data->nb_rx_queues (e.g. i40e_dev_rx_init())
and wouldn't be able to know that i40e_pf_config_rss() something 
different except for scanning the RSS table in HW which is of course 
not an option.

Therefore, from the first look it seems that this rounding may be 
safely removed unless I've missed something.

Pls., comment.
Have just noticed this:

	/* Each of below queue pairs should be power of 2 since it's the
	   precondition after TC configuration applied */
	uint16_t lan_nb_qps; /* The number of queue pairs of LAN */

I still couldn't find any justification for either requiring the above 
or requiring any correlation between the number of Tx queues (whatever 
it is) and the
number of Rx queues in the HW spec. It seems that spec implies that Rx 
and Tx configuration is completely orthogonal (as it should be).

Could u, pls., clarify how TC configuration imposes a requirement on a 
number of Rx queues to be a power of 2?

thanks in advance,
vlad
thanks,
vlad
quoted
quoted
quoted
quoted
I configure reta by my own using all of the queues everything seams
to be working. To add insult to injury I do not get any errors
during configuration some queues just do not receive any traffic.

The second problem is that for some reason i40e does not use 40 byte
toeplitz hash key like any other driver, but it expects the key to
be 52 bytes. And it would have being fine (if we ignore the fact
that it contradicts MS spec), but how my high level code suppose 
to know
that?
Actually a rss_key_len was introduced in struct rte_eth_rss_conf 
recently. So the
length should be indicated clearly. But I found the annotations of 
that structure
should have been reworked. I will try to rework it with clear 
descriptions.
quoted
quoted
quoted
And again, device configuration does not fail when wrong key length
is provided, it just uses some other key. Guys this kind of error
handling is completely unacceptable.
If less length of key is provided, it will not be used at all, the 
default key will be used.
So there is no issue as you said. But we need to add more clear 
description for the
structure of rte_eth_rss_conf.

Thank you very much for the good comments!

Regards,
Helin
quoted
quoted
quoted
The last one is more of a question. Why interface to change RSS hash
function (XOR or toeplitz) is part of a filter configuration and not
rss config?

-- 
            Gleb.
-- 
            Gleb.
-- 
            Gleb.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help