On Fri, Sep 06, 2019 at 03:18:10PM +0200, Marcin Zapolski wrote: > Several DPDK internal structures are exposed to direct access by user > applications. This patch removes them from public API, and makes core DPDK > functions that use them non-inline. > > v2: > This patch set no longer makes internal DPDK functions non-inline. Instead > it splits the rte_eth_dev structure to private and public part and modifies > function arguments of rx and tx functions. This should bring less performance > impact, but at the cost of needing to modify every PMD to use new rx and tx > functions. > For testing purposes, the ixgbe and i40e drivers are modified to acommodate > for > the changes. > > Marcin Zapolski (3): > ethdev: hide key ethdev structures from public API > i40e: make driver compatible with changes in ethdev > ixgbe: make driver compatible with changes in ethdev > Thanks for testing this out Marcin. The performance impact seems lower alright. The amount of changes needed I still am not particularly happy about, so I'd like to propose a third option for consideration.
How about leaving the existing inline functions as they are, but also providing the uninline functions for backward compatibility, with a build-time switch to select between the two? Standard builds could use the uninline versions for API/ABI compatibility, while any builds which absolutely need the most performance can switch to using the inline versions at the cost of compatibility. We could even make the build-switch generic to indicate across all components a preference for absolute performance over compatibility. Regards, /Bruce