Hi, > -----Original Message----- > From: Min Hu (Connor) <humi...@huawei.com> > Sent: Wednesday, June 30, 2021 14:22 > To: Ferruh Yigit <ferruh.yi...@intel.com>; dev@dpdk.org; NBU-Contact-Thomas > Monjalon <tho...@monjalon.net>; Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru> > Cc: Beilei Xing <beilei.x...@intel.com>; Matan Azrad <ma...@nvidia.com>; > Shahaf Shuler <shah...@nvidia.com>; Slava Ovsiienko > <viachesl...@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