[dpdk-dev] Question about 'rxm->hash.rss' and 'mb->hash.fdir'
Slava Ovsiienko
viacheslavo at nvidia.com
Wed Jun 30 13:44:35 CEST 2021
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.
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).
With best regards,
Slava
More information about the dev
mailing list