Hi Anoob, Thanks for the quick response. Nice answering. I think I have fully understood the fields meaning.
Many thanks again, Suanming > -----Original Message----- > From: Anoob Joseph <ano...@marvell.com> > Sent: Tuesday, May 9, 2023 8:13 PM > To: Suanming Mou <suanmi...@nvidia.com> > Cc: Akhil Goyal <gak...@marvell.com>; dev@dpdk.org; Doherty, Declan > <declan.dohe...@intel.com> > Subject: RE: min_mbuf_head/tailroom_req in rte_cryptodev_info > > Hi Suanming, > > Please see inline. > > Thanks, > Anoob > > > From: Suanming Mou <suanmi...@nvidia.com> > > Sent: Tuesday, May 9, 2023 5:23 PM > > To: Anoob Joseph <ano...@marvell.com>; Doherty, Declan > <declan.dohe...@intel.com> > > Cc: Akhil Goyal <gak...@marvell.com>; dev@dpdk.org > > Subject: [EXT] min_mbuf_head/tailroom_req in rte_cryptodev_info > > > > External Email > > ________________________________________ > > Hi Guys, > > > > Sorry for disturbing you. I have one small question regarding the > min_mbuf_head/tailroom_req in rte_cryptodev_info. > > I saw you were the people who discussed, reviewed and added that two fields. > > IIUC, the two fields provided a hint to the PMD that HW can use(modify) the > headroom and tailroom space to improve the performance. > [Anoob] That's right. > > > But regarding the space(e.g. headroom) user reserved, should the data > offset(sym_op->aead.data.offset) in struct rte_crypto_op also be taken into > account? > > e.g. if the mbuf in the operation is something like below: > > |---headroom--|----op offset---|---payload to process---|---tailroom---| > > [Anoob] Above layout is correct. Headroom that can be used by cryptodev is the > headroom of the mbuf. > > > In that case, what is the headroom mean to HW? Start from real mbuf > headroom before op offset or the offset before payload? > > [Anoob] May be let me explain how we use it in CNXK PMDs. We have to pass > fields such as IV & offsets to the hardware for performing crypto operation. > To > maximize performance, we pass it as single buffer and hence the requirement on > this headroom. > > In our enqueue path, we use headroom for storing some of these transient data. > > |---headroom--|-------------- packet_len ---------------------|---tailroom---| > |---headroom--|----op offset---|---payload to process---|---tailroom---| > |--------| <---- Space used by cryptodev for internal purpose > ^ = rte_pktmbuf_mtod(mbuf, void *); > > All offsets mentioned in rte_crypto_op would be calculated from the packet > start [rte_pktmbuf_mtod()]. In other words, the packet data from the start of > the packet till offset would be untouched by the cryptodev in all > circumstances. > It is the space that is before start of the packet(ie headroom of mbuf) which > would be used for this purpose. > > Hope it is clear now.