On Wed, Sep 22, 2021 at 10:06 PM Bruce Richardson <bruce.richard...@intel.com> wrote: > > On Wed, Sep 22, 2021 at 08:56:50AM +0100, Bruce Richardson wrote: > > On Wed, Sep 22, 2021 at 09:51:42AM +0800, fengchengwen wrote: > > > On 2021/9/22 2:11, Jerin Jacob wrote: > > > > On Tue, Sep 21, 2021 at 10:42 PM Pai G, Sunil <sunil.pa...@intel.com> > > > > wrote: > > > >> > > > >> Hi Jerin, > > > >> > > > >> <snipped> > > > >> > > > >>>>> To understand it better, Could you share more details on feedback > > > >>>>> mechanism on your application enqueue > > > >>>>> > > > >>>>> app_enqueue_v1(.., nb_seg) > > > >>>>> { > > > >>>>> /* Not enough space, Let application handle it by > > > >>>>> dropping or resubmitting */ > > > >>>>> if (rte_dmadev_burst_capacity() < nb_seg) > > > >>>>> return -ENOSPC; > > > >>>>> > > > >>>>> do rte_dma_op() in loop without checking error; > > > >>>>> return 0; // Success > > > >>>>> } > > > >>>>> > > > >>>>> vs > > > >>>>> app_enqueue_v2(.., nb_seg) > > > >>>>> { > > > >>>>> int rc; > > > >>>>> > > > >>>>> rc |= rte_dma_op() in loop without checking error; > > > >>>>> return rc; // return the actual status to application > > > >>>>> if Not enough space, Let application handle it by dropping or > > > >>>>> resubmitting */ } > > > >>>>> > > > >>>>> Is app_enqueue_v1() and app_enqueue_v2() logically the same from > > > >>>>> application PoV. Right? > > > >>>>> > > > >>>>> If not, could you explain, the version you are planning to do for > > > >>>>> app_enqueue() > > > >>>> > > > >>>> The exact version can be found here : > > > >>>> > > > >>> http://patchwork.ozlabs.org/project/openvswitch/patch/20210907120021.4 > > > >>>> 093604-2-sunil.pa...@intel.com/ Unfortunately, both versions are not > > > >>>> same in our case because of the SW fallback we have for ring full > > > >>>> scenario's. > > > >>>> For a packet with 8 nb_segs, if the ring has only space for 4 , we > > > >>>> would avoid this packet with app_enqueue_v1 while going ahead with an > > > >>> enqueue with app_enqueue_v2, resulting in a mix of DMA and CPU copies > > > >>> for a packet which we would want to avoid. > > > >>> > > > >>> Thanks for RFC link. Usage is clear now, Since you are checking the > > > >>> space in > > > >>> the completion handler, I am not sure, what is hard to get the > > > >>> remaining > > > >>> space, Will following logic work to find the empty space. If not, > > > >>> please discuss > > > >>> the issue with this approach. I am trying to avoid yet another > > > >>> fastpath API > > > >>> and complication in driver as there is element checking space in the > > > >>> submit > > > >>> queue and completion queue at least in our hardware. > > > >>> > > > >>> max_count = nb_desc; (power of 2) > > > >>> mask = max_count - 1; > > > >>> > > > >>> for (i = 0; I < n; i++) { > > > >>> submit_idx = rte_dma_copy(); > > > >>> } > > > >>> rc = rte_dma_completed(…, &completed_idx..); > > > >>> space_in_queue = mask - ((submit_idx – completed_idx) & mask); > > > >>> > > > >> > > > >> Unfortunately, space left in the device (as calculated by the app) > > > >> still can mean there is no space in the device :| > > > >> i.e its pmd dependent. > > > > > > > > I did not pay much attention to Jiayu's reply as I did not know what is > > > > DSA. > > > > Now I searched the DSA in ml, I could see the PMD patches. > > > > > > > > If it is PMD limitation then I am fine with the proposed API. > > > > > > > > @Richardson, Bruce @Laatz, Kevin @feng Since it is used fastpath, Can > > > > we move to fastpath handler and > > > > remove additional check in fastpath from common code like other APIs. > > > > > > +1 for move to fastpath. > > > > > > > Will move in next revision. > > Follow-up question on this. If it's a fastpath function then we would not > normally check for support from drivers. Therefore do we want to: > 1. make it a mandatory function > 2. add a feature capability flag > > Given that it's likely fairly easy for all drivers to implement, and it > makes it easier for apps to avoid having to check a feature flag for, I'd > tend towards option #1, but just would like consensus before I push any > more patches.
I think, if vhost using in that way then it needs to make it a mandatory function. > > /Bruce