[dpdk-dev] Question about 'rxm->hash.rss' and 'mb->hash.fdir'
Min Hu (Connor)
humin29 at huawei.com
Thu Jul 1 02:23:57 CEST 2021
Hi, Slava
在 2021/6/30 19:44, Slava Ovsiienko 写道:
> Hi,
>
>> -----Original Message-----
>> From: Min Hu (Connor) <humin29 at huawei.com>
>> Sent: Wednesday, June 30, 2021 14:22
>> To: Ferruh Yigit <ferruh.yigit at intel.com>; dev at dpdk.org; NBU-Contact-Thomas
>> Monjalon <thomas at monjalon.net>; Andrew Rybchenko
>> <andrew.rybchenko at oktetlabs.ru>
>> Cc: Beilei Xing <beilei.xing at intel.com>; Matan Azrad <matan at nvidia.com>;
>> Shahaf Shuler <shahafs at nvidia.com>; Slava Ovsiienko
>> <viacheslavo at nvidia.com>
>> Subject: Re: Question about 'rxm->hash.rss' and 'mb->hash.fdir'
>>
>> Hi, Beilei, Matan, Shahaf, Viacheslav,
>>
>> how about your opinion?
>>
>> 在 2021/6/30 17:34, Ferruh Yigit 写道:
>>> On 6/30/2021 3:45 AM, Min Hu (Connor) wrote:
>>>> Hi, all
>>>> one question about 'rxm->hash.rss' and 'mb->hash.fdir'.
>>>>
>>>> In Rx recv packets function,
>>>> 'rxm->hash.rss' will report rss hash result from Rx desc.
>>>> 'rxm->hash.fdir' will report filter identifier from Rx desc.
>>>>
>>>> But function implementation differs from some PMDs. for example:
>>>> i40e, MLX5 report the two at the same time if pkt_flags is set,like:
>>>> ******************************************
>>>> if (pkt_flags & PKT_RX_RSS_HASH) {
>>>> rxm->hash.rss =
>>>> rte_le_to_cpu_32(rxd.wb.qword0.hi_dword.rss);
>>>> }
>>>> if (pkt_flags & PKT_RX_FDIR) {
>>>> mb->hash.fdir.hi =
>>>> rte_le_to_cpu_32(rxdp->wb.qword3.hi_dword.fd_id);
>>>> }
>>>> ********************************************
>>>>
>>>> While, ixgbe only report one of the two. like:
>>>> ******************************************
>>>> if (likely(pkt_flags & PKT_RX_RSS_HASH))
>>>> mb->hash.rss = rte_le_to_cpu_32(
>>>> rxdp[j].wb.lower.hi_dword.rss);
>>>> else if (pkt_flags & PKT_RX_FDIR) {
>>>> mb->hash.fdir.hash = rte_le_to_cpu_16(
>>>> rxdp[j].wb.lower.hi_dword.csum_ip.csum) &
>>>> IXGBE_ATR_HASH_MASK;
>>>> mb->hash.fdir.id = rte_le_to_cpu_16(
>>>> rxdp[j].wb.lower.hi_dword.csum_ip.ip_id);
>>>> }
>>>> ********************************************
>>>> So, what is application scenario for 'rxm->hash.rss' and
>>>> 'mb->hash.fdir', that is, why the two should be reported? How about
>>>> reporting the two at the same time?
>>>> Thanks for your reply.
>>>
>>>
>>> Hi Connor,
>>>
>>> mbuf->hash is union, so it is not possible to set both 'hash.rss' & 'hash.fdir'.
>
> hash.rss is uint32_t and shares the memory with hash.dir.lo.
> hash.dir.hi is untouched by access to hash.rss.
> Hence, IIUC, we can provide both valid hash.rss and hash.fdir.hi at the same time.
>
if reported at the same time, what do users(or APP)use them for ?
> At least mlx5 provides both (at least if CQE compression option allows it).
> RSS hash is provided in the hash.rss, and MARK RTE Flow action result is
> reported in hash.fdir.hi in independent way.
>
>>>
>>> I assume for i40e & mlx5 case 'pkt_flags' indicate which one is valid
>>> and only one is set in practice. Cc'ed driver mainteriners for more comment.
>>
>> Thanks Ferruh,
>> another question, why does user need this information: rxm->hash.rss
>> or mb->hash.fdir.hi ? what is the function?
>
> IIRC, hash.rss is the lower bits if calculated hash function result over the packet.
> hash.fdir.hi is the result of MARK RTE Flow action (at least for mlx5).
>
Thanks for your reply.
> With best regards,
> Slava
>
More information about the dev
mailing list