On Thu, Oct 15, 2020 at 1:13 PM Slava Ovsiienko <[email protected]> wrote: > > Hi, Jerin
Hi Slava, > > > -----Original Message----- > > From: Jerin Jacob <[email protected]> > > Sent: Wednesday, October 14, 2020 21:57 > > To: Slava Ovsiienko <[email protected]> > > Cc: dpdk-dev <[email protected]>; NBU-Contact-Thomas Monjalon > > <[email protected]>; Stephen Hemminger > > <[email protected]>; Ferruh Yigit <[email protected]>; > > Olivier Matz <[email protected]>; Maxime Coquelin > > <[email protected]>; David Marchand > > <[email protected]>; Andrew Rybchenko > > <[email protected]> > > Subject: Re: [PATCH v6 1/6] ethdev: introduce Rx buffer split > > > > On Wed, Oct 14, 2020 at 11:42 PM Viacheslav Ovsiienko > > <[email protected]> wrote: > > > > > > The DPDK datapath in the transmit direction is very flexible. > > > An application can build the multi-segment packet and manages almost > > > all data aspects - the memory pools where segments are allocated from, > > > the segment lengths, the memory attributes like external buffers, > > > registered for DMA, etc. > > > > > [..snip..] > > > > For example, let's suppose we configured the Rx queue with the > > > following segments: > > > seg0 - pool0, len0=14B, off0=2 > > > seg1 - pool1, len1=20B, off1=128B > > > seg2 - pool2, len2=20B, off2=0B > > > seg3 - pool3, len3=512B, off3=0B > > > > > > Sorry for chime in late. This API lookout looks good to me. > > But, I am wondering how the application can know the capability or "limits" > > of > > struct rte_eth_rxseg structure for the specific PMD. The other descriptor > > limit, > > it's being exposed with struct rte_eth_dev_info::rx_desc_lim; If PMD can > > support a specific pattern rather than returning the blanket error, the > > application should know the limit. > > IMO, it is better to add > > struct rte_eth_rxseg *rxsegs; > > unint16_t nb_max_rxsegs > > in rte_eth_dev_info structure to express the capablity. > > Where the en and offset can define the max offset. > > > > Thoughts? > > Moreover, there might be implied a lot of various limitations - offsets might > be not supported at all or > have some requirements for alignment, the similar requirements might be > applied to segment size > (say, ask for some granularity). Currently it is not obvious how to report > all nuances, and it is supposed > the limitations of this kind must be documented in PMD chapter. As for mlx5 - > it has no special > limitations besides common requirements to the regular segments. Reporting the limitation in the documentation will not help for the generic applications. > > One more point - the split feature might be considered as just one of > possible cases of using > these segment descriptions, other features might impose other (unknown for > now) limitations. > If we see some of the features of such kind or other PMDs adopts the split > feature - we'll try to find > the common root and consider the way how to report it. My only concern with that approach will be ABI break again if something needs to exposed over rte_eth_dev_info(). IMO, if we featured needs to completed only when its capabilities are exposed in a programmatic manner. As of mlx5, if there not limitation then info rte_eth_dev_info::rxsegs[x].len, offset etc as UINT16_MAX so that application is aware of the state. > > With best regards, Slava >

