Hi Shally,

Although we're close to agreement on this, I'm reconsidering.
I think the difficulty we've had finding the best wording highlights the 
confusion an app
developer will have in figuring out how to handle errors on enqueue. 
So I'm proposing to drop this - which was intended to allow some optimisation - 
and instead
propose a more robust approach, i.e. add this to the doc:

    Operation status after enqueue / dequeue
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Some of the above values may arise in the op after an
    ``rte_compressdev_enqueue_burst()``. If number ops enqueued < number ops 
requested then
    the app should check the op.status of nb_enqd+1. If status is
    RTE_COMP_OP_STATUS_NOT_PROCESSED, it likely indicates a full-queue case for 
a hardware device
    and a retry after dequeuing some ops is likely to be successful. If the op 
holds any other status, e.g.
    RTE_COMP_OP_STATUS_INVALID_ARGS, a retry with the same op is unlikely to be 
successful.
 

I know this adds an extra fork, so is less optimal, but once there's even a 
small chance that an error may occur on the enqueue, a robust application 
should probably check anyway.
What do you think?
If you agree, I'll send the doc update and a perf tool update to add the status 
check on the enqueue.

Btw - this doesn't stop PMDs from minimising those cases, just means they're 
not bound by the API to do it.

Fiona 

Reply via email to