19/09/2017 09:33, Shahaf Shuler: > Tuesday, September 19, 2017 12:09 AM, Thomas Monjalon: > > > > > > It would be simpler, however am not sure invalid port is the only error to > > consider. Another possible error can be the PMD is not supporting this > > function. > > > On that case returning 0 is not good enough. The application cannot know > > why the offload is not set, is it because it is set wrong or the PMD just > > don't > > support this API (which leads me to my next point). > > > > We can skip error reporting on "get" functions and rely on "set" functions > > to > > return error if offload API is not supported or for other miscellaneous > > errors. > > It will complex the set function then. > Instead of using the return value to understand all offloads were set, the > application will need to provide another pointer for the function to > understand which offloads were actually set.
I think we must forbid setting offloads partially. If one setting is not possible, nothing should be done. I don't understand why it would complicate the "set" function. Anyway, we must report errors in "set" function. One more question is: do we want to return a mask of "accepted" offload by getting the mask as a pointer? > I understand this is nice to use the return value of the get without the need > of temporary variable, it will save some lines in the code. > But I think that good error reporting to make the application crystal clear > why the offloads on get are 0 wins. No strong opinion about error return in "get" function. It is probably reasonnable to distinguish offload value 0 and "get" function not implemented. > > > I can commit for mlx5 and mlx4 PMDs. I know other PMD maintainers plan > > to convert their PMDs as well. If we take this approach we must make sure > > they all move. > > > > We can try to get an agreement from more vendors at Dublin summit. > > If not, we can wait more than one release cycle for late support. > > Yes we can discuss on it in Dublin. Still I want to emphasize my concern: > There is no point in moving PMD to the new API if there is no application to > use it . Besides of user applications this refers also to testpmd and other > examples on dpdk tree (which I plan to convert on 18.02). > PMD maintainers may object to this conversion if their PMD still uses the old > offloads APIs. > > So can we have guarantee from Thomas/Ferruh that this series, as long it is > technically OK, will be accepted? Will we force all that object to change > their PMDs? > > If not, I think this is bad approach to put the API floating around ethdev > with no PMD to implement it. > > > > There is another possible API (API3): > > > 1. keep the per-port, per-queue configuration. > > > 2. add the get function for better error reporting and visibility for > > application. > > > 3. keep the current on the flight vlan offloading configuration as an > > exception. In case there will be a need to configure more offloads on the > > flight we can move to API2. > > > > > > With API1 I am obviously OK. > > > I agree API2 is more generic. > > > API3 is a nice compromise, if we don't want to force all PMD to convert. > > > > The question is: do we want to choose a compromise while breaking this > > API? > > Maybe compromise is not the right word. > > We are striving for the generic API2 which has all the full functionality and > generalize API1 by supporting on the fly configuration as well. > Maybe for user applications there is no such use-case. How many application > decides on the flight to suddenly change the crc strip or the scatter setting > ? > Moreover, how many PMDs will actually support such on the flight > configuration? > How easy will it be for application to work with the API for PMD which don't > support on the flight configuration? They will need to try, and if fail stop > the port and try again - in that sense there no much benefit for API2. > > Currently we have only the vlan offloads which can be set on the flight and > maybe it is more than enough, I don't know, am not familiar with enough > application to be sure. > > API3 propose to wait with this approach till we will have a proper use case > from users. If, as a community, we decide that configuring offloads on the fly is not a requirement, OK to not plan it in the API. If we decide to not do it now, we could change again the API later. Opinions?